mcp: add Capabilities fields to ServerOptions and ClientOptions (#713)
This allows users to configure default capabilities, disable defaults, or suppress listChanged notifications by setting ListChanged: false. Key changes: - Add ServerOptions.Capabilities and ClientOptions.Capabilities fields. - Merge user-provided capabilities with dynamically-added ones (tools, prompts, resources, sampling, elicitation). - Check ListChanged before sending list-changed notifications. - Deprecate HasPrompts, HasResources, HasTools on ServerOptions. - Remove unreleased ElicitationModes field from ClientOptions. - Add clone methods to capability structs using shallowClone helper. - Add synctest-based tests for notification behavior (go1.25). - Add TestClientCapabilitiesOverWire and TestServerCapabilitiesOverWire - Document the new Capabilities API in docs/ Updates #706
This commit is contained in:
parent
bae0929820
commit
3430e2242e
1 changed files with 1071 additions and 57 deletions
|
|
@ -35,3 +35,12 @@ v2.
|
|||
|
||||
**Workaround**: use `ClientCapabilities.RootsV2`, which aligns with the
|
||||
semantics of other capability fields.
|
||||
|
||||
- Default capabilities should have been empty. Instead, servers default to
|
||||
advertising `logging`, and clients default to advertising `roots` with
|
||||
`listChanged: true`. This is confusing because a nil `Capabilities` field
|
||||
does not mean "no capabilities".
|
||||
|
||||
**Workaround**: to advertise no capabilities, set
|
||||
`ServerOptions.Capabilities` or `ClientOptions.Capabilities` to an empty
|
||||
`&ServerCapabilities{}` or `&ClientCapabilities{}` respectively.
|
||||
|
|
|
|||
Loading…
Reference in a new issue