D
AI
学习工作台
Claude Skills2026-03-172 分钟阅读

TypeScript MCP Server 开发

掌握 @anthropic/mcp-core、Connectors 与 TypeScript MCP 开发生态

MCPTypeScriptAnthropicConnectors记笔记标记疑惑

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 传输
切换传输方式只需替换 Connector,业务逻辑保持不变。

工具定义规范

  • inputSchema:遵循 JSON Schema,定义参数类型、必填项、默认值
  • description:清晰描述工具用途与适用场景,影响模型选择
  • handler:异步函数,接收解析后的参数,返回可序列化结果

资源与 Prompts

  • resources:以 URI 或模板为 key,提供 descriptionhandler
  • prompts:提供模板名称、描述、参数及内容生成逻辑

错误处理

  • handler 内 throw new Error("message") 会转为 MCP 错误响应
  • 可定义自定义错误类型,在客户端做差异化处理

开发与调试

  • 使用 npx tsxts-node 直接运行 TypeScript
  • 通过 LANGCHAIN_TRACING 或 MCP 客户端的日志观察请求与响应
  • 单元测试可 Mock transport,直接调用 server 的 handler

小结

TypeScript MCP Server 基于 @anthropic/mcp-core 与 Connectors,提供类型安全、可扩展的开发体验。掌握工具、资源、提示词的注册方式与 Connector 切换,可快速构建适配 Claude Desktop、Cursor 等客户端的 MCP 服务。

知识卡片

问题

@anthropic/mcp-core 提供哪些核心能力?

点击翻转查看答案

答案

提供 MCP 协议的消息类型、序列化、Server 与 Client 的抽象基类,以及 stdio、SSE 等 Connector 实现,开发者可基于此快速构建符合规范的 MCP 应用。

问题

MCP Connector 的作用是什么?

点击翻转查看答案

答案

Connector 封装传输层逻辑,负责消息的收发、连接管理。不同 Connector 对应不同传输方式(stdio、HTTP/SSE、WebSocket),Server 通过注入 Connector 实现传输可插拔。

问题

TypeScript MCP Server 如何注册 Tool?

点击翻转查看答案

答案

通过 Server 实例的 tools 配置,传入工具定义(name、description、inputSchema)及 handler 函数;或使用封装库的装饰器/Builder API 简化注册。