使用说明

项目简介

本项目是一个基于 TypeScript 开发的 MCP (Model Context Protocol) 服务器模板,旨在帮助开发者快速搭建符合 MCP 协议的后端服务。它已经预先配置了基础的服务器框架、SSE 传输协议支持,并提供了工具 (Tools) 和 Prompt 模板 (Prompts) 的示例代码,开发者可以基于此模板快速扩展和定制自己的 MCP 服务器。

主要功能点

  • 资源 (Resources) 管理框架: 虽然模板本身没有预置资源管理示例,但框架已具备扩展资源管理的能力,开发者可以根据需要自行添加资源管理模块。
  • 工具 (Tools) 注册与执行: 预置了加法 (add) 和减法 (subtract) 两个计算器工具作为示例,展示了如何定义工具的输入输出 schema 以及实现工具的具体逻辑。
  • Prompt 模板 (Prompts) 定义与渲染: 预置了计算器 Prompt 模板作为示例,展示了如何根据客户端请求的参数动态生成 Prompt 消息。
  • SSE 传输协议支持: 默认使用 SSE (Server-Sent Events) 作为客户端和服务器之间的通信协议,支持实时的事件推送。
  • JSON-RPC 协议: 通过 MCP SDK 封装,实现了基于 JSON-RPC 的客户端-服务器通信,开发者无需直接处理底层的协议细节。
  • Zod Schema 校验: 使用 Zod 库进行数据 schema 定义和校验,保证数据类型的准确性和接口的健壮性。

安装步骤

  1. 克隆仓库
    git clone https://github.com/zubhav/mcp-server-typescript-template.git
    cd mcp-server-typescript-template
  2. 安装依赖 确保已安装 Node.js 和 npm,然后运行:
    npm install

服务器配置

MCP 客户端需要配置以下信息以连接到此 MCP 服务器。以下是基于当前仓库模板生成的配置信息,为 JSON 格式。

{
  "serverName": "mcp-server-typescript-template",  // MCP 服务器名称,与 src/index.ts 中 McpServer 构造函数中的 name 字段一致
  "command": "node",                             // 启动服务器的命令,这里使用 Node.js 运行脚本
  "args": ["src/index.ts"],                       // 启动命令的参数,指定服务器入口文件
  "transport": "sse",                             // 使用 SSE (Server-Sent Events) 传输协议
  "url": "http://localhost:3001/sse"              // SSE 连接的 URL 地址,指向服务器的 /sse 路径
}

配置参数注释:

  • 'serverName': MCP 服务器的名称,客户端可以使用此名称识别服务器。
  • 'command': 启动 MCP 服务器的命令行指令。对于此模板,由于是 Node.js 项目,所以使用 'node' 命令。
  • 'args': 'command' 命令的参数,这里指定了服务器的入口文件 'src/index.ts'。
  • 'transport': 指定客户端与服务器通信的传输协议,这里配置为 'sse',表示使用 Server-Sent Events。
  • 'url': 当 'transport' 为 'sse' 时,需要配置此项,指定 SSE 连接的服务器 URL,指向服务器提供的 SSE 端点 '/sse'。

基本使用方法

  1. 启动服务器 在仓库根目录下,运行以下命令启动 MCP 服务器:

    npm run dev

    这将启动一个 Express 服务器,监听在 'http://localhost:3001' 端口。

  2. 使用 MCP 客户端连接 配置 MCP 客户端,例如使用 '@modelcontextprotocol/sdk/client' 提供的客户端 SDK,并使用上述 服务器配置 中的 JSON 信息进行配置。客户端连接成功后,即可调用服务器提供的工具和 Prompt。

  3. 测试工具和 Prompt 可以使用仓库中 'src/index.test.ts' 提供的测试用例作为参考,了解如何通过客户端 SDK 调用 'add'、'subtract' 工具和 'calculator' Prompt。 开发者可以根据需要编写更多的测试用例或直接在客户端应用中进行测试。

  4. 扩展功能

    • 添加更多工具: 在 'src/calculator/tools' 目录下创建新的工具文件,参考 'add.ts' 和 'subtract.ts' 的示例,实现工具的具体逻辑,并在 'src/index.ts' 中使用 'server.tool()' 方法注册新的工具。
    • 添加更多 Prompt 模板: 在 'src/calculator/prompt.ts' 中创建新的 Prompt 模板函数,并在 'src/index.ts' 中使用 'server.prompt()' 方法注册新的 Prompt 模板。
    • 实现资源管理: 根据实际需求,扩展服务器的资源管理能力,例如添加数据读取、存储等功能,并在工具或 Prompt 中使用这些资源。

注意: 此模板默认端口为 '3001',SSE 路径为 '/sse',如需修改,请修改 'src/index.ts' 文件中的相关配置。

信息

分类

开发者工具