使用说明

项目简介

TMCP (Try to learn the MCP server) 是一个用于学习和探索 MCP 服务器的项目,它实现了一个简单的天气信息查询 MCP 服务器。该服务器通过定义和注册工具,向 MCP 客户端提供查询美国天气警报和天气预报的功能。这是一个学习和演示 MCP 服务器基本概念的实用示例。

主要功能点

  • 天气警报查询工具 (get_alerts): 允许用户查询美国特定州的天气警报信息。
  • 天气预报查询工具 (get_forecast): 允许用户查询指定经纬度位置的天气预报信息。
  • 基于 FastMCP 框架: 使用 'fastmcp' 库简化 MCP 服务器的开发。
  • Stdio 传输协议: 默认使用标准输入输出 (stdio) 作为 MCP 通信的传输协议。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Zdmai/TMCP.git
  2. 进入项目目录:
    cd TMCP/weather
  3. 安装依赖 (如果需要): 虽然此示例代码非常简单,没有显式依赖,但在实际环境中,你可能需要安装 'httpx' 和 'mcp' 库 (如果 'fastmcp' 不是自带 'mcp' 库的话)。通常,'fastmcp' 已经包含了 'mcp' 库。如果运行报错缺少依赖,请使用 pip 安装:
    pip install httpx mcp

服务器配置

MCP 客户端需要配置以下 JSON 信息才能连接到 TMCP 天气服务器。请注意,这里的命令和参数是基于你将 'weather/weather.py' 文件放在 'TMCP/weather' 目录下的情况。

{
  "serverName": "weather",  // MCP 服务器名称,在 weather/weather.py 中定义为 FastMCP("weather")
  "command": "python",      // 启动 MCP 服务器的命令,这里使用 python 解释器
  "args": [                 // 启动命令的参数列表
    "weather/weather.py"   // MCP 服务器脚本的路径,相对于 TMCP 仓库根目录或客户端工作目录
  ]
}

配置说明:

  • '"serverName"': 必须与 'weather/weather.py' 中 'FastMCP()' 构造函数中定义的名称一致,本例中为 '"weather"'。
  • '"command"': 指定用于启动服务器的命令,通常是你的 Python 解释器路径。确保 'python' 命令在你的系统 PATH 环境变量中可用,或者使用 Python 解释器的完整路径。
  • '"args"': 一个字符串数组,包含传递给 'command' 的参数。这里 '"weather/weather.py"' 是服务器脚本的相对路径。客户端程序需要根据实际情况调整脚本路径,确保能够找到并执行 'weather/weather.py' 文件。

重要提示: MCP 客户端需要能够执行 'python weather/weather.py' 命令来启动服务器。请确保你的系统已安装 Python,并且 'weather/weather.py' 文件路径对于客户端是可访问的。

基本使用方法

  1. 启动 MCP 服务器: 当 MCP 客户端尝试连接配置的 "weather" 服务器时,客户端会根据配置的 'command' 和 'args' 启动 'weather/weather.py' 脚本,从而启动 TMCP 天气服务器。
  2. 客户端发现工具: MCP 客户端连接成功后,可以向服务器发送请求以发现可用的工具。TMCP 天气服务器将声明 'get_alerts' 和 'get_forecast' 这两个工具。
  3. 调用工具: 客户端可以使用 'get_alerts' 工具查询指定州的天气警报,或使用 'get_forecast' 工具查询指定经纬度的天气预报。例如,客户端可以构造 JSON-RPC 请求来调用这些工具,并传递相应的参数(州代码或经纬度)。
  4. 接收响应: 服务器执行工具后,会将结果以 JSON-RPC 响应的形式返回给客户端。

示例工具调用 (非实际代码,仅为概念演示):

假设客户端要调用 'get_alerts' 工具查询加州 (CA) 的天气警报,客户端可能发送如下 JSON-RPC 请求 (具体请求格式请参考 MCP 协议文档):

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "tool_name": "get_alerts",
    "arguments": {
      "state": "CA"
    }
  },
  "id": 1
}

服务器收到请求后,会执行 'get_alerts("CA")' 函数,并将返回的天气警报信息封装成 JSON-RPC 响应返回给客户端。

信息

分类

网页与API