使用说明
项目简介
本项目是一个简单的 MCP (Model Context Protocol) 服务器示例,基于 Node.js 开发。它演示了如何使用 '@modelcontextprotocol/sdk' 创建一个提供工具的 MCP 服务器。本示例提供了一个天气查询工具,但数据是硬编码的,仅作为演示用途。
主要功能点
- 天气查询工具 (news): 提供一个名为 'news' 的工具,允许客户端查询指定城市的天气信息。目前支持 "new york", "delhi", "mumbai" 三个城市,返回硬编码的天气数据。对于其他城市,则返回未找到天气的提示。
- 本地 STDIO 传输: 使用 STDIO (标准输入输出) 作为 MCP 服务器的传输协议,这意味着服务器和客户端需要在同一台机器上通过命令行进行通信。
- 基础 MCP 服务器功能: 实现了 MCP 服务器的基本框架,包括服务器名称、描述和版本信息的声明,以及工具的注册和执行。
安装步骤
- 确保已安装 Node.js 和 npm: 如果你的电脑上没有安装 Node.js,请先安装 Node.js (建议使用 LTS 版本),npm 包管理器会随 Node.js 一起安装。
- 下载仓库代码: 从 GitHub 仓库 https://github.com/KrishCodesw/MCP-servers- 下载代码到本地。
- 进入项目目录: 在命令行中,进入下载代码的根目录(包含 'main.js' 和 'README.md' 文件的目录)。
- 安装依赖: 虽然示例代码中import了sdk和zod,但仓库中没有'package.json'文件,实际上没有声明依赖,根据代码推断需要安装 '@modelcontextprotocol/sdk' 和 'zod'。在项目目录下执行以下命令安装依赖:
npm install @modelcontextprotocol/sdk zod
服务器配置
MCP 客户端需要配置以下信息才能连接到此 MCP 服务器。以下是一个 JSON 格式的配置示例,你需要将其配置到你的 MCP 客户端中。
{ "serverName": "Weather Server", "command": "node", "args": ["main.js"] }
配置参数说明:
- 'serverName': MCP 服务器的名称,这里设置为 "Weather Server",与 'main.js' 代码中 'McpServer' 构造函数中定义的 'name' 属性一致。
- 'command': 启动 MCP 服务器的命令,由于本示例是 Node.js 应用,所以设置为 'node',表示使用 Node.js 运行时环境。
- 'args': 启动命令的参数,这里设置为 '["main.js"]',表示要执行 'main.js' 文件来启动 MCP 服务器。
注意: 请确保你的 MCP 客户端能够找到 'node' 命令,并且 'main.js' 文件路径相对于客户端配置的启动目录是正确的。由于是 STDIO 传输,客户端和服务端需要在同一台机器上运行。
基本使用方法
-
启动 MCP 服务器: 在命令行中,进入项目目录,并执行以下命令启动 MCP 服务器:
node main.js服务器启动后,通常不会有明显的输出,它会在后台等待 MCP 客户端的连接和请求。
-
配置并启动 MCP 客户端: 使用支持 MCP 协议的客户端软件 (例如,某些 LLM 应用或 MCP 客户端 SDK)。在客户端中,根据上述 "服务器配置" 部分的信息配置你的 MCP 服务器连接。
-
调用工具: 在 MCP 客户端中,你可以调用服务器提供的 'news' 工具来查询天气。调用工具时,需要提供 'city' 参数,例如,要查询 "new york" 的天气,你需要向服务器发送调用 'news' 工具并附带参数 '{"city": "new york"}' 的请求。
-
接收响应: MCP 服务器会处理客户端的工具调用请求,并返回 JSON 格式的响应,其中包含查询到的天气信息(或未找到天气的提示)。客户端需要解析这个 JSON 响应并展示给用户。
示例工具调用 (JSON-RPC request, 仅供参考,实际操作请参考MCP客户端文档):
{ "jsonrpc": "2.0", "method": "call", "params": { "tool_name": "news", "arguments": { "city": "new york" } }, "id": 1 }
预期响应 (JSON-RPC response, 示例):
{ "jsonrpc": "2.0", "result": { "content": [ { "type": "text", "text": "{\"temperature\":\"10C\",\"forecast\":\"High chances of rain\"}" } ] }, "id": 1 }
请注意,这只是一个非常基础的示例,实际应用中你需要根据你的需求扩展工具的功能,并考虑使用更完善的数据来源和传输协议 (例如 SSE 或 WebSocket) 以支持更复杂的应用场景。
信息
分类
网页与API