使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 的服务器和客户端示例,使用 SSE (Server-Sent Events) 作为通信协议。服务器端 ('weather.py') 实现了两个天气查询工具,客户端 ('client.py') 可以连接到服务器并调用这些工具。这个示例展示了如何构建解耦的MCP服务器和客户端,客户端可以独立运行并连接到远程服务器,更符合云原生应用场景。

主要功能点

  • MCP 服务器实现: 'weather.py' 作为一个 MCP 服务器,使用 'FastMCP' 框架搭建,并提供以下工具:
    • 'get_alerts(state)': 获取美国特定州的天气警报。
    • 'get_forecast(latitude, longitude)': 获取指定经纬度位置的天气预报。
  • SSE 传输: 使用 SSE 作为 MCP 服务器和客户端之间的通信协议,允许客户端连接到独立运行的服务器进程。
  • 工具注册与调用: 服务器端通过 '@mcp.tool()' 装饰器注册工具,客户端可以列出并调用这些工具。
  • 客户端示例: 'client.py' 是一个 MCP 客户端,演示了如何连接到 SSE-based MCP 服务器,列出可用工具,并根据用户查询调用工具获取天气信息。
  • Smithery 集成: 项目支持通过 Smithery 自动安装,简化部署流程 (虽然对于理解和手动配置来说不是必须的)。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/sidharthrajaram/mcp-sse.git
    cd mcp-sse
  2. 安装依赖: 确保你的Python环境中安装了必要的库。建议使用 'uv' 或 'pip' 安装 'requirements.txt' 中列出的依赖。
    uv pip install -r requirements.txt
    # 或
    pip install -r requirements.txt
  3. 配置 API 密钥: 本项目使用了 Anthropic Claude 模型,需要在 '.env' 文件中或环境变量中配置 'ANTHROPIC_API_KEY'。你需要拥有 Anthropic API 的访问权限。
    ANTHROPIC_API_KEY=your_anthropic_api_key

服务器配置

MCP 客户端需要配置服务器的连接信息才能正常工作。对于本示例,服务器配置信息如下:

{
  "serverName": "weather-sse-server",
  "command": "uv",
  "args": [
    "run",
    "weather.py",
    "--host", "0.0.0.0",
    "--port", "8080"
  ],
  "description": "启动 SSE 天气信息 MCP 服务器",
  "notes": "请确保在运行客户端之前,服务器已经成功启动。",
  "transport": "sse",
  "baseUrl": "http://0.0.0.0:8080/sse"
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义。
  • 'command': 启动服务器的命令,这里使用 'uv run' 运行 'weather.py' 脚本。
  • 'args': 传递给服务器启动命令的参数列表:
    • '"run"', '"weather.py"': 指定运行 'weather.py' 文件。
    • '"--host", "0.0.0.0"': 指定服务器监听的 host 为 '0.0.0.0' (接受所有网络接口的连接)。
    • '"--port", "8080"': 指定服务器监听的端口为 '8080'。
  • 'description': 服务器配置的描述信息。
  • 'notes': 备注信息。
  • 'transport': 指定传输协议为 'sse'。
  • 'baseUrl': SSE 服务器的 URL 地址,客户端需要连接到这个地址。

注意: 实际的 MCP 客户端可能需要你将以上 JSON 配置信息填入到客户端的配置界面或配置文件中。具体的配置方式请参考你使用的 MCP 客户端的文档。

基本使用方法

  1. 启动 MCP 服务器: 在仓库根目录下,打开终端并运行以下命令启动 'weather.py' 服务器。

    uv run weather.py

    或者,如果需要指定 host 和 port,可以使用以下命令:

    uv run weather.py --host 127.0.0.1 --port 9000

    服务器默认监听 'http://0.0.0.0:8080/sse'。

  2. 运行 MCP 客户端: 在另一个终端窗口中,同样在仓库根目录下,运行 'client.py' 客户端,并传入服务器的 SSE 地址作为参数。

    uv run client.py http://0.0.0.0:8080/sse

    如果服务器使用了不同的 host 或 port,请相应地修改客户端命令中的 URL。例如,如果服务器运行在 'http://127.0.0.1:9000/sse',则客户端命令应为:

    uv run client.py http://127.0.0.1:9000/sse
  3. 与客户端交互: 客户端启动后,会打印 'MCP Client Started!' 提示符。你可以输入自然语言查询,例如:

    Query: whats the weather like in New York?

    客户端会调用服务器提供的工具获取天气信息,并通过 Claude 模型生成回复。输入 'quit' 可以退出客户端。

提示:

  • 确保在运行客户端之前,服务器已经成功启动并且正在监听指定的地址和端口。
  • 如果遇到 API 密钥相关错误,请检查 '.env' 文件或环境变量中的 'ANTHROPIC_API_KEY' 配置是否正确。

信息

分类

网页与API