Skip to content

MCP upstream changes need Soma review #365

Description

@github-actions

rmcp has a newer published crate release. Soma currently pins 3.1.0 and crates.io now publishes 3.3.0.

Release Window

Version Published Yanked Links
3.1.1 2026-08-05T15:00:06.291121Z no crates.io release
3.1.2 2026-08-07T20:40:37.114936Z no crates.io release
3.1.3 2026-08-17T22:51:39.982744Z no crates.io release
3.1.4 2026-08-20T03:47:12.763637Z no crates.io release
3.2.0 2026-08-31T23:16:49.374902Z no crates.io release
3.3.0 2026-09-10T15:32:23.420168Z no crates.io release

MCP Schema Watch

Recent schema commits

  • c4c367f9f582 2026-07-27T14:20:44Z schema: fix 2025-11-25 NumberSchema min/max/default to number in generated JSON
  • 93671a3f2bac 2026-06-29T23:06:17Z build(deps-dev): bump prettier from 3.8.4 to 3.9.3 (#2987)
  • 357adac47ab2 2026-03-15T17:36:29Z schema: allow null for Task.ttl in generated JSON schema
  • bb676f3b8954 2026-01-26T23:37:36Z Merge pull request #2055 from halter73/categorize-new-schema
  • 528d6a15548d 2026-01-22T14:38:20Z fix: format schema.ts files

Potential schema impact in this repo

Static identifier matches from upstream changes. Treat this as an inspection shortlist, not a complete migration plan.

Local file Changed upstream terms referenced
ci/kache-key-probe/Cargo.toml byte, call, carries, check, here, key, must, name
config.toml API, HTTP, MCP, MUST, NOT, Only, See, Soma
docs/CARGO_GENERATE.md After, For, JSON, MCP, See, Soma, The, Use
docs/CLAUDE.md API, Claude, Examples, How, Instructions, LLM, MCP, Soma
docs/MCPORTER.md Error, HTTP, JSON, MCP, Resource, Schema, See, Server
docs/QUICKSTART.md API, Claude, Content, For, HTTP, JSON, MCP, See
docs/README.md API, For, JSON, MCP, Soma, The, These, They
docs/SCAFFOLD.md API, After, JSON, MCP, Soma, The, They, This
docs/SCRIPTS.md API, After, Allow, MCP, Only, See, Soma, The
docs/SERVICE_SURFACE_SUGGESTIONS.md API, HTTP, MCP, Soma, Suggested, The, Use, ability
docs/SYSTEMD.md API, After, HTTP, JSON, Logging, MCP, See, Soma
docs/TRACE_CONTEXT.md API, Claude, Client, Common, Context, For, HTTP, Logging
docs/WINDOWS-RUNNER.md After, For, HTTP, MCP, Request, Soma, The, This
docs/XTASKS.md API, Default, Defaults, JSON, MCP, Schema, See, Soma
docs/contracts/README.md API, Examples, HTTP, JSON, MCP, Schema, The, URI
docs/contracts/drop-in-provider-layout.md Any, Content, Each, MCP, MIME, Prompt, Prompts, Resource
docs/contracts/examples/README.md API, MCP, The, These, They, Use, application, case
docs/contracts/examples/provider-manifests/ai-sdk.valid.json API, Tool, Tools, able, additional, category, description, enable
docs/contracts/examples/provider-manifests/denied-capability.invalid.json ability, able, access, capabilities, capability, description, enable, file
docs/contracts/examples/provider-manifests/duplicate-cli-alias.invalid.json able, description, enable, input, name, provide, provider, same
docs/contracts/examples/provider-manifests/duplicate-mcp-primitive.invalid.json data, description, example, input, name, primitive, prompt, prompts
docs/contracts/examples/provider-manifests/duplicate-rest-path.invalid.json able, description, enable, input, method, name, provide, provider
docs/contracts/examples/provider-manifests/generated-doc-prompt-injection.invalid.json description, doc, input, instructions, name, previous, provide, provider
docs/contracts/examples/provider-manifests/mcp-rest-opt-in.valid.json MCP, able, description, enable, explicit, explicitly, input, method
docs/contracts/examples/provider-manifests/mcp.valid.json MCP, able, additional, allow, argument, arguments, description, enable
15 more files
MCP schema diff
--- docs/references/mcp/schema/2025-11-25/schema.ts
+++ https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2025-11-25/schema.ts
@@ line 9 @@
-  | JSONRPCRequest
+  JSONRPCRequest | JSONRPCNotification | JSONRPCResponse;
@@ line 10 @@
-  | JSONRPCNotification
+
@@ line 11 @@
-  | JSONRPCResponse;
+/** @internal */
@@ line 12 @@
-
+export const LATEST_PROTOCOL_VERSION = "2025-11-25";
@@ line 14 @@
-export const LATEST_PROTOCOL_VERSION = "2025-11-25";
+export const JSONRPC_VERSION = "2.0";
@@ line 15 @@
-/** @internal */
+
@@ line 16 @@
-export const JSONRPC_VERSION = "2.0";
+/**
@@ line 17 @@
-
+ * A progress token, used to associate progress notifications with the original request.
@@ line 18 @@
-/**
+ *
@@ line 19 @@
- * A progress token, used to associate progress notifications with the original request.
+ * @category Common Types
@@ line 20 @@
- *
+ */
@@ line 21 @@
- * @category Common Types
+export type ProgressToken = string | number;
@@ line 22 @@
- */
+
@@ line 23 @@
-export type ProgressToken = string | number;
+/**
@@ line 24 @@
-
+ * An opaque token used to represent a cursor for pagination.
@@ line 25 @@
-/**
+ *
@@ line 26 @@
- * An opaque token used to represent a cursor for pagination.
+ * @category Common Types
@@ line 27 @@
- *
+ */
@@ line 28 @@
- * @category Common Types
+export type Cursor = string;
@@ line 29 @@
- */
+
@@ line 30 @@
-export type Cursor = string;
+/**
@@ line 31 @@
-
+ * Common params for any task-augmented request.
@@ line 32 @@
-/**
+ *
@@ line 33 @@
- * Common params for any task-augmented request.
+ * @internal
@@ line 34 @@
- *
+ */
@@ line 35 @@
- * @internal
+export interface TaskAugmentedRequestParams extends RequestParams {
@@ line 36 @@
- */
+  /**
@@ line 37 @@
-export interface TaskAugmentedRequestParams extends RequestParams {
+   * If specified, the caller is requesting task-augmented execution for this request.
@@ line 38 @@
-  /**
+   * The request will return a CreateTaskResult immediately, and the actual result can be
@@ line 39 @@
-   * If specified, the caller is requesting task-augmented execution for this request.
+   * retrieved later via tasks/result.
@@ line 40 @@
-   * The request will return a CreateTaskResult immediately, and the actual result can be
+   *
@@ line 41 @@
-   * retrieved later via tasks/result.
+   * Task augmentation is subject to capability negotiation - receivers MUST declare support
@@ line 42 @@
-   *
+   * for task augmentation of specific request types in their capabilities.
@@ line 43 @@
-   * Task augmentation is subject to capability negotiation - receivers MUST declare support
+   */
@@ line 44 @@
-   * for task augmentation of specific request types in their capabilities.
+  task?: TaskMetadata;
@@ line 45 @@
-   */
+}
@@ line 46 @@
-  task?: TaskMetadata;
+/**
@@ line 47 @@
-}
+ * Common params for any request.
@@ line 48 @@
-/**
+ *
@@ line 49 @@
- * Common params for any request.
+ * @internal
@@ line 50 @@
- *
+ */
@@ line 51 @@
- * @internal
+export interface RequestParams {
@@ line 52 @@
- */
+  /**
@@ line 53 @@
-export interface RequestParams {
+   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
@@ line 54 @@
-  /**
+   */
@@ line 55 @@
-   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
+  _meta?: {
@@ line 56 @@
-   */
+    /**
@@ line 57 @@
-  _meta?: {
+     * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
@@ line 58 @@
-    /**
+     */
@@ line 59 @@
-     * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
+    progressToken?: ProgressToken;
@@ line 60 @@
-     */
+    [key: string]: unknown;
@@ line 61 @@
-    progressToken?: ProgressToken;
+  };
@@ line 62 @@
-    [key: string]: unknown;
+}
@@ line 63 @@
-  };
+
@@ line 64 @@
-}
+/** @internal */
@@ line 65 @@
-
+export interface Request {
@@ line 66 @@
-/** @internal */
+  method: string;
@@ line 67 @@
-export interface Request {
+  // Allow unofficial extensions of `Request.params` without impacting `RequestParams`.
@@ line 68 @@
-  method: string;
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ line 69 @@
-  // Allow unofficial extensions of `Request.params` without impacting `RequestParams`.
+  params?: { [key: string]: any };
@@ line 70 @@
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+}
@@ line 71 @@
-  params?: { [key: string]: any };
+
@@ line 72 @@
-}
+/** @internal */
@@ line 73 @@
-
+export interface NotificationParams {
@@ line 74 @@
-/** @internal */
+  /**
@@ line 75 @@
-export interface NotificationParams {
+   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
@@ line 76 @@
-  /**
+   */
@@ line 77 @@
-   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
+  _meta?: { [key: string]: unknown };
@@ line 78 @@
-   */
+}
@@ line 79 @@
-  _meta?: { [key: string]: unknown };
+
@@ line 80 @@
-}
+/** @internal */
@@ line 81 @@
-
+export interface Notification {
@@ line 82 @@
-/** @internal */
+  method: string;
@@ line 83 @@
-export interface Notification {
+  // Allow unofficial extensions of `Notification.params` without impacting `NotificationParams`.
@@ line 84 @@
-  method: string;
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ line 85 @@
-  // Allow unofficial extensions of `Notification.params` without impacting `NotificationParams`.
+  params?: { [key: string]: any };
@@ line 86 @@
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+}
@@ line 87 @@
-  params?: { [key: string]: any };
+
@@ line 88 @@
-}
+/**
@@ line 89 @@
-
+ * @category Common Types
@@ line 90 @@
-/**
+ */
@@ line 91 @@
- * @category Common Types
+export interface Result {
@@ line 92 @@
- */
+  /**
@@ line 93 @@
-export interface Result {
+   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
@@ line 94 @@
-  /**
+   */
@@ line 95 @@
-   * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
+  _meta?: { [key: string]: unknown };
@@ line 96 @@
-   */
+  [key: string]: unknown;
@@ line 97 @@
-  _meta?: { [key: string]: unknown };
+}
@@ line 98 @@
-  [key: string]: unknown;
+
@@ line 99 @@
-}
+/**
@@ line 100 @@
-
+ * @category Common Types
@@ line 101 @@
-/**
+ */
@@ line 102 @@
- * @category Common Types
+export interface Error {
@@ line 103 @@
- */
+  /**
@@ line 104 @@
-export interface Error {
+   * The error type that occurred.
@@ line 105 @@
-  /**
+   */
@@ line 106 @@
-   * The error type that occurred.
+  code: number;
@@ line 107 @@
-   */
+  /**
@@ line 108 @@
-  code: number;
+   * A short description of the error. The message SHOULD be limited to a concise single sentence.
@@ line 109 @@
-  /**
+   */
@@ line 110 @@
-   * A short description of the error. The message SHOULD be limited to a concise single sentence.
+  message: string;
@@ line 111 @@
-   */
+  /**
@@ line 112 @@
-  message: string;
+   * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.).
@@ line 113 @@
-  /**
+   */
@@ line 114 @@
-   * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.).
+  data?: unknown;
@@ line 115 @@
-   */
+}
@@ line 116 @@
-  data?: unknown;
+
@@ line 117 @@
-}
+/**
@@ line 118 @@
-
+ * A uniquely identifying ID for a request in JSON-RPC.
@@ line 119 @@
-/**
+ *
@@ line 120 @@
- * A uniquely identifying ID for a request in JSON-RPC.
+ * @category Common Types
@@ line 121 @@
- *
+ */
@@ line 122 @@
- * @category Common Types
+export type RequestId = string | number;
@@ line 123 @@
- */
+
@@ line 124 @@
-export type RequestId = string | number;
+/**
@@ line 125 @@
-
+ * A request that expects a response.
@@ line 126 @@
-/**
+ *
@@ line 127 @@
- * A request that expects a response.
+ * @category JSON-RPC
@@ line 128 @@
- *
+ */
@@ line 129 @@
- * @category JSON-RPC
+export interface JSONRPCRequest extends Request {
@@ line 130 @@
- */
+  jsonrpc: typeof JSONRPC_VERSION;
@@ line 131 @@
-export interface JSONRPCRequest extends Request {
+  id: RequestId;
@@ line 132 @@
-  jsonrpc: typeof JSONRPC_VERSION;
+}
@@ line 133 @@
-  id: RequestId;
+
@@ line 134 @@
-}
+/**
@@ line 135 @@
-
+ * A notification which does not expect a response.
@@ line 136 @@
-/**
+ *
@@ line 137 @@
- * A notification which does not expect a response.
+ * @category JSON-RPC
@@ line 138 @@
- *
+ */
@@ line 139 @@
- * @category JSON-RPC
+export interface JSONRPCNotification extends Notification {
@@ line 140 @@
- */
+  jsonrpc: typeof JSONRPC_VERSION;
@@ line 141 @@
-export interface JSONRPCNotification extends Notification {
+}
@@ line 142 @@
-  jsonrpc: typeof JSONRPC_VERSION;
+
@@ line 143 @@
-}
+/**
@@ line 144 @@
-
+ * A successful (non-error) response to a request.
@@ line 145 @@
-/**
+ *
@@ line 146 @@
- * A successful (non-error) response to a request.
+ * @category JSON-RPC
@@ line 147 @@
- *
+ */
@@ line 148 @@
- * @category JSON-RPC
+export interface JSONRPCResultResponse {
@@ line 149 @@
- */
+  jsonrpc: typeof JSONRPC_VERSION;
@@ line 150 @@
-export interface JSONRPCResultResponse {
+  id: RequestId;
@@ line 151 @@
-  jsonrpc: typeof JSONRPC_VERSION;
+  result: Result;
@@ line 152 @@
-  id: RequestId;
+}
@@ line 153 @@
-  result: Result;
+
@@ line 154 @@
-}
+/**
@@ line 155 @@
-
+ * A response to a request that indicates an error occurred.
@@ line 156 @@
-/**
+ *
@@ line 157 @@
- * A response to a request that indicates an error occurred.
+ * @category JSON-RPC
@@ line 158 @@
- *
+ */
@@ line 159 @@
- * @category JSON-RPC
+export interface JSONRPCErrorResponse {
@@ line 160 @@
- */
+  jsonrpc: typeof JSONRPC_VERSION;
@@ line 161 @@
-export interface JSONRPCErrorResponse {
+  id?: RequestId;
@@ line 162 @@
-  jsonrpc: typeof JSONRPC_VERSION;
+  error: Error;
@@ line 163 @@
-  id?: RequestId;
+}
@@ line 164 @@
-  error: Error;
+
@@ line 165 @@
-}
+/**
@@ line 166 @@
-
+ * A response to a request, containing either the result or error.
@@ line 167 @@
-/**
+ *
@@ line 168 @@
- * A response to a request, containing either the result or error.
+ * @category JSON-RPC
@@ line 169 @@
- *
+ */
@@ line 170 @@
- * @category JSON-RPC
+export type JSONRPCResponse = JSONRPCResultResponse | JSONRPCErrorResponse;
@@ line 171 @@
- */
+
@@ line 172 @@
-export type JSONRPCResponse = JSONRPCResultResponse | JSONRPCErrorResponse;
+// Standard JSON-RPC error codes
@@ line 173 @@
-
+export const PARSE_ERROR = -32700;
@@ line 174 @@
-// Standard JSON-RPC error codes
+export const INVALID_REQUEST = -32600;
@@ line 175 @@
-export const PARSE_ERROR = -32700;
+export const METHOD_NOT_FOUND = -32601;
@@ line 176 @@
-export const INVALID_REQUEST = -32600;
+export const INVALID_PARAMS = -32602;
@@ line 177 @@
-export const METHOD_NOT_FOUND = -32601;
+export const INTERNAL_ERROR = -32603;
@@ line 178 @@
-export const INVALID_PARAMS = -32602;
+
@@ line 179 @@
-export const INTERNAL_ERROR = -32603;
+// Implementation-specific JSON-RPC error codes [-32000, -32099]
@@ line 180 @@
-
+/** @internal */
@@ line 181 @@
-// Implementation-specific JSON-RPC error codes [-32000, -32099]
+export const URL_ELICITATION_REQUIRED = -32042;
@@ line 182 @@
-/** @internal */
+
@@ line 183 @@
-export const URL_ELICITATION_REQUIRED = -32042;
+/**
@@ line 184 @@
-
+ * An error response that indicates that the server requires the client to provide additional information via an elicitation request.
@@ line 185 @@
-/**
+ *
@@ line 186 @@
- * An error response that indicates that the server requires the client to provide additional information via an elicitation request.
+ * @internal
@@ line 187 @@
- *
+ */
@@ line 188 @@
- * @internal
+export interface URLElicitationRequiredError extends Omit<
@@ line 189 @@
- */
+  JSONRPCErrorResponse,
@@ line 190 @@
-export interface URLElicitationRequiredError extends Omit<
+  "error"
@@ line 191 @@
-  JSONRPCErrorResponse,
+> {
@@ line 192 @@
-  "error"
+  error: Error & {
@@ line 193 @@
-> {
+    code: typeof URL_ELICITATION_REQUIRED;
@@ line 194 @@
-  error: Error & {
+    data: {
@@ line 195 @@
-    code: typeof URL_ELICITATION_REQUIRED;
+      elicitations: ElicitRequestURLParams[];
@@ line 196 @@
-    data: {
+      [key: string]: unknown;
@@ line 197 @@
-      elicitations: ElicitRequestURLParams[];
+    };
@@ line 198 @@
-      [key: string]: unknown;
+  };
@@ line 199 @@
-    };
+}
@@ line 200 @@
-  };
+
@@ line 201 @@
-}
+/* Empty result */
@@ line 202 @@
-
+/**
@@ line 203 @@
-/* Empty result */
+ * A response that indicates success but carries no data.
@@ line 204 @@
-/**
+ *
@@ line 205 @@
- * A response that indicates success but carries no data.
+ * @category Common Types
@@ line 206 @@
- *
+ */
@@ line 207 @@
- * @category Common Types
+export type EmptyResult = Result;
@@ line 208 @@
- */
+
@@ line 209 @@
-export type EmptyResult = Result;
+/* Cancellation */
@@ line 210 @@
-
+/**
@@ line 211 @@
-/* Cancellation */
+ * Parameters for a `notifications/cancelled` notification.
@@ line 212 @@
-/**
+ *
@@ line 213 @@
- * Parameters for a `notifications/cancelled` notification.
+ * @category `notifications/cancelled`
@@ line 214 @@
- *
+ */
@@ line 215 @@
- * @category `notifications/cancelled`
+export interface CancelledNotificationParams extends NotificationParams {
@@ line 216 @@
- */
+  /**
@@ line 217 @@
-export interface CancelledNotificationParams extends NotificationParams {
+   * The ID of the request to cancel.
@@ line 218 @@
-  /**
+   *
@@ line 219 @@
-   * The ID of the request to cancel.
+   * This MUST correspond to the ID of a request previously issued in the same direction.
@@ line 220 @@
-   *
+   * This MUST be provided for cancelling non-task requests.
@@ line 221 @@
-   * This MUST correspond to the ID of a request previously issued in the same direction.
+   * This MUST NOT be used for cancelling tasks (use the `tasks/cancel` request instead).
@@ line 222 @@
-   * This MUST be provided for cancelling non-task requests.
+   */
@@ line 223 @@
-   * This MUST NOT be used for cancelling tasks (use the `tasks/cancel` request instead).
+  requestId?: RequestId;
@@ line 224 @@
-   */
+
@@ line 225 @@
-  requestId?: RequestId;
+  /**
@@ line 226 @@
-
+   * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user.
@@ line 227 @@
-  /**
+   */
@@ line 228 @@
-   * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user.
+  reason?: string;
@@ line 229 @@
-   */
+}
@@ line 230 @@
-  reason?: string;
+
@@ line 231 @@
-}
+/**
@@ line 232 @@
-
+ * This notification can be sent by either side to indicate that it is cancelling a previously-issued request.
@@ line 233 @@
-/**
+ *
@@ line 234 @@
- * This notification can be sent by either side to indicate that it is cancelling a previously-issued request.
+ * The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.
@@ line 236 @@
- * The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.
+ * This notification indicates that the result will be unused, so any associated processing SHOULD cease.
@@ line 238 @@
- * This notification indicates that the result will be unused, so any associated processing SHOULD cease.
+ * A client MUST NOT attempt to cancel its `initialize` request.
@@ line 240 @@
- * A client MUST NOT attempt to cancel its `initialize` request.
+ * For task cancellation, use the `tasks/cancel` request instead of this notification.
@@ line 242 @@
- * For task cancellation, use the `tasks/cancel` request instead of this notification.
+ * @category `notifications/cancelled`
@@ line 243 @@
- *
+ */
@@ line 244 @@
- * @category `notifications/cancelled`
+export interface CancelledNotification extends JSONRPCNotification {
@@ line 245 @@
- */
+  method: "notifications/cancelled";
@@ line 246 @@
-export interface CancelledNotification extends JSONRPCNotification {
+  params: CancelledNotificationParams;
@@ line 247 @@
-  method: "notifications/cancelled";
+}
@@ line 248 @@
-  params: CancelledNotificationParams;
+
@@ line 249 @@
-}
+/* Initialization */
@@ line 250 @@
-
+/**
@@ line 251 @@
-/* Initialization */
+ * Parameters for an `initialize` request.
@@ line 252 @@
-/**
+ *
@@ line 253 @@
- * Parameters for an `initialize` request.
+ * @category `initialize`
@@ line 254 @@
- *
+ */
@@ line 255 @@
- * @category `initialize`
+export interface InitializeRequestParams extends RequestParams {
@@ line 256 @@
- */
+  /**
@@ line 257 @@
-export interface InitializeRequestParams extends RequestParams {
+   * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well.
@@ line 258 @@
-  /**
+   */
@@ line 259 @@
-   * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well.
+  protocolVersion: string;
@@ line 260 @@
-   */
+  capabilities: ClientCapabilities;
@@ line 261 @@
-  protocolVersion: string;
+  clientInfo: Implementation;
@@ line 262 @@
-  capabilities: ClientCapabilities;
+}
@@ line 263 @@
-  clientInfo: Implementation;
+
@@ line 264 @@
-}
+/**
@@ line 265 @@
-
+ * This request is sent from the client to the server when it first connects, asking it to begin initialization.
@@ line 266 @@
-/**
+ *
@@ line 267 @@
- * This request is sent from the client to the server when it first connects, asking it to begin initialization.
+ * @category `initialize`
@@ line 268 @@
- *
+ */
@@ line 269 @@
- * @category `initialize`
+export interface InitializeRequest extends JSONRPCRequest {
@@ line 270 @@
- */
+  method: "initialize";
@@ line 271 @@
-export interface InitializeRequest extends JSONRPCRequest {
+  params: InitializeRequestParams;
@@ line 272 @@
-  method: "initialize";
+}
@@ line 273 @@
-  params: InitializeRequestParams;
+
@@ line 274 @@
-}
+/**
@@ line 275 @@
-
+ * After receiving an initialize request from the client, the server sends this response.
@@ line 276 @@
-/**
+ *
@@ line 277 @@
- * After receiving an initialize request from the client, the server sends this response.
+ * @category `initialize`
@@ line 278 @@
- *
+ */
@@ line 279 @@
- * @category `initialize`
+export interface InitializeResult extends Result {
@@ line 280 @@
- */
+  /**
@@ line 281 @@
-export interface InitializeResult extends Result {
+   * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect.
@@ line 282 @@
-  /**
+   */
@@ line 283 @@
-   * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect.
+  protocolVersion: string;
@@ line 284 @@
-   */
+  capabilities: ServerCapabilities;
@@ line 285 @@
-  protocolVersion: string;
+  serverInfo: Implementation;
@@ line 286 @@
-  capabilities: ServerCapabilities;
+
@@ line 287 @@
-  serverInfo: Implementation;
+  /**
@@ line 288 @@
-
+   * Instructions describing how to use the server and its features.
@@ line 289 @@
-  /**
+   *
@@ line 290 @@
-   * Instructions describing how to use the server and its features.
+   * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a "hint" to the model. For example, this information MAY be added to the system prompt.
@@ line 291 @@
-   *
+   */
@@ line 292 @@
-   * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a "hint" to the model. For example, this information MAY be added to the system prompt.
+  instructions?: string;
@@ line 293 @@
-   */
+}
@@ line 294 @@
-  instructions?: string;
+
@@ line 295 @@
-}
+/**
@@ line 296 @@
-
+ * This notification is sent from the client to the server after initialization has finished.
@@ line 297 @@
-/**
+ *
@@ line 298 @@
- * This notification is sent from the client to the server after initialization has finished.
+ * @category `notifications/initialized`
@@ line 299 @@
- *
+ */
@@ line 300 @@
- * @category `notifications/initialized`
+export interface InitializedNotification extends JSONRPCNotification {
@@ line 301 @@
- */
+  method: "notifications/initialized";
@@ line 302 @@
-export interface InitializedNotification extends JSONRPCNotification {
+  params?: NotificationParams;
@@ line 303 @@
-  method: "notifications/initialized";
+}
@@ line 304 @@
-  params?: NotificationParams;
+
@@ line 305 @@
-}
+/**
@@ line 306 @@
-
+ * Capabilities a client may support. Known capabilities are defined here, in this schema, but this is not a closed set: any client can define its own, additional capabilities.
@@ line 307 @@
-/**
+ *
@@ line 308 @@
- * Capabilities a client may support. Known capabilities are defined here, in this schema, but this is not a closed set: any client can define its own, additional capabilities.
+ * @category `initialize`
@@ line 309 @@
- *
+ */
@@ line 310 @@
- * @category `initialize`
+export interface ClientCapabilities {
@@ line 311 @@
- */
+  /**
@@ line 312 @@
-export interface ClientCapabilities {
+   * Experimental, non-standard capabilities that the client supports.
@@ line 313 @@
-  /**
+   */
@@ line 314 @@
-   * Experimental, non-standard capabilities that the client supports.
+  experimental?: { [key: string]: object };
@@ line 315 @@
-   */
+  /**
@@ line 316 @@
-  experimental?: { [key: string]: object };
+   * Present if the client supports listing roots.
@@ line 317 @@
-  /**
+   */
@@ line 318 @@
-   * Present if the client supports listing roots.
+  roots?: {
@@ line 319 @@
-   */
+    /**
@@ line 320 @@
-  roots?: {
+     * Whether the client supports notifications for changes to the roots list.
@@ line 321 @@
-    /**
+     */
@@ line 322 @@
-     * Whether the client supports notifications for changes to the roots list.
+    listChanged?: boolean;
@@ line 323 @@
-     */
+  };
@@ line 324 @@
-    listChanged?: boolean;
+  /**
@@ line 325 @@
-  };
+   * Present if the client supports sampling from an LLM.
@@ line 326 @@
-  /**
+   */
@@ line 327 @@
-   * Present if the client supports sampling from an LLM.
+  sampling?: {
@@ line 328 @@
-   */
+    /**
@@ line 329 @@
-  sampling?: {
+     * Whether the client supports context inclusion via includeContext parameter.
@@ line 330 @@
-    /**
+     * If not declared, servers SHOULD only use `includeContext: "none"` (or omit it).
@@ line 331 @@
-     * Whether the client supports context inclusion via includeContext parameter.
+     */
@@ line 332 @@
-     * If not declared, servers SHOULD only use `includeContext: "none"` (or omit it).
+    context?: object;
@@ line 333 @@
-     */
+    /**
@@ line 334 @@
-    context?: object;
+     * Whether the client supports tool use via tools and toolChoice parameters.
@@ line 335 @@
-    /**
+     */
@@ line 336 @@
-     * Whether the client supports tool use via tools and toolChoice parameters.
+    tools?: object;
@@ line 337 @@
-     */
+  };
@@ line 338 @@
-    tools?: object;
+  /**
@@ line 339 @@
-  };
+   * Present if the client supports elicitation from the server.
@@ line 340 @@
-  /**
+   */
@@ line 341 @@
-   * Present if the client supports elicitation from the server.
+  elicitation?: { form?: object; url?: object };
@@ line 342 @@
-   */
+
@@ line 343 @@
-  elicitation?: { form?: object; url?: object };
+  /**
@@ line 344 @@
-
+   * Present if the client supports task-augmented requests.
@@ line 345 @@
-  /**
+   */
@@ line 346 @@
-   * Present if the client supports task-augmented requests.
+  tasks?: {
@@ line 347 @@
-   */
+    /**
@@ line 348 @@
-  tasks?: {
+     * Whether this client supports tasks/list.
@@ line 349 @@
-    /**
+     */
@@ line 350 @@
-     * Whether this client supports tasks/list.
+    list?: object;
@@ line 351 @@
-     */
+    /**
@@ line 352 @@
-    list?: object;
+     * Whether this client supports tasks/cancel.
@@ line 353 @@
-    /**
+     */
@@ line 354 @@
-     * Whether this client supports tasks/cancel.
+    cancel?: object;
@@ line 355 @@
-     */
+    /**
@@ line 356 @@
-    cancel?: object;
+     * Specifies which request types can be augmented with tasks.
@@ line 357 @@
-    /**
+     */
@@ line 358 @@
-     * Specifies which request types can be augmented with tasks.
+    requests?: {
@@ line 359 @@
-     */
+      /**
@@ line 360 @@
-    requests?: {
+       * Task support for sampling-related requests.
@@ line 361 @@
-      /**
+       */
@@ line 362 @@
-       * Task support for sampling-related requests.
+      sampling?: {
@@ line 363 @@
-       */
+        /**
@@ line 364 @@
-      sampling?: {
+         * Whether the client supports task-augmented sampling/createMessage requests.
@@ line 365 @@
-        /**
+         */
@@ line 366 @@
-         * Whether the client supports task-augmented sampling/createMessage requests.
+        createMessage?: object;
@@ line 367 @@
-         */
+      };
@@ line 368 @@
-        createMessage?: object;
+      /**
@@ line 369 @@
-      };
+       * Task support for elicitation-related requests.
@@ line 370 @@
-      /**
+       */
@@ line 371 @@
-       * Task support for elicitation-related requests.
+      elicitation?: {
@@ line 372 @@
-       */
+        /**
@@ line 373 @@
-      elicitation?: {
+         * Whether the client supports task-augmented elicitation/create requests.
@@ line 374 @@
-        /**
+         */
@@ line 375 @@
-         * Whether the client supports task-augmented elicitation/create requests.
+        create?: object;
@@ line 376 @@
-         */
+      };
@@ line 377 @@
-        create?: object;
+    };
@@ line 378 @@
-      };
+  };
@@ line 379 @@
-    };
+}
@@ line 380 @@
-  };
+
@@ line 381 @@
-}
+/**
@@ line 382 @@
-
+ * Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.
@@ line 383 @@
-/**
+ *
@@ line 384 @@
- * Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.
+ * @category `initialize`
@@ line 385 @@
- *
+ */
@@ line 386 @@
- * @category `initialize`
+export interface ServerCapabilities {
@@ line 387 @@
- */
+  /**
@@ line 388 @@
-export interface ServerCapabilities {
+   * Experimental, non-standard capabilities that the server supports.
@@ line 389 @@
-  /**
+   */
@@ line 390 @@
-   * Experimental, non-standard capabilities that the server supports.
+  experimental?: { [key: string]: object };
@@ line 391 @@
-   */
+  /**
@@ line 392 @@
-  experimental?: { [key: string]: object };
+   * Present if the server supports sending log messages to the client.
@@ line 393 @@
-  /**
+   */
@@ line 394 @@
-   * Present if the server supports sending log messages to the client.
+  logging?: object;
@@ line 395 @@
-   */
+  /**
@@ line 396 @@
-  logging?: object;
+   * Present if the server supports argument autocompletion suggestions.
@@ line 397 @@
-  /**
+   */
@@ line 398 @@
-   * Present if the server supports argument autocompletion suggestions.
+  completions?: object;
@@ line 399 @@
-   */
+  /**
@@ line 400 @@
-  completions?: object;
+   * Present if the server offers any prompt templates.
@@ line 401 @@
-  /**
+   */
@@ line 402 @@
-   * Present if the server offers any prompt templates.
+  prompts?: {
@@ line 403 @@
-   */
+    /**
@@ line 404 @@
-  prompts?: {
+     * Whether this server supports notifications for changes to the prompt list.
@@ line 405 @@
-    /**
+     */
@@ line 406 @@
-     * Whether this server supports notifications for changes to the prompt list.
+    listChanged?: boolean;
@@ line 407 @@
-     */
+  };
@@ line 408 @@
-    listChanged?: boolean;
+  /**
@@ line 409 @@
-  };
+   * Present if the server offers any resources to read.
@@ line 410 @@
-  /**
+   */
@@ line 411 @@
-   * Present if the server offers any resources to read.
+  resources?: {
@@ line 412 @@
-   */
+    /**
@@ line 413 @@
-  resources?: {
+     * Whether this server supports subscribing to resource updates.
@@ line 414 @@
-    /**
+     */
@@ line 415 @@
-     * Whether this server supports subscribing to resource updates.
+    subscribe?: boolean;
@@ line 416 @@
-     */
+    /**
@@ line 417 @@
-    subscribe?: boolean;
+     * Whether this server supports notifications for changes to the resource list.
@@ line 418 @@
-    /**
+     */
@@ line 419 @@
-     * Whether this server supports notifications for changes to the resource list.
+    listChanged?: boolean;
@@ line 420 @@
-     */
+  };
@@ line 421 @@
-    listChanged?: boolean;
+  /**
@@ line 422 @@
-  };
+   * Present if the server offers any tools to call.
@@ line 423 @@
-  /**
+   */
@@ line 424 @@
-   * Present if the server offers any tools to call.
+  tools?: {
@@ line 425 @@
-   */
+    /**
@@ line 426 @@
-  to
... diff truncated ...

MCP Conformance Watch

Latest commit: feat(authorization): send the RFC 8707 resource parameter (#466)

New conformance commits

Changed conformance files

File Status +/- Changes
.claude/skills/mcp-sdk-tier-audit/README.md modified +31 / -94 125
.claude/skills/mcp-sdk-tier-audit/SKILL.md modified +28 / -5 33
.github/CODEOWNERS added +3 / -0 3
.prettierignore modified +4 / -3 7
AGENTS.md modified +1 / -0 1
README.md modified +208 / -14 222
examples/clients/typescript/auth-test-dpop-bearer.ts added +21 / -0 21
examples/clients/typescript/auth-test-dpop-no-as-nonce.ts added +22 / -0 22
examples/clients/typescript/auth-test-dpop-no-nonce.ts added +25 / -0 25
examples/clients/typescript/auth-test-dpop-no-rs-nonce.ts added +22 / -0 22
examples/clients/typescript/auth-test-dpop-no-token-proof.ts added +27 / -0 27
examples/clients/typescript/auth-test-dpop-replay.ts added +21 / -0 21
examples/clients/typescript/auth-test-dpop.ts added +20 / -0 20
examples/clients/typescript/auth-test-inert.ts added +22 / -0 22
examples/clients/typescript/auth-test-resource-slash.ts added +73 / -0 73
examples/clients/typescript/auth-test-wif-expired-assertion.ts added +15 / -0 15
examples/clients/typescript/auth-test-wif-grant-fallback.ts added +15 / -0 15
examples/clients/typescript/auth-test-wif-no-assertion.ts added +15 / -0 15
examples/clients/typescript/auth-test-wif-retry.ts added +15 / -0 15
examples/clients/typescript/auth-test-wif-scope-rejected.ts added +15 / -0 15
138 more files

Potential conformance impact in this repo

Static identifier matches from upstream changes. Treat this as an inspection shortlist, not a complete migration plan.

Local file Changed upstream terms referenced
ci/kache-key-probe/Cargo.toml FROZEN, Its, bin, built, byte, call, carries, check
config.toml API, All, Bearer, CLI, HTTP, Host, JWT, JWTs
docs/CARGO_GENERATE.md After, CLI, For, Instead, JSON, MCP, Run, See
docs/CLAUDE.md API, Accept, Accepted, Both, CLI, Canonical, Claude, Code
docs/MCPORTER.md Authorization, Bad, Bearer, CLI, Error, FAIL, Generate, HTTP
docs/QUICKSTART.md AGENTS, API, Accept, All, Authorization, Bearer, CLI, Call
docs/README.md AGENTS, API, Accept, Accepted, Before, Check, Draft, Extract
docs/SCAFFOLD.md AGENTS, API, After, Before, CLI, Generate, JSON, Keep
docs/SCRIPTS.md API, ASCII, After, All, Allow, Call, Called, Keep
docs/SERVICE_SURFACE_SUGGESTIONS.md API, CLI, GET, HTTP, Keep, MCP, POST, SDK
docs/SYSTEMD.md API, After, Exit, HTTP, JSON, Key, MCP, Prefer
docs/TRACE_CONTEXT.md API, ASCII, Also, Bearer, Before, Bind, Bound, Build
docs/WINDOWS-RUNNER.md After, Build, Check, Checks, For, HTTP, Host, Keep
docs/XTASKS.md AGENTS, API, Available, Build, CLI, Check, Defaults, Every
docs/contracts/README.md API, Drop, HTTP, JSON, MCP, Schema, Some, Spec
docs/contracts/drop-in-provider-layout.md Any, Drop, Dynamic, Each, Every, Everything, MCP, MIME
docs/contracts/examples/README.md API, CLI, Check, MCP, Required, The, These, They
docs/contracts/examples/provider-manifests/ai-sdk.valid.json API, KEY, SDK, Tool, able, addition, additional, additionalProperties
docs/contracts/examples/provider-manifests/denied-capability.invalid.json Declare, able, access, capabilities, capability, description, enable, file
docs/contracts/examples/provider-manifests/duplicate-cli-alias.invalid.json Second, able, alias, cli, com, comma, command, description
docs/contracts/examples/provider-manifests/duplicate-mcp-primitive.invalid.json data, description, example, input, kind, late, mcp, name
docs/contracts/examples/provider-manifests/duplicate-rest-path.invalid.json POST, Second, able, ath, description, enable, input, kind
docs/contracts/examples/provider-manifests/duplicate-tool.invalid.json Second, description, duplicate, input, kind, name, provide, provider
docs/contracts/examples/provider-manifests/generated-doc-prompt-injection.invalid.json description, doc, exp, input, instructions, kind, name, nor
docs/contracts/examples/provider-manifests/mcp-rest-opt-in.valid.json MCP, POST, able, ath, description, enable, exp, explicit
15 more files

Review Links

Release Notes

rmcp v3.1.1

Published: 2026-08-05T15:00:12Z

Release: rmcp-v3.1.1

Fixed

  • emit cache hints from handler macros (#1120)
  • expose MRTR state to tool handlers (#1104)
  • disambiguate input-required results (#1103)

Other

  • make async-trait optional (#1119)

rmcp v3.1.2

Published: 2026-08-07T20:40:42Z

Release: rmcp-v3.1.2

Fixed

  • (auth) map 401/403 challenges on the SSE GET stream (#1152)
  • (sse) loop instead of recursing when skipping SSE events (#1146)
  • (auth) preserve issuer trailing slash during discovery (#1145)

rmcp v3.1.3

Published: 2026-08-17T22:51:47Z

Release: rmcp-v3.1.3

Fixed

  • (auth) ignore query parameters when matching resources (#1177)
  • (auth) retain state until issuer validation (#1167)
  • (model) preserve elicitation property order metadata (#1150)
  • time out auto discovery probe (#1149)
  • (client) classify discover outcome at source, not at the error type (#1133)

Other

  • Fix typo in to_authorized_http_client doc comment (#1158)

rmcp v3.1.4

Published: 2026-08-20T03:47:18Z

Release: rmcp-v3.1.4

Fixed

  • (rmcp) preserve elicitation requestedSchema $schema dialect (#1176)
  • harden signing key handling (#1166)
  • report pre-init metadata errors (#1160)

rmcp v3.2.0

Published: 2026-08-31T23:16:55Z

Release: rmcp-v3.2.0

Added

  • (auth) coordinate OAuth refreshes through credential stores (#1232)
  • add request-state key rotation (#1128)

Fixed

  • keep initialize on legacy protocol versions (#1228)
  • (transport) fall back after sessionless HTTP discover rejections (#1211)
  • allow concurrent streamable http requests (#1186)

rmcp v3.3.0

Published: 2026-09-10T15:32:30Z

Release: rmcp-v3.3.0

Added

  • add ServerHandler::negotiate_initialize (#1247)
  • (macros) reject empty tool_router (#1233)
  • (auth) add enterprise refresh-token and ID-JAG exchanges (#1234)

Fixed

  • (sse) saturate exponential reconnect backoff to avoid overflow panic (#1231)
  • resolve clippy warnings across workspace (#1195)
  • (auth) unify refresh checks and error handling (#1236)

Other

  • (deps) update process-wrap requirement from 9.0 to 10.0 (#1229)

Suggested Follow-Up

  • Read the release, schema, and conformance sections above for source-breaking changes.
  • Update all rmcp pins together when rmcp drift is present.
  • Refresh the pinned MCP schema baseline after reviewing schema drift.
  • Refresh the pinned MCP conformance baseline after reviewing conformance drift.
  • Run cargo update -p rmcp, cargo test, and the MCP dispatch/schema/conformance checks.
  • Update Soma docs/examples if the rmcp API or feature flags changed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions