使用说明

项目简介

本项目是一个使用 TypeSpec 生成的 MCP (Model Context Protocol) 服务器示例,采用 JavaScript 实现。它提供了一组基本的向量数学计算工具,可以通过 MCP 客户端调用。该服务器演示了如何利用 '@modelcontextprotocol/sdk' 库构建 MCP 服务端,并通过 Stdio (标准输入输出) 进行通信。

主要功能点

  • MCP 协议实现: 实现了 MCP 协议的核心功能,能够接收和处理来自 MCP 客户端的符合 MCP 协议的请求。
  • 工具注册与执行: 注册并提供了 'addVector', 'subVector', 'crossProduct', 'dotProduct' 四个向量数学计算工具,允许客户端调用这些工具执行向量运算。
  • 基于 Stdio 传输: 使用标准输入输出 (Stdio) 作为 MCP 服务器的传输协议,方便与其他进程进行集成和通信。
  • 请求处理: 实现了 'ListToolsRequest' (列出工具) 和 'CallToolRequest' (调用工具) 的请求处理逻辑。
  • 参数和返回类型校验: 使用 Zod 库进行工具参数和返回类型的校验,确保数据类型安全。
  • 能力声明: 声明了服务器提供的 'tools' 能力。

安装步骤

  1. 克隆仓库
    git clone https://github.com/bterlson/typespec-mcp
  2. 进入演示服务器目录
    cd typespec-mcp/packages/demo
  3. 安装依赖
    npm install
  4. 构建项目
    npm run build
    构建成功后,服务器代码将生成在 'packages/demo/dist' 目录中。

服务器配置

以下 JSON 配置信息用于 MCP 客户端连接此服务器。请根据实际情况配置客户端,将配置信息填入 MCP 客户端的服务器配置中。

{
  "server name": "My MCP Server",
  "command": "node",
  "args": [
    "packages/demo/dist/mcp-server.js"
  ],
  "description": "启动 TypeSpec MCP 服务器示例。请确保先在 'packages/demo' 目录下运行 'npm run build' 构建项目。",
  "transport": "stdio"
}

配置参数说明:

  • 'server name': 服务器的名称,可以自定义,用于在客户端识别服务器。
  • 'command': 启动服务器的命令,这里使用 'node' 命令来执行 JavaScript 代码。
  • 'args': 传递给 'command' 的参数,这里指定了服务器入口文件 'packages/demo/dist/mcp-server.js' 的路径。
  • 'description': 服务器的描述信息,用于提供服务器的简要说明。
  • 'transport': 服务器使用的传输协议,这里设置为 'stdio',表示使用标准输入输出。

基本使用方法

  1. 启动服务器: MCP 客户端根据上述配置启动服务器。由于配置中使用的是 Stdio 传输,服务器会作为子进程在客户端环境中运行。
  2. 客户端请求: 客户端可以发送 'ListToolsRequest' 请求到服务器,获取服务器提供的工具列表。服务器会返回包含 'addVector', 'subVector', 'crossProduct', 'dotProduct' 工具信息的响应。
  3. 调用工具: 客户端可以使用 'CallToolRequest' 请求调用具体的工具,例如 'addVector'。请求中需要包含工具名称和符合工具输入 Schema 的参数,例如:
    {
      "method": "callTool",
      "params": {
        "name": "addVector",
        "arguments": {
          "v1": {"x": 1, "y": 2, "z": 3},
          "v2": {"x": 4, "y": 5, "z": 6}
        }
      },
      "id": "example-call-1"
    }
  4. 获取结果: 服务器执行工具后,会返回 'CallToolResult' 响应,其中 'content' 字段包含了工具执行的结果,例如 'addVector' 工具会返回向量加法的结果:
    {
      "jsonrpc": "2.0",
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\n  \"x\": 5,\n  \"y\": 7,\n  \"z\": 9\n}"
          }
        ]
      },
      "id": "example-call-1"
    }
    结果以 JSON 字符串形式包含在 'text' 字段中。客户端需要解析 JSON 字符串以获取结构化的结果数据。

信息

分类

AI与计算