TypeScript MCP 生态
Anthropic 官方提供 @anthropic/mcp 及相关包,社区也有 @modelcontextprotocol/sdk 等实现。TypeScript 开发 MCP Server 适合与 Node.js 后端、前端工具链集成。
核心包结构
- @anthropic/mcp-core:协议定义、消息类型、基础 Server/Client 逻辑
- @anthropic/mcp-server-:各类 Connector(stdio、sse 等)
- @anthropic/mcp:聚合包,提供开箱即用的 Server 构建方式
Server 搭建
import { MCPServer } from "@anthropic/mcp";
import { StdioServerTransport } from "@anthropic/mcp-server-stdio";
const server = new MCPServer({
name: "my-server",
tools: {
search: {
description: "搜索文档",
inputSchema: {
type: "object",
properties: { query: { type: "string" } },
required: ["query"],
},
handler: async ({ query }) => {
return await doSearch(query);
},
},
},
resources: {
"doc://readme": {
description: "README 内容",
handler: async () => readFile("README.md", "utf-8"),
},
},
});
const transport = new StdioServerTransport();
server.connect(transport);
Connectors(连接器)
- StdioServerTransport:标准输入输出,用于 Claude Desktop、Cursor 等本地集成
- SSEServerTransport:HTTP + SSE,用于远程服务
- WebSocket:部分实现支持 WebSocket 传输
工具定义规范
- inputSchema:遵循 JSON Schema,定义参数类型、必填项、默认值
- description:清晰描述工具用途与适用场景,影响模型选择
- handler:异步函数,接收解析后的参数,返回可序列化结果
资源与 Prompts
- resources:以 URI 或模板为 key,提供
description和handler - prompts:提供模板名称、描述、参数及内容生成逻辑
错误处理
- handler 内
throw new Error("message")会转为 MCP 错误响应 - 可定义自定义错误类型,在客户端做差异化处理
开发与调试
- 使用
npx tsx或ts-node直接运行 TypeScript - 通过
LANGCHAIN_TRACING或 MCP 客户端的日志观察请求与响应 - 单元测试可 Mock transport,直接调用 server 的 handler
小结
TypeScript MCP Server 基于 @anthropic/mcp-core 与 Connectors,提供类型安全、可扩展的开发体验。掌握工具、资源、提示词的注册方式与 Connector 切换,可快速构建适配 Claude Desktop、Cursor 等客户端的 MCP 服务。