MCP服务器模板

一个帮助快速启动基于模型上下文协议(MCP)服务器项目的模板,提供项目结构、配置管理和工具注册等功能。

  • by bsmi021
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 bsmi021/custom-mcp-template

使用说明

# MCP服务器模板(create-mcp-server)

此模板可帮助您根据推荐做法快速引导新的模型上下文协议(MCP)服务器项目。

用法(创建新服务器)

创建名为的新MCP服务器项目 my-new-mcp-server,使用以下命令运行 npx:

npx create-mcp-server my-new-mcp-server

(注意:如果你还没有将这个包发布到npm,你可能需要运行 npm link 首先在此模板目录中,然后使用 create-mcp-server my-new-mcp-server)

这将:

  1. 创建一个名为的新目录 my-new-mcp-server.
  2. 提示您输入项目详细信息(名称、描述)。
  3. 复制模板文件(src, docs、配置文件等)放入新目录。
  4. 更新 package.json 与您的项目详细信息。

初始化后,按照终端中提供的说明进行操作:

cd my-new-mcp-server
npm install
# Review configuration in src/config/ConfigurationManager.ts
# Add your tools in src/tools/
# Add your services in src/services/
npm run dev  # Start the development server

开发此模板(高级)

本节描述了 mcp-server-template 它自己。如果您只是使用模板创建自己的服务器,则通常不需要此模板。

项目结构

  • /src:包含所有源代码。
    • /config:配置管理(ConfigurationManager)。
    • /服务:核心业务逻辑类。
    • /工具:MCP工具定义和适配器(*tool.ts,*Params.ts)。
    • /类型:TypeScript接口和Zod模式。
    • /utils:共享实用程序函数(日志、错误等)。
    • initialize.ts:服务器实例创建和工具注册。
    • server.ts:主要应用程序入口点。
  • /dist:编译的JavaScript输出(由生成) pm运行构建)。
  • package.json:项目元数据和依赖关系。
  • sconfig.json:TypeScript编译器选项。
  • .eslintrc.json:ESLint配置。
  • .firerrc.json:更高级的配置。
  • .gitignore:Git忽略规则。

入门指南

  1. 安装依赖关系: ash npm install
  2. 配置赫斯基(如果需要,第一次): ash npx husky install
  3. 在开发模式下运行: (使用s节点和 odemon用于自动重新加载) ash npm run dev
  4. 生产建设: ash npm run build
  5. 运行生产构建: ash npm start

添加新工具(yourTool)

  1. 定义类型: 使用接口(例如YourServiceConfig、YourServiceData)创建src/types/yourServiceTypes.ts。从src/types/index.ts导出。
  2. 实施服务: 使用核心逻辑类创建src/services/YourService.ts。从src/services/index.ts导出。
  3. 定义刀具参数: 使用TOOL_NAME、TOOL_DESCRIPTION和TOOL_DATAMS创建src/tools/yourToolParams.ts(使用Zod和detained.descripte()调用)。
  4. 机具注册: 创建src/tools/yourTool.ts。导入服务和参数。创建一个实例化服务的函数,并使用异步处理程序调用server.tool(),该处理程序验证输入、调用服务、格式化输出并处理错误(映射到McpError)。
  5. 注册工具: 从src/tools/index.ts导入并调用注册函数 egisterTools功能。
  6. 添加配置: 如果需要,更新src/config/ConfigurationManager.ts以包含新服务的配置类型、默认值、getter和更新器。
  7. 添加实用程序: 如果需要,将辅助函数添加到src/utils/并导出。
  8. 编写测试: 在src/services/中添加服务逻辑的单元测试,并在src/tools/中添加工具适配器的潜在集成测试。

装订和格式化

  • 棉绒: pm运行lint
  • 格式: pm运行格式

代码将在通过Husky和lint-stage提交时自动进行lint和格式化。