使用说明
项目简介
本项目是一个基于 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 自动安装,简化部署流程 (虽然对于理解和手动配置来说不是必须的)。
安装步骤
- 克隆仓库:
git clone https://github.com/sidharthrajaram/mcp-sse.git cd mcp-sse - 安装依赖:
确保你的Python环境中安装了必要的库。建议使用 'uv' 或 'pip' 安装 'requirements.txt' 中列出的依赖。
uv pip install -r requirements.txt # 或 pip install -r requirements.txt - 配置 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 客户端的文档。
基本使用方法
-
启动 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'。
-
运行 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 -
与客户端交互: 客户端启动后,会打印 'MCP Client Started!' 提示符。你可以输入自然语言查询,例如:
Query: whats the weather like in New York?客户端会调用服务器提供的工具获取天气信息,并通过 Claude 模型生成回复。输入 'quit' 可以退出客户端。
提示:
- 确保在运行客户端之前,服务器已经成功启动并且正在监听指定的地址和端口。
- 如果遇到 API 密钥相关错误,请检查 '.env' 文件或环境变量中的 'ANTHROPIC_API_KEY' 配置是否正确。
信息
分类
网页与API