项目简介

本项目 '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 (标准输入输出):通过命令行标准输入输出与客户端通信,适用于本地或简单的集成场景。
  • 易于扩展: 可以方便地添加更多天气相关的工具或其他领域的工具,扩展服务器的功能。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/sasidharan-k/mcp-server-spike.git
    cd mcp-server-spike
  2. 安装服务器依赖:

    cd server
    npm install
    cd ..
  3. 安装客户端依赖 (如果需要运行客户端):

    cd client
    npm install
    cd ..
  4. 设置 OpenAI API 密钥 (如果需要运行客户端):

    • 在 'client' 目录下创建 '.env' 文件,并添加你的 OpenAI API 密钥:
      OPENAI_API_KEY=你的_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 示例)**

  1. 启动 Stdio 服务器: 在项目根目录下,打开终端并运行:

    node server/src/transport/stdio/index.js

    服务器将在控制台输出 "Weather MCP Server running on stdio"。

  2. 运行 Stdio 客户端: 在项目根目录下,打开另一个终端并运行客户端,并指定服务器脚本路径作为参数:

    node client/src/stdio/index.js server/src/transport/stdio/index.js

    客户端连接成功后,会提示 "MCP Client Started!"。

  3. 与客户端交互: 在客户端终端的 "Query:" 提示符后,输入自然语言查询,例如:

    • 'get alerts for California'
    • 'forecast for latitude 34.05 and longitude -118.24' (洛杉矶)

    客户端将调用 OpenAI 模型理解你的查询,并根据需要调用 'get-alerts' 或 'get-forecast' 工具从 MCP 服务器获取天气信息,最终将结果返回给你。

  4. 退出客户端: 在 "Query:" 提示符后输入 'quit' 并回车即可退出客户端。

注意: 本示例客户端使用了 OpenAI 的 'gpt-3.5-turbo' 模型来理解用户查询和调用工具,你需要确保已配置有效的 OpenAI API 密钥才能正常使用客户端的全部功能。

信息

分类

网页与API