From 7202d482fc27af1e9220cd8fc74f2dee6c580afe Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 3 Mar 2026 13:41:49 -0600 Subject: [PATCH 1/4] fix(server): add limit option for express json body parser Allow users to override the default json limit (100kb) in createMcpExpressApp() by passing a limit option. This addresses issue #1354. Closes #1354 --- packages/middleware/express/src/express.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/middleware/express/src/express.ts b/packages/middleware/express/src/express.ts index af156a229..2e9404a0a 100644 --- a/packages/middleware/express/src/express.ts +++ b/packages/middleware/express/src/express.ts @@ -22,6 +22,10 @@ export interface CreateMcpExpressAppOptions { * to restrict which hostnames are allowed. */ allowedHosts?: string[]; + /** + * Controls the maximum request body size. + */ + limit?: string; } /** @@ -51,10 +55,10 @@ export interface CreateMcpExpressAppOptions { * ``` */ export function createMcpExpressApp(options: CreateMcpExpressAppOptions = {}): Express { - const { host = '127.0.0.1', allowedHosts } = options; + const { host = '127.0.0.1', allowedHosts, limit } = options; const app = express(); - app.use(express.json()); + app.use(limit ? express.json({ limit }) : express.json()); // If allowedHosts is explicitly provided, use that for validation if (allowedHosts) { From f2db2a66ee0654587edbe7653ddb7fdc93f4177b Mon Sep 17 00:00:00 2001 From: Rootlogger Date: Mon, 9 Mar 2026 11:40:01 -0500 Subject: [PATCH 2/4] chore: add changeset for limit fix --- .changeset/mcp-limit-fix.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mcp-limit-fix.md diff --git a/.changeset/mcp-limit-fix.md b/.changeset/mcp-limit-fix.md new file mode 100644 index 000000000..aa2d4ac4d --- /dev/null +++ b/.changeset/mcp-limit-fix.md @@ -0,0 +1,5 @@ +--- +"@modelcontextprotocol/server": patch +--- + +fix(server): add limit option for express json body parser From 1cb18c2c1f51773cabe5f07b0ae827224bce6da8 Mon Sep 17 00:00:00 2001 From: Rootlogger Date: Mon, 9 Mar 2026 12:01:29 -0500 Subject: [PATCH 3/4] fix(docs): update package name from @modelcontextprotocol/server to @modelcontextprotocol/sdk The individual packages (@modelcontextprotocol/server, etc.) are not published to npm. The correct package to use is @modelcontextprotocol/sdk which includes all exports. This addresses issue #1608. --- docs/server-quickstart.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/server-quickstart.md b/docs/server-quickstart.md index ffa49cec5..17ebdd380 100644 --- a/docs/server-quickstart.md +++ b/docs/server-quickstart.md @@ -53,7 +53,7 @@ cd weather npm init -y # Install dependencies -npm install @modelcontextprotocol/server zod +npm install @modelcontextprotocol/sdk zod npm install -D @types/node typescript # Create our files @@ -72,7 +72,7 @@ cd weather npm init -y # Install dependencies -npm install @modelcontextprotocol/server zod +npm install @modelcontextprotocol/sdk zod npm install -D @types/node typescript # Create our files @@ -124,7 +124,7 @@ Now let's dive into building your server. Add these to the top of your `src/index.ts`: ```ts source="../examples/server-quickstart/src/index.ts#prelude" -import { McpServer, StdioServerTransport } from '@modelcontextprotocol/server'; +import { McpServer, StdioServerTransport } from '@modelcontextprotocol/sdk'; import * as z from 'zod/v4'; const NWS_API_BASE = 'https://api.weather.gov'; @@ -212,7 +212,7 @@ interface ForecastResponse { ### Registering tools -Each tool is registered with {@linkcode @modelcontextprotocol/server!server/mcp.McpServer#registerTool | server.registerTool()}, which takes the tool name, a configuration object (with description and input schema), and a callback that implements the tool logic. Let's register our two weather tools: +Each tool is registered with {@linkcode @modelcontextprotocol/sdk!server/mcp.McpServer#registerTool | server.registerTool()}, which takes the tool name, a configuration object (with description and input schema), and a callback that implements the tool logic. Let's register our two weather tools: ```ts source="../examples/server-quickstart/src/index.ts#registerTools" // Register weather tools From d0945552371743bdc112fa6b3a0edfedcb404d41 Mon Sep 17 00:00:00 2001 From: Rootlogger Date: Mon, 9 Mar 2026 12:03:47 -0500 Subject: [PATCH 4/4] fix(docs): update Hono package namespace from @modelcontextprotocol/hono to @hono/mcp The @modelcontextprotocol/hono package is not published to npm. The correct package is @hono/mcp. This addresses issue #1639. --- packages/middleware/hono/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/middleware/hono/README.md b/packages/middleware/hono/README.md index f59188850..ca11f48bd 100644 --- a/packages/middleware/hono/README.md +++ b/packages/middleware/hono/README.md @@ -1,4 +1,4 @@ -# `@modelcontextprotocol/hono` +# `@hono/mcp` Hono adapters for the MCP TypeScript server SDK. @@ -13,7 +13,7 @@ It does **not** implement MCP itself. Instead, it helps you: ## Install ```bash -npm install @modelcontextprotocol/server @modelcontextprotocol/hono hono +npm install @modelcontextprotocol/server @hono/mcp hono ``` ## Exports @@ -28,7 +28,7 @@ npm install @modelcontextprotocol/server @modelcontextprotocol/hono hono ```ts import { McpServer, WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/server'; -import { createMcpHonoApp } from '@modelcontextprotocol/hono'; +import { createMcpHonoApp } from '@hono/mcp'; const server = new McpServer({ name: 'my-server', version: '1.0.0' }); const transport = new WebStandardStreamableHTTPServerTransport({ sessionIdGenerator: undefined }); @@ -41,7 +41,7 @@ app.all('/mcp', c => transport.handleRequest(c.req.raw, { parsedBody: c.get('par ### Host header validation (DNS rebinding protection) ```ts -import { localhostHostValidation } from '@modelcontextprotocol/hono'; +import { localhostHostValidation } from '@hono/mcp'; const app = createMcpHonoApp(); app.use('*', localhostHostValidation());