使用说明

项目简介

本项目是一个结合了Haystack和Model Context Protocol (MCP) 的示例,展示了如何构建一个智能旅行规划代理。核心部分并非代理本身,而是其所依赖的 多个MCP服务器,这些服务器提供代理所需的各种上下文信息和外部功能,例如地图数据、天气预报、用户偏好存储和网页搜索。该仓库包含了启动这些MCP服务器所需配置和代码(通过Docker Compose管理),以及一个使用这些服务的客户端代理示例。

主要功能点

本项目包含并启动以下MCP服务器,它们通过标准的MCP协议对外提供服务:

  1. 地图服务: 提供地理编码(地名转坐标)、地点搜索(如餐馆、景点)等功能。
  2. 天气服务: 提供指定地点的天气预报信息。
  3. 用户偏好服务: 基于Qdrant向量数据库,提供用户旅行偏好的存储和检索功能,支持个性化规划。
  4. 搜索服务: 提供网页搜索功能,获取实时信息。

这些服务器通过统一的MCP接口向客户端(如本项目中的 Haystack 代理)暴露其能力(资源、工具、Prompt)。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/vblagoje/itinerary-agent.git
    cd itinerary-agent
  2. 安装Python依赖: 建议先创建并激活虚拟环境。
    python -m venv venv
    source venv/bin/activate # Windows 用户使用 'venv\Scripts\activate'
    pip install -r requirements.txt
  3. 配置环境变量: 在项目根目录创建 '.env' 文件,填入所需API密钥。
    GOOGLE_MAPS_API_KEY=你的Google Maps API密钥
    OPENWEATHER_API_KEY=你的OpenWeatherMap API密钥
    BRAVE_API_KEY=你的Brave Search API密钥
    OPENAI_API_KEY=你的OpenAI API密钥 (如果使用OpenAI模型)
    # 可选的Langfuse配置
    # LANGFUSE_SECRET_KEY=...
    # LANGFUSE_PUBLIC_KEY=...
    # LANGFUSE_HOST=...
    # HAYSTACK_CONTENT_TRACING_ENABLED=true
    请根据需要获取并填写对应的API密钥。
  4. 启动MCP服务: 使用Docker Compose启动所有MCP服务器和Qdrant数据库。
    docker-compose up
    服务启动后,会在本地监听指定端口。

服务器配置 (供MCP客户端连接参考)

本项目启动了多个MCP服务器。一个MCP客户端需要知道如何连接到这些服务器。典型的MCP客户端配置需要服务器的名称、连接协议和地址。本项目启动的服务默认通过SSE协议在本地运行,其连接信息如下:

  • 服务名称: 'maps_toolset' (地图服务)
    • 连接协议: SSE
    • 默认地址: 'http://localhost:8100/sse'
    • 提供的能力: 地理编码、地点搜索等工具。
  • 服务名称: 'weather_toolset' (天气服务)
    • 连接协议: SSE
    • 默认地址: 'http://localhost:8101/sse'
    • 提供的能力: 天气预报工具。
  • 服务名称: 'preferences_toolset' (用户偏好服务)
    • 连接协议: SSE
    • 默认地址: 'http://localhost:8102/sse'
    • 提供的能力: 用户偏好存储与检索工具。
  • 服务名称: 'brave_search_toolset' (搜索服务)
    • 连接协议: SSE
    • 默认地址: 'http://localhost:8103/sse'
    • 提供的能力: 网页搜索工具。

MCP客户端可以根据这些信息配置连接,并通过MCP协议调用服务器提供的工具或访问资源。本项目提供的'itinerary_agent.py'就是一个使用这些连接信息的MCP客户端示例。

基本使用方法

  1. 确保已完成安装并使用 'docker-compose up' 启动了MCP服务。
  2. (可选)使用一个MCP客户端工具(如MCP Inspector)连接到用户偏好服务 ('http://localhost:8102'),调用 'qdrant-store' 工具存储你的旅行偏好描述,以便代理提供个性化结果。
  3. 运行示例客户端代理脚本:
    python itinerary_agent.py
    脚本会调用运行中的MCP服务和配置的LLM来生成旅行规划,并将结果输出到终端。你可以直接修改 'itinerary_agent.py' 中的查询内容来获取不同的旅行规划。

信息

分类

网页与API