旅行助手工具

基于Model Context Protocol (MCP)生态系统的AI旅行助手,提供实时旅行规划功能,包括网页搜索、天气预报和航班查询。

  • by Hrnt25
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Hrnt25/travel-assistant

使用说明

⚠️ 注: 这是一个学校项目,不是最终产品。它旨在用于教育目的,演示模型上下文协议(MCP)概念和Claude API集成。


具有模型上下文协议的旅行助手

1.工程概况

该项目展示了使用 模型上下文协议(MCP) 生态系统。它将Claude AI与专门的MCP服务器相结合,提供实时旅行功能,包括网络搜索、天气预报和航班可用性。

它的作用

旅行助手通过以下方式帮助用户计划旅行:

  • 搜索网络 目的地、景点和旅行提示
  • 查看天气预报 用于行程规划
  • 寻找航班选项 出发地和目的地机场之间(仅单向搜索;往返搜索尚未实现)

核心技术栈

  • API克劳德 (Anthropic)-LLM骨干负责协调所有工具
  • 模型上下文协议(MCP) -基于服务器的工具架构,实现关注点的清晰分离
  • python -服务器和代理的实现语言
  • 外部API:
    • SerpApi用于网络搜索
    • Open Meteo用于天气和地理编码
    • Amadeus用于飞行数据

运作原理

该代理使用对话界面,Claude在其中处理自然语言请求,确定需要哪些工具,调用适当的MCP服务器,并将结果综合成有用的旅行建议。每个MCP服务器独立运行,使系统模块化和可扩展。


2.项目结构

文件组织

├── agent.py                 # Main agent orchestrator
├── search_mcp.py           # Web search MCP server
├── weather_mcp.py          # Weather & geocoding MCP server
├── amadeus_mcp.py          # Flight search MCP server
├── start.bat               # Batch script to launch the agent
├── requirements.txt        # Python package dependencies
├── .env                    # Environment variables (API keys)
└── README.md              # This documentation

核心模块

agent.py

  • 协调所有MCP服务器和Claude API交互
  • 管理与用户的对话循环
  • 将工具调用从Claude路由到相应的MCP服务器
  • 通过上下文维护处理多回合对话

search_mcp.py

  • 使用SerpApi实现web搜索
  • 提供查找目的地、景点和旅行提示信息的工具
  • 返回搜索结果和链接供用户参考

weather_mcp.py

  • 连接到Open-Meteo API以获取天气数据
  • 提供地理编码,将城市名称转换为坐标
  • 返回旅行计划的预报和当前天气状况

amadeus_mcp.py

  • 与Amadeus travel API集成
  • 搜索机场之间的航班选项
  • 提供定价和日程信息

requirements.txt

  • 列出运行项目所需的所有Python依赖项
  • 包括Anthropic SDK、MCP库和API客户端

.env

  • 存储敏感的API密钥和凭据
  • 出于安全考虑,未致力于版本控制

3.快速入门

先决条件

  • Python 3.10或更高版本
  • API密钥用于:
    • 无烟煤(Claude API)
    • SerpApi(网络搜索)
    • Open Meteo(无天气,无需钥匙)
    • Amadeus(航班搜索)

安装和设置

  1. 克隆或下载项目
  2. 创建虚拟环境: python -m venv .venv
  3. 激活它: .venv\Scripts\activate (Windows)
  4. 安装依赖项: pip install -r requirements.txt
  5. 创建 .env 文件并添加API密钥
  6. 跑 start.bat 或 python agent.py

4.配置

环境变量(.env)

创建一个 .env 文件,并添加以下API密钥:

ANTHROPIC_API_KEY=your_anthropic_key_here
SERPAPI_API_KEY=your_serpapi_key_here
AMADEUS_CLIENT_ID=your_amadeus_id_here
AMADEUS_CLIENT_SECRET=your_amadeus_secret_here

API设置链接

  • Anthropic: https://console.anthropic.com
  • SerpApi: https://serpapi.com
  • 阿玛迪斯: https://developers.amadeus.com
  • 开放天气:免费(无需钥匙)

5.使用示例

代理运行后,尝试询问:

  • “明天从纽约到巴黎有什么航班?”
  • “下周巴塞罗那的天气怎么样?”
  • “在东京给我找些事情做”
  • “搜索悉尼的酒店,告诉我那里的天气”

代理将自动选择正确的工具,并将结果组合成有用的响应。


6.建筑

数据流

User Input
    ↓
Agent (agent.py)
    ↓
Claude API (processes request, identifies needed tools)
    ↓
MCP Servers (execute tools in parallel)
    ├─ search_mcp.py (web search)
    ├─ weather_mcp.py (weather/geocoding)
    └─ amadeus_mcp.py (flights)
    ↓
Claude (synthesizes results)
    ↓
User Response

每个MCP服务器都作为一个独立的进程运行,通过stdio进行通信。Claude决定调用哪些工具并自动聚合结果。


7.参考文献和资源


8.测试与调试

使用MCP检查器

使用检查器测试单个MCP服务器:

npx @modelcontextprotocol/inspector python search_mcp.py
npx @modelcontextprotocol/inspector python weather_mcp.py
npx @modelcontextprotocol/inspector python amadeus_mcp.py

这将打开一个web界面来测试工具并实时检查消息。

在调试模式下运行代理

在中添加打印语句 agent.py 查看工具调用和响应。运行时检查控制台输出 python agent.py.


9.故障排除

问题:代理未连接到服务器

  • 全部验证 .env 变量设置正确
  • 检查Python版本(3.10+)
  • 确保安装了依赖项: pip install -r requirements.txt

问题:API调用失败

  • 验证API密钥是否有效并具有适当的权限
  • 检查互联网连接
  • 一些API有速率限制;请稍候,然后重试

问题:Start.bat不起作用

  • 尝试直接跑步: python agent.py
  • 检查venv是否已激活

10.许可证和注意事项

这个项目是为了教育目的而创建的,是学校作业的一部分。它展示了MCP模式和Claude API集成。

免责声明:这不是生产就绪的软件。这是一个专注于架构和集成模式的学习项目。