使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现示例,它通过 MCP 协议向客户端提供天气查询和用户管理的功能。该服务器使用 Stdio 传输协议,并提供了两个工具:'getWeatherByCityName' 用于查询城市天气,'get_users' 和 'add_user' 用于用户信息的管理。
主要功能点
- 天气查询工具 (getWeatherByCityName): 允许客户端查询指定城市的天气信息。目前仅支持 "patiala", "jalna", "mumbai" 这三个城市,返回简单的温度和天气预报信息。
- 用户管理工具 (get_users, add_user):
- 'get_users': 从 MongoDB 数据库中获取所有用户的信息。
- 'add_user': 向 MongoDB 数据库中添加新的用户,需要提供用户名和邮箱。
- 基于 MCP 协议: 遵循 MCP 协议规范,使用 JSON-RPC 格式进行客户端和服务器端的数据交互。
- Stdio 传输: 使用标准输入输出 (Stdio) 作为 MCP 服务器的传输协议,方便本地测试和部署。
- 工具注册: 通过 'server.tool()' 方法注册工具,定义工具的名称、参数和执行逻辑。
- MongoDB 集成: 使用 MongoDB 数据库存储用户信息,演示了 MCP 服务器与外部数据源的集成。
安装步骤
-
克隆仓库:
git clone https://github.com/AayushKarwa/mcp-server-test.git cd mcp-server-test -
安装依赖: 确保已安装 Node.js 和 npm (或 yarn)。在项目根目录下运行:
npm install -
配置环境变量:
- MongoDB 连接 URI: 需要在项目根目录下创建 '.env' 文件,并添加 MongoDB 连接 URI。例如:
请替换 'your_mongodb_connection_string' 和 'your_database_name' 为您实际的 MongoDB 连接信息和数据库名称。如果本地没有 MongoDB 服务,你需要先安装并运行 MongoDB 服务。MONGODB_URI=mongodb://your_mongodb_connection_string/your_database_name
- MongoDB 连接 URI: 需要在项目根目录下创建 '.env' 文件,并添加 MongoDB 连接 URI。例如:
-
构建项目: 由于项目是 TypeScript 编写的,需要先进行编译:
npm run build -
启动服务器: 运行以下命令启动 MCP 服务器:
npm start服务器启动后,将在控制台输出 "Starting weather server...",并等待 MCP 客户端通过 Stdio 进行连接和请求。
服务器配置
MCP 客户端需要配置以下 JSON 信息来连接到此 MCP 服务器。以下配置信息为示例,请根据实际情况调整:
{ "serverName": "Weather Server", "command": "node", "args": ["dist/index.js"] }
配置参数说明:
- 'serverName': 服务器名称,这里设置为 "Weather Server",与代码中 'McpServer' 实例化的 'name' 属性一致。
- 'command': 启动服务器的命令,这里使用 'node' 命令来执行 JavaScript 文件。
- 'args': 命令参数,这里指定服务器入口文件为 'dist/index.js' (编译后的 JavaScript 文件路径)。
注意: MCP 客户端需要能够执行 'node' 命令,并确保 'dist/index.js' 文件路径相对于客户端的工作目录是正确的。
基本使用方法
此 MCP 服务器通过 Stdio 与客户端通信。客户端需要发送符合 JSON-RPC 格式的请求到服务器的标准输入 (stdin),并从服务器的标准输出 (stdout) 读取 JSON-RPC 响应。
示例请求 (JSON-RPC over Stdio):
1. 调用 'getWeatherByCityName' 工具查询天气:
{ "jsonrpc": "2.0", "method": "call", "params": { "tool_id": "getWeatherByCityName", "arguments": { "city": "mumbai" } }, "id": "1" }
预期响应 (stdout):
{ "jsonrpc": "2.0", "id": "1", "result": { "content": [ { "type": "text", "text": "{\"temp\":\"42C\",\"forecase\":\"jal jaoge\"}" } ] } }
2. 调用 'get_users' 工具获取所有用户:
{ "jsonrpc": "2.0", "method": "call", "params": { "tool_id": "get_users", "arguments": {} }, "id": "2" }
预期响应 (stdout): (响应内容会根据数据库中实际用户数据而变化)
{ "jsonrpc": "2.0", "id": "2", "result": { "content": [ { "type": "text", "text": "[{\"_id\":\"...\",\"name\":\"User1\",\"email\":\"[email protected]\",\"__v\":0},{\"_id\":\"...\",\"name\":\"User2\",\"email\":\"[email protected]\",\"__v\":0}]" } ] } }
3. 调用 'add_user' 工具添加用户:
{ "jsonrpc": "2.0", "method": "call", "params": { "tool_id": "add_user", "arguments": { "name": "New User", "email": "[email protected]" } }, "id": "3" }
预期响应 (stdout):
{ "jsonrpc": "2.0", "id": "3", "result": { "content": [ { "type": "text", "text": "User New User added successfully" } ] } }
请参考 MCP 协议文档和客户端 SDK,构建 MCP 客户端来与此服务器进行交互。
信息
分类
网页与API