使用说明
项目简介
本项目是一个结合了Haystack和Model Context Protocol (MCP) 的示例,展示了如何构建一个智能旅行规划代理。核心部分并非代理本身,而是其所依赖的 多个MCP服务器,这些服务器提供代理所需的各种上下文信息和外部功能,例如地图数据、天气预报、用户偏好存储和网页搜索。该仓库包含了启动这些MCP服务器所需配置和代码(通过Docker Compose管理),以及一个使用这些服务的客户端代理示例。
主要功能点
本项目包含并启动以下MCP服务器,它们通过标准的MCP协议对外提供服务:
- 地图服务: 提供地理编码(地名转坐标)、地点搜索(如餐馆、景点)等功能。
- 天气服务: 提供指定地点的天气预报信息。
- 用户偏好服务: 基于Qdrant向量数据库,提供用户旅行偏好的存储和检索功能,支持个性化规划。
- 搜索服务: 提供网页搜索功能,获取实时信息。
这些服务器通过统一的MCP接口向客户端(如本项目中的 Haystack 代理)暴露其能力(资源、工具、Prompt)。
安装步骤
- 克隆仓库:
git clone https://github.com/vblagoje/itinerary-agent.git cd itinerary-agent - 安装Python依赖: 建议先创建并激活虚拟环境。
python -m venv venv source venv/bin/activate # Windows 用户使用 'venv\Scripts\activate' pip install -r requirements.txt - 配置环境变量: 在项目根目录创建 '.env' 文件,填入所需API密钥。
请根据需要获取并填写对应的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 - 启动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客户端示例。
基本使用方法
- 确保已完成安装并使用 'docker-compose up' 启动了MCP服务。
- (可选)使用一个MCP客户端工具(如MCP Inspector)连接到用户偏好服务 ('http://localhost:8102'),调用 'qdrant-store' 工具存储你的旅行偏好描述,以便代理提供个性化结果。
- 运行示例客户端代理脚本:
脚本会调用运行中的MCP服务和配置的LLM来生成旅行规划,并将结果输出到终端。你可以直接修改 'itinerary_agent.py' 中的查询内容来获取不同的旅行规划。python itinerary_agent.py
信息
分类
网页与API