Skip to content

Commit aa326fe

Browse files
WIP: port to concrete-Protocol approach (#1891) — mechanical pass
- import paths sdk/* → @modelcontextprotocol/{client,server} - events.ts: ProtocolWithEvents extends Protocol (concrete), v1-schema-shim setRequestHandler - request/notification call-shape transforms (perl) - drop assert*Capability overrides (Protocol no longer abstract) - server/index.ts copied from #612 port - tsconfig: exclude *.examples.ts, docs/ (same as #612) NOT YET: *Schema imports → specTypeSchema(), request() visibility, ~225 tsc errors remain
1 parent 01d826a commit aa326fe

17 files changed

+212
-436
lines changed

package-lock.json

Lines changed: 64 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
"author": "Olivier Chafik",
7777
"devDependencies": {
7878
"@boneskull/typedoc-plugin-mermaid": "^0.2.0",
79-
"@modelcontextprotocol/sdk": "^1.29.0",
8079
"@playwright/test": "1.57.0",
8180
"@types/bun": "^1.3.2",
8281
"@types/node": "20.19.27",
@@ -107,7 +106,6 @@
107106
"zod": "^4.1.13"
108107
},
109108
"peerDependencies": {
110-
"@modelcontextprotocol/sdk": "^1.29.0",
111109
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
112110
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
113111
"zod": "^3.25.0 || ^4.0.0"
@@ -125,5 +123,11 @@
125123
"seroval-plugins": "1.4.2",
126124
"solid-js": "1.9.10",
127125
"@types/node": "20.19.27"
126+
},
127+
"dependencies": {
128+
"@modelcontextprotocol/client": "file:../../../../../tmp/modelcontextprotocol-client-2.0.0-alpha.2.tgz",
129+
"@modelcontextprotocol/express": "file:../../../../../tmp/modelcontextprotocol-express-2.0.0-alpha.2.tgz",
130+
"@modelcontextprotocol/node": "file:../../../../../tmp/modelcontextprotocol-node-2.0.0-alpha.2.tgz",
131+
"@modelcontextprotocol/server": "file:../../../../../tmp/modelcontextprotocol-server-2.0.0-alpha.2.tgz"
128132
}
129133
}

src/app-bridge.examples.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
* @module
88
*/
99

10-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
11-
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
10+
import { Client } from "@modelcontextprotocol/client";
11+
import type { Transport } from "@modelcontextprotocol/client";
1212
import {
1313
CallToolResult,
1414
CallToolResultSchema,
1515
ListResourcesResultSchema,
1616
ReadResourceResultSchema,
1717
ListPromptsResultSchema,
18-
} from "@modelcontextprotocol/sdk/types.js";
18+
} from "@modelcontextprotocol/client";
1919
import { AppBridge, PostMessageTransport } from "./app-bridge.js";
2020
import type { McpUiDisplayMode } from "./types.js";
2121

src/app-bridge.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, it, expect, beforeEach, afterEach } from "bun:test";
22
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
3-
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
4-
import type { ServerCapabilities } from "@modelcontextprotocol/sdk/types.js";
3+
import type { Client } from "@modelcontextprotocol/client";
4+
import type { ServerCapabilities } from "@modelcontextprotocol/client";
55
import {
66
EmptyResultSchema,
77
ListPromptsResultSchema,
@@ -11,7 +11,7 @@ import {
1111
ReadResourceResultSchema,
1212
ResourceListChangedNotificationSchema,
1313
ToolListChangedNotificationSchema,
14-
} from "@modelcontextprotocol/sdk/types.js";
14+
} from "@modelcontextprotocol/client";
1515

1616
import { App } from "./app";
1717
import {

src/app-bridge.ts

Lines changed: 16 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2-
import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
1+
import { Client } from "@modelcontextprotocol/client";
2+
import { Transport } from "@modelcontextprotocol/client";
33
import {
44
CallToolRequest,
55
CallToolRequestSchema,
@@ -37,11 +37,11 @@ import {
3737
Tool,
3838
ToolListChangedNotification,
3939
ToolListChangedNotificationSchema,
40-
} from "@modelcontextprotocol/sdk/types.js";
40+
} from "@modelcontextprotocol/client";
4141
import {
4242
ProtocolOptions,
4343
RequestOptions,
44-
} from "@modelcontextprotocol/sdk/shared/protocol.js";
44+
} from "@modelcontextprotocol/client";
4545
import { ProtocolWithEvents } from "./events";
4646

