[ PROMPT_NODE_24954 ]
node_mcp_server
[ SKILL_DOCUMENTATION ]
# Node/TypeScript MCP 服务器实现指南
## 概述
本文档提供了使用 MCP TypeScript SDK 实现 MCP 服务器的特定最佳实践和示例。内容涵盖项目结构、服务器设置、工具注册模式、使用 Zod 进行输入验证、错误处理以及完整的可运行示例。
---
## 快速参考
### 关键导入
typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import express from "express";
import { z } from "zod";
### 服务器初始化
typescript
const server = new McpServer({
name: "service-mcp-server",
version: "1.0.0"
});
### 工具注册模式
typescript
server.registerTool(
"tool_name",
{
title: "工具显示名称",
description: "工具的功能描述",
inputSchema: { param: z.string() },
outputSchema: { result: z.string() }
},
async ({ param }) => {
const output = { result: `Processed: ${param}` };
return {
content: [{ type: "text", text: JSON.stringify(output) }],
structuredContent: output // 结构化数据的现代模式
};
}
);
---
## MCP TypeScript SDK
官方 MCP TypeScript SDK 提供:
- 用于服务器初始化的 `McpServer` 类
- 用于工具注册的 `registerTool` 方法
- 用于运行时输入验证的 Zod 模式集成
- 类型安全的工具处理器实现
**重要 - 仅使用现代 API:**
- **推荐使用**:`server.registerTool()`, `server.registerResource()`, `server.registerPrompt()`
- **请勿使用**:旧的已弃用 API,如 `server.tool()`, `server.setRequestHandler(ListToolsRequestSchema, ...)` 或手动处理器注册
- `register*` 方法提供了更好的类型安全性、自动模式处理,是推荐的方法
详细信息请参阅参考资料中的 MCP SDK 文档。
## 服务器命名规范
Node/TypeScript MCP 服务器必须遵循此命名模式:
- **格式**:`{service}-mcp-server`(小写,使用连字符)
- **示例**:`github-mcp-server`, `jira-mcp-server`, `stripe-mcp-server`
名称应:
- 通用(不绑定到特定功能)
- 描述所集成的服务/API
- 易于从任务描述中推断
- 不包含版本号或日期
## 项目结构
Crea