Skip to content

Commit df5b24f

Browse files
chughtapanclaude
andcommitted
Add schema PR link and reorder alternatives
- Add link to schema changes PR modelcontextprotocol#2110 - Reorder Alternatives Considered (Resources first) - Fix prettier formatting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 8d93185 commit df5b24f

1 file changed

Lines changed: 4 additions & 7 deletions

File tree

seps/2084-primitive-groups.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,25 +201,22 @@ This specification proposal was selected for its ease of understanding since it
201201

202202
### Alternatives Considered
203203

204+
- **Groups as MCP Resources instead of new primitive:** A completely separate proposal where the group metadata is declared in MCP resources with a specific schema and mimeType, referenced by their URIs, e.g., `mcp://groups/{groupId}`. Servers MAY publish the group index at a URI which MUST be defined in the capabilities object during the server initialization. This proposal could reduce spec changes and implementation effort significantly, but it was not considered as intuitive.
205+
204206
- **Primitive's group list passed in a first class `groups` property:** A variation of the proposed specification, but the list of groups to which a primitive instance belongs would be presented by a `groups` property added to the top level of each primitive's schema.
205207
This idea was discarded because it could lead to backward compatibility issues. For instance, if a server returned a tool, resource, etc, with this property to an older client which validated it against a strict schema that did not contain this property, it would most likely cause an error.
206208
Since this proposal spans all primitives, such a compatibility failure would be unacceptable. Consequently, we settled on using a reserved metadata key to pass the primitive's group list.
207209

208-
209210
- **Primitive's group list as an array of Group instances not names:** A variation of the proposed specification, but the schema would reference the Groups definition instead of declaring a string (group name). This means that full Group instances would appear in the primitive's group list, significantly increasing the token count when passed to an LLM without modification. Also, beacuse groups can be hierarchical, every child of a given group would carry a duplicate of the parent instance. There was discussion of mitigating the duplication on the line using libraries that perform a marshalling on send/receive, replacing the parent with a pointer to a single copy of the parent instance. This would put an unnecessary burden on SDK developers for no clear benefit, when a client can easily look up a group by name in its cached `groups/list` result.
210211

211-
212-
- **Groups as MCP Resources instead of new primitive:** A completely separate proposal where the group metadata is declared in MCP resources with a specific schema and mimeType, referenced by their URIs, e.g., `mcp://groups/{groupId}`. Servers MAY publish the group index at a URI which MUST be defined in the capabilities object during the server initialization. This proposal could reduce spec changes and implementation effort significantly, but it was not considered as intuitive.
213-
214212
## Security Implications
215213

216214
None identified
217215

218216
## Reference Implementation
219217

220-
- Fully implemented Typescript SDK changes with unit tests.
221-
- Includes documented client and server examples.
222-
- Check out the [Draft PR](https://github.com/modelcontextprotocol/typescript-sdk/pull/1399) for details.
218+
- **Schema Changes:** [PR #2110](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2110)
219+
- **TypeScript SDK:** [PR #1399](https://github.com/modelcontextprotocol/typescript-sdk/pull/1399) - Fully implemented with unit tests and documented client/server examples.
223220

224221
The reference implementation's example client and server demonstrate how groups, tools, prompts, and resources can be grouped on the server, and the client can filter them by group. It manually demonstrates how an agent using the server could easily reduce the tokens placed into an LLM's context by only including the primitives in one or more groups rather than providing the full list.
225222

0 commit comments

Comments
 (0)