SEP 2084: Primitive Groups (Schema Changes)#2110
SEP 2084: Primitive Groups (Schema Changes)#2110chughtapan wants to merge 11 commits intomodelcontextprotocol:mainfrom
Conversation
Implement Groups to organize tools, prompts, resources, tasks, and groups into named collections. This enables: - Client-side filtering of primitives by group - Progressive disclosure for large sets of primitives - Access control boundaries at the group level Schema changes: - Add `groups` capability to ServerCapabilities - Add ListGroupsRequest, ListGroupsResult, Group interfaces - Add GroupListChangedNotification for list changes Documentation: - Add groups.mdx specification page - Update server overview to include Groups - Document io.modelcontextprotocol/groups _meta key Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add link to schema changes PR modelcontextprotocol#2110 - Reorder Alternatives Considered (Resources first) - Fix prettier formatting Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-authored-by: Cliff Hall <[email protected]>
| #### Group Names | ||
|
|
||
| TBD: Maybe similar to tool names? |
There was a problem hiding this comment.
This should be a separate PR to move the name rules to a separate section, so that all primitive names are governed by the same rules.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-authored-by: Cliff Hall <[email protected]>
Co-authored-by: Cliff Hall <[email protected]>
…eature/primitive-groups
… schema ts * Format schema.ts
| } | ||
| ``` | ||
|
|
||
| ## Primitive Group Membership |
There was a problem hiding this comment.
With this, I'm assuming that all the tool that belongs to a certain group will need to include the _meta key io.modelcontextprotocol/groups with all the group memberships that they belong to? Including all the "parent-group" as well?
There was a problem hiding this comment.
Tools, resources, resource templates, prompts, tasks, and groups themselves should include the groups they are an explicit direct member of. It is up to the client to decide how deep to go for displaying. In the reference implementation, the example client has a depth parameter that can be adjusted.
Adjusting Client Display Depth
The example server only defines groups to a depth of 2. The client will find the deepest group and default to that number for display depth.
Client Display Depth: 1
Only shows the contents of the group but not of any child groups it contains.
Enter a command or a list of groups to filter by: depth 1
Group display depth set to 1 (max: 2).
Enter a command or a list of groups to filter by: work
Groups:
- documents — Document drafting, editing, and summarization workflows.
- spreadsheets — Spreadsheet-like operations: create sheets, add rows, and do quick calculations.
- todos — Task capture and lightweight task management.
Client Display Depth: 2
Shows the contents of the group and of all child groups it contains.
Enter a command or a list of groups to filter by: d 2
Group display depth set to 2 (max: 2).
Enter a command or a list of groups to filter by: work
Groups:
- documents — Document drafting, editing, and summarization workflows.
- spreadsheets — Spreadsheet-like operations: create sheets, add rows, and do quick calculations.
- todos — Task capture and lightweight task management.
Tools:
- documents_create — Create a document draft.
- documents_summarize — Summarize a document (demo).
- spreadsheets_add_row — Add a row to a spreadsheet.
- spreadsheets_create — Create a new spreadsheet.
- todos_add — Add a todo item.
- todos_complete — Mark a todo item complete.
Resources:
- documents_overview — A short overview of document workflows.
- spreadsheets_overview — A short overview of spreadsheet structure and best practices.
- todos_overview — A short overview of task management basics.
Prompts:
- documents_write_outline — Create an outline for a document on a topic.
- spreadsheets_quick_analysis — Suggest a simple spreadsheet layout for tracking a metric.
- todos_plan_day — Turn a list of tasks into a simple day plan.
|
Closing, as SEP-2084 was rejected. |
Description
Schema and documentation implementation for SEP 2084 (Primitive Groups). This adds Groups as a new MCP primitive, enabling organization of tools, prompts, resources, tasks, and groups into named collections.
Changes
Schema (
schema/draft/schema.ts)groupscapability toServerCapabilitieswithlistChangednotification supportListGroupsRequestfor paginated group discoveryListGroupsResultandListGroupsResultResponseGroupListChangedNotificationfor group list change notificationsGroupinterface extendingBaseMetadataandIconsClientRequest,ServerNotification, andServerResultunion typesDocumentation
docs/specification/draft/server/groups.mdx- Full specification pagedocs/specification/draft/server/index.mdx- Add Groups to primitives overviewdocs/specification/draft/basic/index.mdx- Documentio.modelcontextprotocol/groupsreserved_metakeydocs/docs.json- Add Groups to sidebar navigationExamples
Group/basic-group.jsonGroup/group-with-nested-groups.jsonListGroupsRequest/list-groups-request.jsonListGroupsResult/groups-list-with-cursor.jsonListGroupsResultResponse/list-groups-result-response.jsonGroupListChangedNotification/groups-list-changed.jsonServerCapabilities/groups-minimum-baseline-support.jsonServerCapabilities/groups-list-changed-notifications.jsonRelated