diff --git a/integrations/mcp-server/README.md b/integrations/mcp-server/README.md index b5384d5..e73f792 100644 --- a/integrations/mcp-server/README.md +++ b/integrations/mcp-server/README.md @@ -30,7 +30,7 @@ Safety defaults: The server speaks the MCP stdio transport: newline-delimited JSON-RPC (one message per line, no `Content-Length` headers) and negotiates -`protocolVersion` during `initialize` (latest supported: `2025-06-18`). +`protocolVersion` during `initialize` (latest supported: `2025-11-25`). The same ADB transport works with the OpenPhone SDK phone emulator: diff --git a/integrations/mcp-server/src/index.mjs b/integrations/mcp-server/src/index.mjs index ef44d6b..2c46210 100644 --- a/integrations/mcp-server/src/index.mjs +++ b/integrations/mcp-server/src/index.mjs @@ -9,7 +9,7 @@ import { textContent, } from "../runtime/protocol/openphone-runtime-tools.mjs"; -export const SUPPORTED_PROTOCOL_VERSIONS = ["2025-06-18"]; +export const SUPPORTED_PROTOCOL_VERSIONS = ["2025-11-25", "2025-06-18"]; const LATEST_PROTOCOL_VERSION = SUPPORTED_PROTOCOL_VERSIONS[0]; export const RUNTIME_PROTOCOL_INFO = runtimeProtocolInfo(); const SERVER_INFO = { diff --git a/tests/integrations/runtime-mcp-contract.mjs b/tests/integrations/runtime-mcp-contract.mjs index 7829912..81b0e49 100644 --- a/tests/integrations/runtime-mcp-contract.mjs +++ b/tests/integrations/runtime-mcp-contract.mjs @@ -42,6 +42,17 @@ const fakeTransport = { { // A supported client protocolVersion is echoed back. + const response = await handleRequest({ + jsonrpc: "2.0", + id: 1, + method: "initialize", + params: { protocolVersion: "2025-11-25" }, + }, { transport: fakeTransport }); + assert.equal(response.result.protocolVersion, "2025-11-25"); +} + +{ + // Older supported client protocolVersions are still echoed back. const response = await handleRequest({ jsonrpc: "2.0", id: 1, @@ -206,14 +217,14 @@ const fakeTransport = { id: 1, method: "initialize", params: { - protocolVersion: "2025-06-18", + protocolVersion: "2025-11-25", capabilities: {}, clientInfo: { name: "contract-test", version: "0.0.0" }, }, }); const initialize = await nextResponse(); assert.equal(initialize.id, 1); - assert.equal(initialize.result.protocolVersion, "2025-06-18"); + assert.equal(initialize.result.protocolVersion, "2025-11-25"); assert.equal(initialize.result.serverInfo.name, "openphone-runtime"); assert.equal(initialize.result.serverInfo.runtimeProtocol.name, "openphone-runtime-protocol"); assert.equal(initialize.result.serverInfo.runtimeProtocol.min_version, 1);