使用说明
🧩 MCP实验室
最低限度 模型上下文协议(MCP) 实验室演示:
- 真正的基于stdio的MCP服务器(
mcp_server_demo.py,mcp_server_system.py) - 轻量级HTTP网桥(
app_http_bridge.py)用于网络访问 - 一个简单的HTML/JS前端
- 异步Python代理/CLI
一切都在运转 本地,不需要外部API密钥。
📦 包括什么
🧠 MCP服务器
| 文件 | 描述 | 工具 |
|---|---|---|
mcp_server_demo.py |
主演示服务器 | now (当前UTC时间)• weather(city) (通过Open-Meteo) |
mcp_server_system.py |
“你知道我是谁吗?”练习 | system_info (用户名、操作系统、版本) |
每个服务器都使用官方 mcp 图书馆和通信通过 标准.
🌉 HTTP网桥
| 文件 | 描述 |
|---|---|
app_http_bridge.py |
Flask桥暴露 /tools 和 /call 端点,为每个请求在内部生成MCP服务器。使用CORS启用浏览器访问。 |
终点:
GET /tools?server=demo|system→ 列出工具POST /call→ 执行工具({"name":"now","arguments":{},"server":"demo"})
💻 前端(普通HTML/JS)
| 文件 | 描述 |
|---|---|
index.html |
调用网桥端点的Web UI(RTL希伯来语布局)。包括以下按钮 now, weather,以及 system_info. |
🐍 CLI/代理
| 文件 | 描述 |
|---|---|
agent_demo.py |
异步Python客户端,通过stdio连接到MCP服务器,列出工具,并按照练习中的描述执行实验室流程。 |
⚙️ 需求
- python 3.10+
pip(最新)- 互联网连接(适用于天气API)
🚀 快速开始
1.️⃣ 创建和激活虚拟环境
# Windows (PowerShell)
python -m venv venv
.env\Scripts\Activate.ps1
# Linux/Mac
python -m venv venv
source venv/bin/activate
2.️⃣ 再进行
pip install flask flask-cors mcp httpx
3.️⃣ 运行HTTP网桥
python app_http_bridge.py
桥在 http://127.0.0.1:5000
您应该看到类似以下内容:
[bridge] launch: python -u mcp_server_demo.py ...
4.️⃣ 测试端点(PowerShell)
# Health
irm "http://127.0.0.1:5000/"
# List tools (demo server)
irm "http://127.0.0.1:5000/tools?server=demo" | ConvertTo-Json -Depth 5
# Call tool: now
$body = '{"name":"now","arguments":{},"server":"demo"}'
irm "http://127.0.0.1:5000/call" -Method Post -ContentType 'application/json' -Body $body | ConvertTo-Json -Depth 5
预期产量:
{
"ok": true,
"server": "demo",
"tool": "now",
"content": [
{ "type": "text", "text": "2025-11-06T21:32:30.548Z" }
]
}
5.️⃣ 运行Web UI
# In another terminal
python -m http.server 5500
然后打开 http://127.0.0.1:5500/index.html
确保
app_http_bridge.py正在后台运行。
6.️⃣ 运行MCP代理(stdio)
python agent_demo.py
预期产量:
--- Tools available ---
- now: Returns the current server time in ISO 8601 (UTC).
- weather: Get current weather for a city using Open-Meteo (no API key).
== Task 1: What time is it right now? Return ISO time.
2025-11-06T21:32:30.548Z
== Task 2: What's the current weather in Tel Aviv?
The current weather in Tel Aviv is 24°C, windspeed 6 km/h.
🧠 备注
- MCP服务器严格通过 标准不是HTTP。
Flask桥仅在HTTP(用于浏览器)和stdio(用于MCP)之间进行转换。 - MCP服务器内的所有日志记录都转到 标准错误 仅限(stdout保留用于协议JSON)。
- 这
weather工具使用 开放气象API (不需要API密钥)。 - 项目结构遵循 “MCP服务器演示——首次实验室” 运动规范。
🧪 可选增强功能
- 添加Olama动力
ask_llm用于模型驱动工具调用的工具。 - 在网桥中实现持久的MCP会话,以获得更快的响应。
- 扩展Web UI以动态发现工具
/tools.
🖼️ 架构概述
Browser (index.html)
│
▼
HTTP (CORS)
│
▼
Flask Bridge ───▶ MCP Server (stdio)
/tools, /call ├── now()
├── weather(city)
└── system_info()
©2025-MCP实验室教育项目
