优秀👍 — 这是你的 完全更新 README.md ✅ 包括两者 顺序(逐一) 和 平行(同时进行) 模式 ✅ 为您的研讨会清楚地解释端口、客户端更改和图表
______________________________________________________________________
📘 README.md--MCP天气演示(模拟与实时)
🚀 概述
该项目展示了 模型上下文协议(MCP) 使用两种不同的服务器和传输模式(STDIO和HTTP/SSE):
- 🟢
weather_server.py→ 模拟/非实时天气 - 🔵
realtime_weather_server.py→ 通过Open-Meteo API直播天气
两者都公开了客户端可以发现和调用的MCP工具:
get_weather→ 静态本地数据get_realtime_weather→ 动态的、基于API的数据
你会学到:
- MCP服务器如何使用
@mcp.tool() - 客户端如何通过STDIO或HTTP(SSE)调用工具
- 如何比较本地与现场API集成
______________________________________________________________________
📁 文件夹结构
MCP_MCP_TOOLS_vs_SERVER_TOOL/
├── weather_server.py # Mock server (non-realtime)
├── realtime_weather_server.py # Live weather (Open-Meteo API)
├── client_stdio.py # Local STDIO client (spawns server)
├── client_http.py # HTTP/SSE client (connects to running server)
├── requirements.txt
└── README.md______________________________________________________________________
⚙️ 设置
python -m venv .venv
. .venv/Scripts/activate # Windows
# or source .venv/bin/activate (Linux/macOS)
pip install -r requirements.txt依赖关系包括
mcp==1.19.0httpx(用于API调用)anyio,pydantic等等。
______________________________________________________________________
🧩 如何运行Demos
您可以在中运行演示 双向 这取决于你的目标。
______________________________________________________________________
🅰️ 选项1——顺序模式(建议用于培训/幻灯片)
在此模式下,您一次运行一台服务器(默认端口8000)。
1.️⃣ 运行模拟服务器(非实时)
端子1
python weather_server.py --sse2号航站楼
python client_http.py🪄 输出示例
HTTP/SSE tools: ['get_weather']
[ok] get_weather({'city': 'Atlanta'}) -> Sunny, 28°C停止此服务器(Ctrl + C)在查看输出后。
______________________________________________________________________
2.️⃣ 运行实时服务器(通过Open Meteo实时运行)
端子1
python realtime_weather_server.py --sse2号航站楼
python client_http.py🪄 输出示例
HTTP/SSE tools: ['get_weather', 'get_realtime_weather']
[ok] get_realtime_weather({'city': 'Atlanta'}) -> Atlanta, Georgia, United States | Now: 27.8°C/82°F, Partly cloudy | Wind: 10.2 km/h | Today H/L: 30°C/86°F / 21°C/70°F✅ 最适合Demos: 简单、可预测、无端口更改。
______________________________________________________________________
🅱️ 选项2——并行模式(高级比较)
如果你想跑步 同时使用两台服务器 并在一个客户端会话中连接到两者:
1.️⃣ 更新端口
编辑底部 realtime_weather_server.py:
if args.sse:
mcp.run(transport={"type": "sse", "host": "127.0.0.1", "port": 8080})
else:
mcp.run(transport="stdio")保持 weather_server.py 默认值(端口8000)。
______________________________________________________________________
2.️⃣ 运行两台服务器
终端1——模拟服务器
python weather_server.py --sse终端2——实时服务器
python realtime_weather_server.py --sse______________________________________________________________________
3.️⃣ 更新客户端(可选)
编辑 client_http.py 如果你想两者都打电话:
SERVER_MOCK = "http://127.0.0.1:8000/sse"
SERVER_REAL = "http://127.0.0.1:8080/sse"然后连接到两个服务器并并排打印结果。
______________________________________________________________________
4.️⃣ 运行客户端
python client_http.py🪄 输出
HTTP/SSE tools from mock server: ['get_weather']
[ok] get_weather({'city': 'Atlanta'}) -> Sunny, 28°C
HTTP/SSE tools from realtime server: ['get_realtime_weather']
[ok] get_realtime_weather({'city': 'Atlanta'}) -> Atlanta, Georgia, United States | Now: 28.1°C/82.6°F, Clear sky | Wind: 9.3 km/h | Today H/L: 30°C/86°F / 20°C/68°F✅ 最适合动手工作坊: 实时比较静态和动态MCP工具。
______________________________________________________________________
🌤️ 视觉概述
🧩 顺序模式(更简单)
client_http.py ──→ weather_server.py (mock)
└─────→ realtime_weather_server.py (realtime)
(run one at a time on port 8000)⚙️ 并行模式(高级)
┌─────────────── Port 8000 ────────────────┐
client_http.py ──→ weather_server.py (mock)
└─────────────── Port 8080 ────────────────┘
└→ realtime_weather_server.py (realtime)______________________________________________________________________
🧠 主要区别
| 方面 | weather_server.py | realtime_weather_server.py |
|---|---|---|
| 工具 | get_weather | get_realtime_weather |
| 数据源 | 静态本地dict | Open-Meteo API |
| 需要互联网 | ❌ | ✅ |
| 端口 | 8000 | 8080(如果更改) |
| 用例 | 快速静态测试 | 真实的API现场演示 |
______________________________________________________________________
🧩 运输比较
| 模式 | 运输 | 描述 | 用于 |
|---|---|---|---|
| STDIO | 本地进程管道 | 主机在本地生成MCP服务器 | client_stdio.py |
| SSE | HTTP over port(事件流) | 远程式连接 | client_http.py |
______________________________________________________________________
✅ 测试版本
| 组件 | 版本 |
|---|---|
| Python | 3.12 |
| MCP SDK | 1.19.0 |
| httpx | 0.28.1 |
| 操作系统 | Windows 11 |
______________________________________________________________________
📚 参考文献
______________________________________________________________________
你想让我生成一个 可视化PNG图 (STDIO vs SSE,Mock vs Realtime)接下来要包含在README或研讨会幻灯片中吗?它将清楚地显示服务器和端口(8000对8080),以便并排比较。
