面向工程师的MCP:从Zere到Hero🌍✈️
此存储库演示了 经典API和MCP风格工具之间的区别 使用一个更复杂但仍然直观的示例:
旅行费用和天气计划\ “我要从海得拉巴去伦敦。\ 预计的天气是什么,我应该计划多少印度卢比的粗略每日预算?”
我们在 两个世界:
api_world/–The *旧的方式*:您手动编排多个REST API。mcp_world/–The *新方式*:相同的功能被包装为 MCP工具,因此LLM(或代理)可以发现并调用它们。
______________________________________________________________________
🧠 例子背后的直觉
要回答一个看似简单的用户请求,我们实际上需要:
- 了解位置
- 将城市名称映射到坐标(用于天气) - 知道一个城市属于哪个国家
- 获取天气预报
- 调用真正的免费天气API(Open-Meteo)
- 估算每日预算
- 假设每日基本成本为 目的地货币 - 使用真实、免费的外汇API(exchangerate.host)将其转换为印度卢比
这是怎么回事 *复杂的*:
- 我们需要 多个外部系统:
- 天气API - 外汇转换API
- 我们需要 链式推理:
- city → 坐标→ 天气 - city → 国家→ 货币→ 外汇汇率→ 印度卢比预算
- 我们希望以一种 LLM可以自主使用,而不仅仅是人类开发者。
______________________________________________________________________
🧱 回购结构
complex-api-vs-mcp-trip-planner/
├── requirements.txt
├── README.md
├── src/
│ ├── __init__.py
│ ├── api_world/
│ │ ├── __init__.py
│ │ ├── weather_client.py
│ │ ├── currency_client.py
│ │ └── planner_api_style.py
│ └── mcp_world/
│ ├── __init__.py
│ ├── mcp_server.py
│ └── simulate_llm_client.py
└── notebooks/
└── trip_planner_api_vs_mcp_demo.ipynb______________________________________________________________________
🌐 第1部分-API世界(手动编排)
这 api_world 模块显示了如何 你开发商必须:
- 了解端点和查询参数
- 了解每个响应的JSON结构
- 决定调用哪个API的顺序
- 手动将所有数据粘合在一起,形成最终回复
我们使用 真实、自由的端点:
- 天气: 开放天气 –不需要API密钥
- 用于获取一个城市的7天预报(通过预先绘制的纬度/经度)
- 外汇兑换: 汇率.费用 –免费,无钥匙
- 用于从目标货币转换基本每日预算→ INR
在API世界中,您的代码分布在多个客户端和JSON有效负载上。\ 这 模特什么都不知道 关于这些能力,除非你明确提示并将其粘合在一起。
______________________________________________________________________
🤖 第2部分-MCP世界(基于工具的编排)
这 mcp_world 模块公开了与 MCP工具,使用官方Python SDK(mcp.server.fastmcp.FastMCP).
它定义了以下工具:
get_weather(city: str)\
→ 返回该城市未来几天的简明天气摘要。
estimate_daily_budget(city: str, traveler_type: str = "standard")\
→ 选择以城市货币表示的基本成本(例如,伦敦为英镑),然后转换为印度卢比。
plan_trip_summary(origin_city: str, dest_city: str, traveler_type: str = "standard")\
→ 高级编排工具 内部组成 其他工具。
与普通API的主要区别:
- MCP服务器 自我描述 可用工具:
- 工具名称 - 参数模式 - 人类可读的描述
- MCP感知客户端(如ChatGPT、Claude Desktop或您自己的代理)可以:
- 动态发现工具 - 选择何时给他们打电话 - 将它们链接到多步骤工作流程中
API让人类与机器对话。\ MCP允许机器与机器进行通信。
______________________________________________________________________
🚀 如何跑步
1.️⃣ 设置环境
git clone
cd complex-api-vs-mcp-trip-planner
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
pip install -r requirements.txt如果你运行这个 谷歌Colab,只需上传文件夹或从驱动器装载它,然后使用:
!pip install -r requirements.txt______________________________________________________________________
2.️⃣ 运行API-world演示
python -m src.api_world.planner_api_style这将:
- 通过Open Meteo获取真实天气数据
- 通过exchange.host获取真实汇率
- 打印合并摘要,如下所示:
从海德拉巴到伦敦的旅行: - 预计未来几天伦敦的气温将在… - 一个标准旅行者的粗略每日预算约为XXX印度卢比。
所有编排都是 手册.
______________________________________________________________________
3.️⃣ 运行MCP服务器
python -m src.mcp_world.mcp_server这将启动一个MCP服务器,暴露:
get_weatherestimate_daily_budgetplan_trip_summary
你可以:
- 使用任何兼容MCP的客户端连接到此服务器, 或
- 运行附带的模拟客户端:
python -m src.mcp_world.simulate_llm_client模拟客户端的行为就像一个愚蠢的LLM,它:
- 从服务器“发现”工具
- 呼叫
plan_trip_summary参数来源于自然语言风格配置 - 打印最终的结构化响应
______________________________________________________________________
🧪 笔记本演示
这 notebooks/trip_planner_api_vs_mcp_demo.ipynb 笔记本电脑是为 教学:
- 上半场:\
–显示原始API调用\ –可视化响应JSON\ –手动编排
- 下半场:\
–显示MCP工具定义\ –内省工具元数据\ –演示一个调用高级工具的模拟代理
您可以直接在中打开它 谷歌Colab 通过上传仓库或使用GitHub链接。
______________________________________________________________________
🎯 教学角度
此回购非常适合解释:
- 为什么API是低级管道
- 您可以从端点和有效载荷的角度进行思考。
- 为什么MCP工具是高级功能
- 你认为 *模型能做什么*.
- 复杂的工作流程如何变得更简单
- 旅行计划混合了天气、外汇、假设和用户类型。 - 在MCP中,所有这些都位于一个 *一小套可发现的工具*.
你可以这样构建它:
*“在API世界中,开发人员是协调者。\ 在MCP世界中,开发人员定义工具 模型 成为编排者。”*
______________________________________________________________________
快乐的教学和黑客! 🌍✈️🤖
