旅行规划工具

MCP for Engineers: Zere-to-Hero 是一个演示传统API与MCP风格工具差异的示例项目,通过旅行成本和天气规划场景展示如何将多个API封装为MCP工具,以便LLM或代理自主调用。

  • by praveenkumar-pokala
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 praveenkumar-pokala/MCP-for-Engineers

使用说明

面向工程师的MCP:从Zere到Hero🌍✈️

此存储库演示了 经典API和MCP风格工具之间的区别 使用一个更复杂但仍然直观的示例:

旅行费用和天气计划
“我要从海得拉巴去伦敦。
预计的天气是什么,我应该计划多少印度卢比的粗略每日预算?”

我们在 两个世界:

  1. api_world/ –The 旧的方式:您手动编排多个REST API。
  2. mcp_world/ –The 新方式:相同的功能被包装为 MCP工具,因此LLM(或代理)可以发现并调用它们。

🧠 例子背后的直觉

要回答一个看似简单的用户请求,我们实际上需要:

  1. 了解位置
    • 将城市名称映射到坐标(用于天气)
    • 知道一个城市属于哪个国家
  2. 获取天气预报
    • 调用真正的免费天气API(Open-Meteo)
  3. 估算每日预算
    • 假设每日基本成本为 目的地货币
    • 使用真实、免费的外汇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 <this-repo-url>
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_weather
  • estimate_daily_budget
  • plan_trip_summary

你可以:

  • 使用任何兼容MCP的客户端连接到此服务器, 或
  • 运行附带的模拟客户端:
python -m src.mcp_world.simulate_llm_client

模拟客户端的行为就像一个愚蠢的LLM,它:

  1. 从服务器“发现”工具
  2. 呼叫 plan_trip_summary 参数来源于自然语言风格配置
  3. 打印最终的结构化响应

🧪 笔记本演示

这 notebooks/trip_planner_api_vs_mcp_demo.ipynb 笔记本电脑是为 教学:

  • 上半场:
    –显示原始API调用
    –可视化响应JSON
    –手动编排

  • 下半场:
    –显示MCP工具定义
    –内省工具元数据
    –演示一个调用高级工具的模拟代理

您可以直接在中打开它 谷歌Colab 通过上传仓库或使用GitHub链接。


🎯 教学角度

此回购非常适合解释:

  1. 为什么API是低级管道
    • 您可以从端点和有效载荷的角度进行思考。
  2. 为什么MCP工具是高级功能
    • 你认为 模型能做什么.
  3. 复杂的工作流程如何变得更简单
    • 旅行计划混合了天气、外汇、假设和用户类型。
    • 在MCP中,所有这些都位于一个 一小套可发现的工具.

你可以这样构建它:

“在API世界中,开发人员是协调者。
在MCP世界中,开发人员定义工具 模型 成为编排者。”


快乐的教学和黑客! 🌍✈️🤖