Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Server
✓ import { Server } from '@modelcontextprotocol/sdk/server/index.js'
✗ const { Server } = require('@modelcontextprotocol/sdk/server/index.js')
ESM-only package; requires Node >=18 and 'type': 'module' in package.json.
StdioServerTransport
✓ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
✗ import { StdioServerTransport } from '@modelcontextprotocol/sdk'
Exported from a specific subpath, not the main entry.
z
✓ import { z } from 'zod'
Used for parameter schema validation; zod is a peer dependency of @modelcontextprotocol/sdk.
CallToolResultSchema
✓ import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js'
Type for tool response; also available from the server module.
Demonstrates creating a minimal MCP server with a single 'echo' tool using the @modelcontextprotocol/sdk.
// src/index.ts (ESM)
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';
const server = new Server(
{ name: 'mcp-echo-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
server.tool(
'echo',
'Echoes back the message',
{ message: z.string().describe('The message to echo') },
async ({ message }) => ({
content: [{ type: 'text', text: message }]
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module /.../@modelcontextprotocol/sdk/... from ... not supported.
Using CommonJS require() with ESM-only package.
fixSwitch to ES modules: add 'type': 'module' to your package.json or use dynamic import().
Cannot find module '@modelcontextprotocol/sdk' or its corresponding type declarations.
Missing @modelcontextprotocol/sdk in node_modules; not installed.
fixRun: npm install @modelcontextprotocol/sdk
Error: No matching export for import "@modelcontextprotocol/sdk".
Using a bare import '@modelcontextprotocol/sdk' without subpath.
fixUse a specific subpath like '@modelcontextprotocol/sdk/server/index.js'.
Audit
Dependencies
@modelcontextprotocol/sdkrequiredRequired to create MCP server and define tools.