Skip to content

Commit 4c2a836

Browse files
committed
Migrate to MCP v2
1 parent cfa77b1 commit 4c2a836

6 files changed

Lines changed: 69 additions & 18 deletions

File tree

example/lambda/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Logger } from '@aws-lambda-powertools/logger';
2-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
2+
import { McpServer } from '@modelcontextprotocol/server';
33
import { handle } from 'hono/aws-lambda';
44
import { z } from 'zod';
55
import { createHonoApp } from 'aws-lambda-mcp-server';
@@ -16,7 +16,7 @@ const createMcpServer = () => {
1616
'say_hello',
1717
{
1818
description: 'Greets the user with a friendly message.',
19-
inputSchema: { who: z.string() },
19+
inputSchema: z.object({ who: z.string() }),
2020
},
2121
async ({ who }: { who: string }) => ({
2222
content: [{

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
},
3838
"dependencies": {
3939
"@aws-lambda-powertools/logger": "2.34.0",
40-
"@modelcontextprotocol/sdk": "1.30.0",
40+
"@modelcontextprotocol/server": "2.0.0",
4141
"aws-cdk-lib": "2.261.0",
4242
"aws-lambda-mcp-server": "workspace:*",
4343
"constructs": "10.7.1",

package/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,16 @@
5959
"dependencies": {
6060
"@aws-lambda-powertools/logger": "2.34.0",
6161
"@hono/mcp": "0.3.1",
62-
"@modelcontextprotocol/sdk": "1.30.0",
62+
"@modelcontextprotocol/core": "^2.0.0",
63+
"@modelcontextprotocol/hono": "^2.0.0",
64+
"@modelcontextprotocol/server": "2.0.0",
6365
"hono": "4.12.31",
6466
"zod": "4.4.3"
6567
},
6668
"peerDependencies": {
6769
"@aws-lambda-powertools/logger": "^2.34.0",
6870
"@hono/mcp": "^0.3.1",
69-
"@modelcontextprotocol/sdk": "^1.30.0",
71+
"@modelcontextprotocol/server": "^2.0.0",
7072
"hono": "^4.12.31",
7173
"zod": "^3.25 || ^4.0"
7274
}

package/src/index.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
*/
1111

1212
import { Logger } from '@aws-lambda-powertools/logger';
13-
import { StreamableHTTPTransport } from '@hono/mcp';
14-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
15-
import { Context, Hono } from 'hono';
13+
import { McpServer, WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/server';
14+
import { createMcpHonoApp } from '@modelcontextprotocol/hono';
15+
import { Context } from 'hono';
1616
import { BlankEnv, BlankInput } from 'hono/types';
1717

1818
/**
@@ -22,6 +22,15 @@ import { BlankEnv, BlankInput } from 'hono/types';
2222
*/
2323
const logger = new Logger();
2424

25+
// `@modelcontextprotocol/hono` が c.set('parsedBody', ...) で格納する値の型を
26+
// Hono の ContextVariableMap に宣言マージで追加する(パッケージ側の型定義に
27+
// 反映されていないための回避策)
28+
declare module 'hono' {
29+
interface ContextVariableMap {
30+
parsedBody: unknown;
31+
}
32+
}
33+
2534
/**
2635
* 許可されていないHTTPメソッドに対するハンドラーです。
2736
*
@@ -93,7 +102,7 @@ const handleError = (
93102
* @returns void
94103
* @private
95104
*/
96-
const closeResources = async (server: McpServer, transport: StreamableHTTPTransport) => {
105+
const closeResources = async (server: McpServer, transport: WebStandardStreamableHTTPServerTransport) => {
97106
// 両方のクローズを確実に実行(片方が失敗してももう片方を実行)
98107
const closeResults = await Promise.allSettled([
99108
transport.close(),
@@ -125,15 +134,15 @@ const closeResources = async (server: McpServer, transport: StreamableHTTPTransp
125134
* @private
126135
*/
127136
const handleRequest = async (createMcpServer: () => McpServer, c: Context<BlankEnv, '/mcp', BlankInput>) => {
128-
const transport = new StreamableHTTPTransport({
137+
const transport = new WebStandardStreamableHTTPServerTransport({
129138
sessionIdGenerator: undefined, // セッションIDを生成しない(ステートレスモード)
130139
enableJsonResponse: true,
131140
});
132141
const server = createMcpServer();
133142
try {
134143
await server.connect(transport);
135144
logger.trace('MCP リクエストを受信');
136-
return await transport.handleRequest(c);
145+
return await transport.handleRequest(c.req.raw, { parsedBody: c.get('parsedBody') });
137146
} catch (error) {
138147
return handleError(c, error, 'MCP 接続中のエラー:');
139148
} finally {
@@ -168,7 +177,7 @@ const handleRequest = async (createMcpServer: () => McpServer, c: Context<BlankE
168177
* ```
169178
*/
170179
export const createHonoApp = (createMcpServer: () => McpServer) => {
171-
const app = new Hono();
180+
const app = createMcpHonoApp();
172181

173182
app.post('/mcp', async (c) => {
174183
return await handleRequest(createMcpServer, c);

pnpm-lock.yaml

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

pnpm-workspace.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ minimumReleaseAgeExclude:
1414
- pnpm@11.17.0
1515
- '@modelcontextprotocol/sdk@1.30.0'
1616
- brace-expansion@5.0.8
17+
- '@modelcontextprotocol/codemod@2.0.0'
18+
- '@modelcontextprotocol/server@2.0.0'
19+
- '@modelcontextprotocol/core@2.0.0'
20+
- '@modelcontextprotocol/hono@2.0.0'
21+
- '@modelcontextprotocol/node@2.0.0'
1722

1823
overrides:
1924
brace-expansion@<=5.0.7: ^5.0.8

0 commit comments

Comments
 (0)