使用说明
项目简介
本项目是一个使用 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' 能力。
安装步骤
- 克隆仓库
git clone https://github.com/bterlson/typespec-mcp - 进入演示服务器目录
cd typespec-mcp/packages/demo - 安装依赖
npm install - 构建项目
构建成功后,服务器代码将生成在 'packages/demo/dist' 目录中。npm run build
服务器配置
以下 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',表示使用标准输入输出。
基本使用方法
- 启动服务器: MCP 客户端根据上述配置启动服务器。由于配置中使用的是 Stdio 传输,服务器会作为子进程在客户端环境中运行。
- 客户端请求: 客户端可以发送 'ListToolsRequest' 请求到服务器,获取服务器提供的工具列表。服务器会返回包含 'addVector', 'subVector', 'crossProduct', 'dotProduct' 工具信息的响应。
- 调用工具: 客户端可以使用 '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" } - 获取结果: 服务器执行工具后,会返回 'CallToolResult' 响应,其中 'content' 字段包含了工具执行的结果,例如 'addVector' 工具会返回向量加法的结果:
结果以 JSON 字符串形式包含在 'text' 字段中。客户端需要解析 JSON 字符串以获取结构化的结果数据。{ "jsonrpc": "2.0", "result": { "content": [ { "type": "text", "text": "{\n \"x\": 5,\n \"y\": 7,\n \"z\": 9\n}" } ] }, "id": "example-call-1" }
信息
分类
AI与计算