使用说明
项目简介
TMCP (Try to learn the MCP server) 是一个用于学习和探索 MCP 服务器的项目,它实现了一个简单的天气信息查询 MCP 服务器。该服务器通过定义和注册工具,向 MCP 客户端提供查询美国天气警报和天气预报的功能。这是一个学习和演示 MCP 服务器基本概念的实用示例。
主要功能点
- 天气警报查询工具 (get_alerts): 允许用户查询美国特定州的天气警报信息。
- 天气预报查询工具 (get_forecast): 允许用户查询指定经纬度位置的天气预报信息。
- 基于 FastMCP 框架: 使用 'fastmcp' 库简化 MCP 服务器的开发。
- Stdio 传输协议: 默认使用标准输入输出 (stdio) 作为 MCP 通信的传输协议。
安装步骤
- 克隆仓库:
git clone https://github.com/Zdmai/TMCP.git - 进入项目目录:
cd TMCP/weather - 安装依赖 (如果需要):
虽然此示例代码非常简单,没有显式依赖,但在实际环境中,你可能需要安装 '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' 文件路径对于客户端是可访问的。
基本使用方法
- 启动 MCP 服务器: 当 MCP 客户端尝试连接配置的 "weather" 服务器时,客户端会根据配置的 'command' 和 'args' 启动 'weather/weather.py' 脚本,从而启动 TMCP 天气服务器。
- 客户端发现工具: MCP 客户端连接成功后,可以向服务器发送请求以发现可用的工具。TMCP 天气服务器将声明 'get_alerts' 和 'get_forecast' 这两个工具。
- 调用工具: 客户端可以使用 'get_alerts' 工具查询指定州的天气警报,或使用 'get_forecast' 工具查询指定经纬度的天气预报。例如,客户端可以构造 JSON-RPC 请求来调用这些工具,并传递相应的参数(州代码或经纬度)。
- 接收响应: 服务器执行工具后,会将结果以 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