Migrate to MCP SDK 2.0 with official Protocol and isolated role peers (#720)

App and AppBridge extend the public Protocol from @modelcontextprotocol/client; the iframe wire protocol (ui/initialize only) is unchanged. Peers move to the split SDK 2.0 packages with client and server as optional role peers. Fixups (lockfile, peer ranges, restored handler guards, docs, wire-compat tests) follow in a separate PR.

Co-authored-by: Andrew Khadder <andrew@manufact.com>
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
Closes #702
This commit is contained in:
Olivier Chafik 2026-09-08 12:44:49 +01:00 • committed by GitHub
commit 1a713173cc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 2415 additions and 1867 deletions

View file

@ -614,7 +614,9 @@
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"required": {
"type": "array",
@ -629,25 +631,10 @@
"outputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "object"
},
"properties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"required": {
"type": "array",
"items": {
"type": "string"
}
"$schema": {
"type": "string"
}
},
"required": ["type"],
"additionalProperties": {}
},
"annotations": {
@ -1304,7 +1291,40 @@
}
},
"required": ["method", "params"],
"additionalProperties": false
"additionalProperties": false,
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
},
"McpUiHostContext": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
@ -1377,7 +1397,9 @@
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"required": {
"type": "array",
@ -1392,25 +1414,10 @@
"outputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "object"
},
"properties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"required": {
"type": "array",
"items": {
"type": "string"
}
"$schema": {
"type": "string"
}
},
"required": ["type"],
"additionalProperties": {}
},
"annotations": {
@ -2062,7 +2069,40 @@
"additionalProperties": false
}
},
"additionalProperties": {}
"additionalProperties": {},
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
},
"McpUiHostCss": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
@ -2978,7 +3018,9 @@
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"required": {
"type": "array",
@ -2993,25 +3035,10 @@
"outputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "object"
},
"properties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"required": {
"type": "array",
"items": {
"type": "string"
}
"$schema": {
"type": "string"
}
},
"required": ["type"],
"additionalProperties": {}
},
"annotations": {
@ -3673,7 +3700,40 @@
"hostCapabilities",
"hostContext"
],
"additionalProperties": {}
"additionalProperties": {},
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
}
]
}
}
},
"McpUiInitializedNotification": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
@ -5360,26 +5420,52 @@
"_meta": {
"type": "object",
"properties": {
"progressToken": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
]
},
"io.modelcontextprotocol/related-task": {
"io.modelcontextprotocol/serverInfo": {
"type": "object",
"properties": {
"taskId": {
"name": {
"type": "string"
},
"title": {
"type": "string"
},
"icons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"src": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizes": {
"type": "array",
"items": {
"type": "string"
}
},
"theme": {
"type": "string",
"enum": ["light", "dark"]
}
},
"required": ["src"],
"additionalProperties": false
}
},
"version": {
"type": "string"
},
"websiteUrl": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": ["taskId"],
"required": ["name", "version"],
"additionalProperties": false
}
},
@ -5705,13 +5791,7 @@
]
}
},
"structuredContent": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"structuredContent": {},
"isError": {
"type": "boolean"
}

View file

@ -10,7 +10,7 @@ import {
RequestIdSchema,
ResourceLinkSchema,
ToolSchema,
} from "@modelcontextprotocol/sdk/types.js";
} from "@modelcontextprotocol/core";
/**
* @description Color theme preference for the host environment.