项目简介
本项目 'mcp-server-spike' 是一个实现了 Model Context Protocol (MCP) 的天气信息服务器。它通过注册 'get-alerts' 和 'get-forecast' 工具,向兼容 MCP 协议的客户端提供获取天气警报和预报的功能。服务器可以通过 Server-Sent Events (SSE) 或 Stdio (标准输入输出) 两种传输协议与客户端通信。
主要功能点
- 提供天气工具:
- 'get-alerts': 获取指定州的天气警报信息。
- 'get-forecast': 获取指定经纬度位置的天气预报信息。
- 支持多种传输协议:
- Server-Sent Events (SSE):基于 HTTP 的单向服务器推送技术,用于实时向客户端发送天气更新。
- Stdio (标准输入输出):通过命令行标准输入输出与客户端通信,适用于本地或简单的集成场景。
- 易于扩展: 可以方便地添加更多天气相关的工具或其他领域的工具,扩展服务器的功能。
安装步骤
-
克隆仓库:
git clone https://github.com/sasidharan-k/mcp-server-spike.git cd mcp-server-spike -
安装服务器依赖:
cd server npm install cd .. -
安装客户端依赖 (如果需要运行客户端):
cd client npm install cd .. -
设置 OpenAI API 密钥 (如果需要运行客户端):
- 在 'client' 目录下创建 '.env' 文件,并添加你的 OpenAI API 密钥:
OPENAI_API_KEY=你的_OpenAI_API_密钥
- 在 'client' 目录下创建 '.env' 文件,并添加你的 OpenAI API 密钥:
服务器配置
MCP 客户端配置 (以 Stdio 传输协议为例):
MCP 客户端需要配置连接到 MCP 服务器的命令和参数。以下是针对本仓库 'stdio' 服务器的配置示例 (JSON 格式):
{ "serverName": "weather", "command": "node", "args": ["server/src/transport/stdio/index.js"] }
参数注释:
- 'serverName': 服务器名称,本仓库设置为 "weather"。
- 'command': 启动 MCP 服务器的命令,这里使用 'node' 运行 JavaScript 文件。
- 'args': 命令参数,指定服务器入口文件 'server/src/transport/stdio/index.js'。
如果使用 SSE 传输协议,客户端需要连接到服务器的 SSE 端点。 SSE 服务器运行后,默认在 'http://localhost:4000/sse' 提供 SSE 端点。 客户端需要配置连接到此 URL。 (本仓库提供的客户端代码只演示了 Stdio 连接方式,SSE 客户端代码需要自行实现或参考 MCP 协议文档。)
基本使用方法 (Stdio 示例)**
-
启动 Stdio 服务器: 在项目根目录下,打开终端并运行:
node server/src/transport/stdio/index.js服务器将在控制台输出 "Weather MCP Server running on stdio"。
-
运行 Stdio 客户端: 在项目根目录下,打开另一个终端并运行客户端,并指定服务器脚本路径作为参数:
node client/src/stdio/index.js server/src/transport/stdio/index.js客户端连接成功后,会提示 "MCP Client Started!"。
-
与客户端交互: 在客户端终端的 "Query:" 提示符后,输入自然语言查询,例如:
- 'get alerts for California'
- 'forecast for latitude 34.05 and longitude -118.24' (洛杉矶)
客户端将调用 OpenAI 模型理解你的查询,并根据需要调用 'get-alerts' 或 'get-forecast' 工具从 MCP 服务器获取天气信息,最终将结果返回给你。
-
退出客户端: 在 "Query:" 提示符后输入 'quit' 并回车即可退出客户端。
注意: 本示例客户端使用了 OpenAI 的 'gpt-3.5-turbo' 模型来理解用户查询和调用工具,你需要确保已配置有效的 OpenAI API 密钥才能正常使用客户端的全部功能。
信息
分类
网页与API