项目简介
本项目是一个使用Python的FastAPI框架构建的MCP(Model Context Protocol)服务器示例。它实现了MCP协议,为LLM客户端提供上下文信息和功能。该服务器集成了美国国家气象局(NWS)的API,提供了获取天气预报和天气警报的工具。
主要功能点
- MCP协议支持: 完全遵循Model Context Protocol规范,通过JSON-RPC 2.0与兼容的LLM客户端通信。
- 流式HTTP传输: 支持通过HTTP进行流式通信,便于与MCP Inspector等客户端连接。
- 天气工具:
- 'get_alerts':根据美国州代码获取天气警报信息。
- 'get_forecast':根据经纬度获取地点的5天天气预报。
- 示例资源: 包含一个基础的示例资源,演示资源访问能力。
- 能力声明: 服务器可以向客户端报告其支持的功能(如工具列表、资源订阅等)。
- RESTful API补充: 除了MCP端点,还提供查询工具和资源的REST接口。
安装步骤
- 确保环境: 需要安装 Python 3.8 或更高版本以及 pip 工具。
- 创建并激活虚拟环境:
- Windows (PowerShell):
python -m venv venv .\venv\Scripts\Activate.ps1 - macOS/Linux:
python3 -m venv venv source venv/bin/activate
- Windows (PowerShell):
- 安装依赖: 进入项目目录,安装所需的Python库。
pip install -r requirements.txt - 启动服务器: 运行以下命令启动服务器。
或者使用uvicorn直接启动(通常用于开发,支持自动重载):python main.py
服务器默认将在 'http://localhost:8000' 启动。uvicorn main:app --host 0.0.0.0 --port 8000 --reload
服务器配置(供MCP客户端参考)
此MCP服务器通过 HTTP传输 方式工作。MCP客户端(如MCP Inspector)连接时,需要知道服务器的HTTP地址和MCP端点路径。
配置信息通常以JSON格式保存在客户端的配置文件中(例如 'mcp-config.json')。一个典型的客户端配置片段需要包含以下信息:
- 服务器名称: 例如 '"weather-mcp-server-local"' (本地) 或 '"weather-mcp-server-azure"' (部署在Azure上)。这是一个用户友好的标识符。
- 传输类型: 指定 '"type": "http"'。
- 服务器URL: MCP客户端需要连接到的HTTP地址。本地运行时通常是 '"http://localhost:8000/mcp/stream"'。如果部署在云端(如Azure),则是对应的云服务URL加上 '/mcp/stream' 路径。
- 用户友好名称和描述: 可选,用于客户端界面显示。
MCP客户端根据这些配置信息与服务器建立连接,而不是直接执行服务器的启动命令。
基本使用方法
服务器启动后,它会监听指定的端口(默认为8000)。LLM客户端或开发者可以通过发送遵循MCP JSON-RPC规范的HTTP POST请求到 '/mcp/stream' 端点与服务器交互。
- 初始化连接: 客户端发送 'initialize' 方法请求,服务器返回其协议版本和能力。
- 发现工具: 客户端发送 'tools/list' 方法请求,获取服务器提供的工具列表及其描述和参数结构。
- 调用工具: 客户端发送 'tools/call' 方法请求,指定工具名称(如 '"get_alerts"' 或 '"get_forecast"')并提供相应的参数(如州代码或经纬度)。服务器调用内部逻辑(此处是调用NWS API),并将结果作为JSON-RPC响应返回给客户端。
- 发现资源: 客户端发送 'resources/list' 方法请求,获取服务器提供的资源列表。
- 读取资源: 客户端发送 'resources/read' 方法请求,指定资源的URI(如 '"mcp://server/sample"'),服务器返回资源内容。
项目的 README 中提供了使用 'curl' 或 Python 客户端进行测试的示例命令,可以作为理解MCP请求结构的参考。
信息
分类
网页与API