使用说明

项目简介

WeatherMCP 是一个实现了 Model Context Protocol (MCP) 的应用后端服务器示例,专注于提供天气相关信息。它通过 MCP 标准协议与支持该协议的 LLM 客户端(如 Claude Desktop)进行交互,允许 LLM 调用预定义的天气查询工具,获取实时的气象数据。

主要功能点

  1. 获取气象警报: LLM 可以通过调用工具并提供美国州份代码,获取该州当前生效的气象警报信息。
  2. 获取天气预报: LLM 可以通过调用工具并提供指定地点的经纬度,获取该地点的详细天气预报信息。
  3. 支持多种传输协议: 服务器支持 Stdios 和 SSE (Server-Sent Events) 两种主要的 MCP 传输方式,方便与不同配置的 LLM 客户端集成。

安装步骤

  1. 确保您的系统已安装 Go 语言环境 (版本 1.18 或更高)。
  2. 打开终端或命令行界面。
  3. 克隆 GitHub 仓库到本地:
    git clone https://github.com/shujink0/WeatherMCP.git
    cd WeatherMCP
  4. 构建项目:
    go build
    这将在当前目录下生成一个名为 'WeatherMCP' (或 'WeatherMCP.exe' 在 Windows 上) 的可执行文件。

服务器配置

MCP 服务器通常由 MCP 客户端(如 LLM 应用)启动和管理。客户端需要知道如何启动服务器进程以及使用哪种传输方式。以下是配置 LLM 客户端连接到此 MCP 服务器所需的关键信息概念(以 JSON 格式为例,客户端实际配置时会使用这些信息):

  • 服务器名称 (server name): 用于在客户端界面标识此服务器的唯一名称,例如 '"weather-mcp-server"'。
  • 启动命令 (command): MCP 服务器可执行文件的完整路径。
    • 对于使用 Stdio 传输方式的情况,命令通常就是服务器可执行文件的路径,例如:'/path/to/your/WeatherMCP/WeatherMCP'。
    • 对于使用 SSE/WebSocket 传输方式的情况,客户端通常需要一个代理工具(如 'mcp-remote')来连接到服务器暴露的 HTTP 端点。此时,命令可能是代理工具的路径,例如 'npx' (如果使用 'mcp-remote' 并且通过 npx 运行)。
  • 启动参数 (args): 传递给启动命令的参数列表。
    • 对于使用 Stdio 传输方式的情况,参数列表通常为空 '[]'。
    • 对于使用 SSE/WebSocket 传输方式的情况,您需要先独立启动服务器监听端口(例如 './WeatherMCP -t sse'),然后客户端的代理工具需要知道服务器的地址和端口。参数列表将包含代理工具所需的连接信息,例如 '["mcp-remote", "http://localhost:8080/sse"]' (假设服务器在本地 8080 端口启动并监听 '/sse' 路径)。

注意: 客户端的实际配置界面或文件结构可能有所不同,但核心信息是指定如何启动服务器进程以及如何建立连接。请参考您使用的 LLM 客户端的 MCP 配置文档。

基本使用方法

服务器本身是一个后台进程,通常不会直接与用户交互。它由 LLM 客户端启动和管理。一旦服务器成功运行并通过 MCP 协议连接到 LLM 客户端:

  1. LLM 客户端会通过 MCP 的能力声明机制得知此服务器提供了 'get_alerts' 和 'get_forecast' 这两个工具。
  2. 当用户与 LLM 交互时,如果用户的请求意图与获取天气警报或预报相关,LLM 会判断是否应调用相应的 MCP 工具。
  3. 如果 LLM 决定调用工具,它将向 WeatherMCP 服务器发送一个 MCP 'callTool' 请求,包含工具名称 ('get_alerts' 或 'get_forecast') 及所需的参数(州份代码或经纬度)。
  4. WeatherMCP 服务器接收到请求后,会执行相应的处理函数(调用外部天气 API),并将结果(气象警报或预报文本)通过 MCP 'callTool/result' 响应返回给 LLM 客户端。
  5. LLM 客户端接收到工具执行结果后,可以将结果整合到对用户的回复中。

简单来说: 您无需直接操作服务器,只需正确配置您的 LLM 客户端使其能启动并连接到 WeatherMCP 可执行文件。之后,您在与 LLM 交流时,就可以提出天气相关的请求,LLM 会自动使用此服务器来获取信息。

信息

分类

网页与API