使用说明

项目简介

本项目 'mcp-server-test' 是一个基于 Model Context Protocol (MCP) 实现的天气信息服务器。它通过 MCP 协议与客户端通信,提供获取天气预警和天气预报的功能。服务器使用了美国国家气象局 (NWS) 的 API 获取天气数据,并以结构化的 JSON-RPC 响应返回给客户端。

主要功能点

  • 提供天气预警查询工具 (get-alerts): 允许客户端根据州代码查询该州当前的天气预警信息。
  • 提供天气预报查询工具 (get-forecast): 允许客户端根据经纬度查询当地的天气预报信息。
  • 基于 MCP 协议: 遵循 MCP 协议标准,易于与任何兼容 MCP 协议的客户端集成。
  • 使用 Stdio 传输: 服务器通过标准输入/输出 (stdio) 与客户端进行通信,简化部署和连接配置。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/mokoshi/mcp-server-test.git
    cd mcp-server-test
  2. 安装依赖: 确保你已经安装了 Node.js 和 npm。在项目根目录下运行:
    npm install
  3. 构建项目 (可选): 虽然可以直接运行 TypeScript 代码,但构建项目可以获得更好的性能。运行:
    npm run build
    构建后的文件将位于 'weather-server/dist' 目录。

服务器配置

MCP 客户端需要配置以下信息才能连接到此服务器。请将以下 JSON 配置添加到你的 MCP 客户端配置中:

{
  "servers": [
    {
      "name": "weather",  // 服务器名称,与代码中 McpServer 实例化的 name 属性一致
      "command": "node", // 启动服务器的命令,这里使用 node.js 运行时
      "args": [
        "weather-server/dist/index.js" // 服务器入口文件路径,如果未构建,可使用 "weather-server/src/index.ts" 并确保安装了 ts-node
      ],
      "transport": "stdio" // 使用 stdio 传输协议
    }
  ]
}

参数注释:

  • 'servers': 配置的服务器列表。
  • 'servers[].name': 服务器的唯一名称,用于客户端识别和调用。 必须与 'weather-server/src/index.ts' 中 'McpServer' 构造函数中 'name' 字段的值 '"weather"' 一致。
  • 'servers[].command': 启动服务器进程的命令。 由于此服务器是 Node.js 应用,所以设置为 '"node"'。
  • 'servers[].args': 传递给启动命令的参数列表。 这里指定了服务器入口文件 'weather-server/dist/index.js' 的路径。 如果你选择直接运行 TypeScript 代码而不是构建,并且安装了 'ts-node',则可以使用 '"weather-server/src/index.ts"' 作为入口文件路径。
  • 'servers[].transport': 指定服务器使用的传输协议。 此服务器使用标准输入/输出,所以设置为 '"stdio"'。

基本使用方法

  1. 启动服务器: MCP 客户端根据上述配置启动 'weather' 服务器。

  2. 客户端调用工具: 客户端可以使用 MCP 协议定义的 JSON-RPC 请求来调用服务器提供的工具。

    • 调用 'get-alerts' 工具示例 (假设客户端已连接并能发送 JSON-RPC 请求):

      {
        "jsonrpc": "2.0",
        "method": "tool/invoke",
        "params": {
          "tool_name": "weather/get-alerts", //  "服务器名称/工具名称" 的格式
          "arguments": {
            "state": "CA" //  州代码,例如 "CA" 代表加利福尼亚州
          }
        },
        "id": "1"
      }

      服务器将返回包含加利福尼亚州天气预警信息的 JSON-RPC 响应。

    • 调用 'get-forecast' 工具示例:

      {
        "jsonrpc": "2.0",
        "method": "tool/invoke",
        "params": {
          "tool_name": "weather/get-forecast", // "服务器名称/工具名称" 的格式
          "arguments": {
            "latitude": 34.0522, //  纬度
            "longitude": -118.2437 // 经度,例如 洛杉矶的经纬度
          }
        },
        "id": "2"
      }

      服务器将返回包含指定经纬度位置天气预报信息的 JSON-RPC 响应。

注意:

  • 工具名称需要使用 '"服务器名称/工具名称"' 的格式,例如 '"weather/get-alerts"' 和 '"weather/get-forecast"'。
  • 请确保你的 MCP 客户端能够正确发送和接收 JSON-RPC 格式的请求和响应,并根据 MCP 协议规范进行操作。
  • 本服务器依赖于美国国家气象局 (NWS) 的 API,因此查询地点需在美国国家气象局 API 服务范围内。

信息

分类

网页与API