4747
import {
@@ -1033,10 +1033,7 @@ export class AppBridge extends ProtocolWithEvents<
10331033
* @see `ToolListChangedNotification` from @modelcontextprotocol/sdk for the notification type
10341034
*/
10351035
sendToolListChanged(params: ToolListChangedNotification["params"] = {}) {
1036-
return this.notification({
1037-
method: "notifications/tools/list_changed" as const,
1038-
params,
1039-
});
1036+
return this.notification("notifications/tools/list_changed", params);
10401037
}
10411038

10421039
/**
@@ -1232,10 +1229,7 @@ export class AppBridge extends ProtocolWithEvents<
12321229
sendResourceListChanged(
12331230
params: ResourceListChangedNotification["params"] = {},
12341231
) {
1235-
return this.notification({
1236-
method: "notifications/resources/list_changed" as const,
1237-
params,
1238-
});
1232+
return this.notification("notifications/resources/list_changed", params);
12391233
}
12401234

12411235
/**
@@ -1315,10 +1309,7 @@ export class AppBridge extends ProtocolWithEvents<
13151309
* @see `PromptListChangedNotification` from @modelcontextprotocol/sdk for the notification type
13161310
*/
13171311
sendPromptListChanged(params: PromptListChangedNotification["params"] = {}) {
1318-
return this.notification({
1319-
method: "notifications/prompts/list_changed" as const,
1320-
params,
1321-
});
1312+
return this.notification("notifications/prompts/list_changed", params);
13221313
}
13231314

13241315
/**
@@ -1462,10 +1453,7 @@ export class AppBridge extends ProtocolWithEvents<
14621453
sendHostContextChange(
14631454
params: McpUiHostContextChangedNotification["params"],
14641455
): Promise<void> | void {
1465-
return this.notification({
1466-
method: "ui/notifications/host-context-changed" as const,
1467-
params,
1468-
});
1456+
return this.notification("ui/notifications/host-context-changed", params);
14691457
}
14701458

14711459
/**
@@ -1491,10 +1479,7 @@ export class AppBridge extends ProtocolWithEvents<
14911479
* @see {@link sendToolResult `sendToolResult`} for sending results after execution
14921480
*/
14931481
sendToolInput(params: McpUiToolInputNotification["params"]) {
1494-
return this.notification({
1495-
method: "ui/notifications/tool-input" as const,
1496-
params,
1497-
});
1482+
return this.notification("ui/notifications/tool-input", params);
14981483
}
14991484

15001485
/**
@@ -1527,10 +1512,7 @@ export class AppBridge extends ProtocolWithEvents<
15271512
* @see {@link sendToolInput `sendToolInput`} for sending complete arguments
15281513
*/
15291514
sendToolInputPartial(params: McpUiToolInputPartialNotification["params"]) {
1530-
return this.notification({
1531-
method: "ui/notifications/tool-input-partial" as const,
1532-
params,
1533-
});
1515+
return this.notification("ui/notifications/tool-input-partial", params);
15341516
}
15351517

15361518
/**
@@ -1556,10 +1538,7 @@ export class AppBridge extends ProtocolWithEvents<
15561538
* @see {@link sendToolInput `sendToolInput`} for sending tool arguments before results
15571539
*/
15581540
sendToolResult(params: McpUiToolResultNotification["params"]) {
1559-
return this.notification({
1560-
method: "ui/notifications/tool-result" as const,
1561-
params,
1562-
});
1541+
return this.notification("ui/notifications/tool-result", params);
15631542
}
15641543

15651544
/**
@@ -1593,10 +1572,7 @@ export class AppBridge extends ProtocolWithEvents<
15931572
* @see {@link sendToolInput `sendToolInput`} for sending tool arguments
15941573
*/
15951574
sendToolCancelled(params: McpUiToolCancelledNotification["params"]) {
1596-
return this.notification({
1597-
method: "ui/notifications/tool-cancelled" as const,
1598-
params,
1599-
});
1575+
return this.notification("ui/notifications/tool-cancelled", params);
16001576
}
16011577

16021578
/**
@@ -1617,10 +1593,7 @@ export class AppBridge extends ProtocolWithEvents<
16171593
sendSandboxResourceReady(
16181594
params: McpUiSandboxResourceReadyNotification["params"],
16191595
) {
1620-
return this.notification({
1621-
method: "ui/notifications/sandbox-resource-ready" as const,
1622-
params,
1623-
});
1596+
return this.notification("ui/notifications/sandbox-resource-ready", params);
16241597
}
16251598

16261599
/**
@@ -1651,12 +1624,7 @@ export class AppBridge extends ProtocolWithEvents<
16511624
params: McpUiResourceTeardownRequest["params"],
16521625
options?: RequestOptions,
16531626
) {
1654-
return this.request(
1655-
{
1656-
method: "ui/resource-teardown" as const,
1657-
params,
1658-
},
1659-
McpUiResourceTeardownResultSchema,
1627+
return this.request("ui/resource-teardown", params, McpUiResourceTeardownResultSchema,
16601628
options,
16611629
);
16621630
}
@@ -1674,9 +1642,7 @@ export class AppBridge extends ProtocolWithEvents<
16741642
* @returns Promise resolving to the tool call result
16751643
*/
16761644
callTool(params: CallToolRequest["params"], options?: RequestOptions) {
1677-
return this.request(
1678-
{ method: "tools/call", params },
1679-
CallToolResultSchema,
1645+
return this.request("tools/call", params, CallToolResultSchema,
16801646
options,
16811647
);
16821648
}
@@ -1691,9 +1657,7 @@ export class AppBridge extends ProtocolWithEvents<
16911657
* @returns Promise resolving to the list of tools
16921658
*/
16931659
listTools(params: ListToolsRequest["params"], options?: RequestOptions) {
1694-
return this.request(
1695-
{ method: "tools/list", params },
1696-
ListToolsResultSchema,
1660+
return this.request("tools/list", params, ListToolsResultSchema,
16971661
options,
16981662
);
16991663
}

src/app.examples.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
* @module
88
*/
99

10-
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
10+
import type { Tool } from "@modelcontextprotocol/client";
1111
import type {
1212
McpServer,
1313
ToolCallback,
14-
} from "@modelcontextprotocol/sdk/server/mcp.js";
14+
} from "@modelcontextprotocol/server";
1515
import {
1616
App,
1717
PostMessageTransport,

0 commit comments

Comments
 (0)