🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/typescript-mcp-server-generator
💡 提示:需要 Node.js 和 NPM
生成 TypeScript MCP 服务器
使用以下规范创建一个完整的模型上下文协议(MCP)TypeScript 服务器:
要求
- 项目结构:创建一个新的 TypeScript/Node.js 项目,并具有正确的目录结构
- NPM 包:包含 @modelcontextprotocol/sdk、zod@3,以及 express(用于 HTTP)或 stdio 支持
- TypeScript 配置:带有 ES 模块支持的 tsconfig.json
- 服务器类型:选择基于 HTTP(使用 Streamable HTTP 传输)或基于 stdio 的服务器
- 工具:创建至少一个具有正确模式验证的有用工具
- 错误处理:包含全面的错误处理和验证
实现细节
项目设置
- 使用
npm init初始化并创建 package.json - 安装依赖项:
@modelcontextprotocol/sdk、zod@3和特定于传输的包 - 使用 ES 模块配置 TypeScript:在 package.json 中添加
"type": "module" - 添加开发依赖项:
tsx或ts-node用于开发 - 创建正确的 .gitignore 文件
服务器配置
- 使用
McpServer类进行高级实现 - 设置服务器名称和版本
- 选择合适的传输方式(StreamableHTTPServerTransport 或 StdioServerTransport)
- 对于 HTTP:使用 Express 设置并包含适当的中间件和错误处理
- 对于 stdio:直接使用 StdioServerTransport
工具实现
- 使用
registerTool()方法,并提供描述性名称 - 使用 zod 为输入和输出验证定义模式
- 提供清晰的
title和description字段 - 在结果中同时返回
content和structuredContent - 使用 try-catch 块实现正确的错误处理
- 在适当的地方支持异步操作
资源/提示设置(可选)
- 使用
registerResource()添加资源,并对动态 URI 使用 ResourceTemplate - 使用
registerPrompt()添加提示,并为提示参数定义模式 - 考虑为更好的用户体验添加自动补全支持
代码质量
- 使用 TypeScript 确保类型安全
- 一致地遵循 async/await 模式
- 在传输关闭事件上实现正确的清理
- 使用环境变量进行配置
- 为复杂逻辑添加内联注释
- 以清晰的关注点分离组织代码
可考虑的工具类型示例
- 数据处理和转换
- 外部 API 集成
- 文件系统操作(读取、搜索、分析)
- 数据库查询
- 文本分析或总结(带有采样)
- 系统信息检索
配置选项
- 对于 HTTP 服务器:
- 通过环境变量配置端口
- 为浏览器客户端配置 CORS
- 会话管理(无状态与有状态)
- 为本地服务器提供 DNS 重新绑定保护
- 对于 stdio 服务器:
- 正确的标准输入/标准输出处理
- 基于环境的配置
- 进程生命周期管理
测试指南
- 解释如何运行服务器(
npm start或npx tsx server.ts) - 提供 MCP Inspector 命令:
npx @modelcontextprotocol/inspector - 对于 HTTP 服务器,包括连接 URL:
http://localhost:端口/mcp - 包含示例工具调用
- 针对常见问题添加故障排除技巧
可考虑的其他功能
- 为 LLM 驱动的工具提供采样支持
- 为交互式工作流提供用户输入收集功能
- 支持动态工具注册,具备启用/禁用能力
- 为批量更新提供通知去抖动功能
- 为高效数据引用提供资源链接
生成一个完整的、可用于生产的 MCP 服务器,包含全面的文档、类型安全和错误处理。
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/typescript-mcp-server-generator
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)