项目简介

本项目是一个使用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接口。

安装步骤

  1. 确保环境: 需要安装 Python 3.8 或更高版本以及 pip 工具。
  2. 创建并激活虚拟环境:
    • Windows (PowerShell):
      python -m venv venv
      .\venv\Scripts\Activate.ps1
    • macOS/Linux:
      python3 -m venv venv
      source venv/bin/activate
  3. 安装依赖: 进入项目目录,安装所需的Python库。
    pip install -r requirements.txt
  4. 启动服务器: 运行以下命令启动服务器。
    python main.py
    或者使用uvicorn直接启动(通常用于开发,支持自动重载):
    uvicorn main:app --host 0.0.0.0 --port 8000 --reload
    服务器默认将在 'http://localhost:8000' 启动。

服务器配置(供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