使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,它将百度地图的多个API接口封装成工具 (Tools),通过标准化的MCP协议,供支持MCP协议的LLM客户端(如 OpenAI Agents SDK)调用。该服务器允许LLM应用便捷地接入和使用百度地图的地理编码、地点检索、路线规划、天气查询等服务,从而扩展LLM在地理空间信息处理方面的能力。
主要功能点
- 地理编码与逆地理编码:将地址转换为经纬度坐标,或将经纬度坐标反向解析为地址信息。
- 地点检索:支持关键词、城市、周边地点检索,帮助LLM查找POI信息。
- 地点详情:获取指定POI的详细信息,如评分、营业时间等。
- 批量算路:计算多个起点到终点之间的距离和行驶时间,支持驾车、骑行、步行等多种模式。
- 路线规划:提供驾车、骑行、步行、公交等多种出行方式的路线规划,并对非公交路线规划结果进行精简,提升LLM处理效率。
- 天气查询:根据行政区划或经纬度坐标查询实时天气和未来天气预报。
- IP定位:根据用户IP地址获取当前位置信息。
- 实时路况查询:查询道路、区域的实时交通拥堵情况。
- POI智能提取:从文本中智能提取POI相关信息(需要高级API权限)。
安装步骤
- 克隆仓库
git clone https://github.com/Nehcknarf/openai-agents-with-mcp cd openai-agents-with-mcp - 安装 Python 3.13 (如果尚未安装)
按照仓库 'README.md' 提示,推荐使用 'uv' 安装 Python 3.13:
uv python install 3.13 - 初始化项目并创建虚拟环境
uv init uv venv - 激活虚拟环境
- Windows:
.venv\Scripts\activate - macOS/Linux:
source .venv/bin/activate
- Windows:
- 安装依赖包
uv add openai-agents "mcp[cli]" - 移除示例文件 (可选)
rm main.py
服务器配置
MCP客户端(例如 'client.py')需要配置以下信息才能连接到百度地图MCP服务器。配置信息为 JSON 格式,在客户端代码中指定,无需用户手动修改服务器端代码。
{ "server name": "baidu-map", // MCP 服务器的名称,客户端用于标识和引用 "command": "uv", // 启动服务器的命令,这里使用 uv "args": [ // 启动服务器命令的参数列表 "run", // uv run 子命令,用于运行 Python 脚本 "--with", // uv run 的参数,指定运行环境包含 mcp[cli] 扩展 "mcp[cli]", // mcp[cli] 扩展,提供 MCP CLI 工具 "mcp", // 实际执行的命令,调用 mcp CLI "run", // mcp CLI 的 run 子命令,用于启动 MCP 服务器 "baidu_map_mcp_server/map.py" // MCP 服务器的入口脚本,即 map.py 文件路径 ] }
基本使用方法
- 配置 API 密钥
- 在项目根目录下创建 '.env' 文件。
- 将 OpenAI API Key、DeepSeek API Key 和 百度地图 API Key 填入 '.env' 文件中。请务必前往百度地图开放平台申请API Key。
OPENAI_API_KEY=sk-... DEEPSEEK_API_KEY=sk-... BAIDU_MAPS_API_KEY=YOUR_BAIDU_MAPS_API_KEY
- 运行客户端
- 确保已激活虚拟环境。
- 运行 'client.py' 文件。客户端会自动启动并连接到百度地图MCP服务器。
uv run client.py
- 与 Agent 交互
- 客户端代码 'client.py' 中已配置一个名为 "Assistant" 的 Agent,并设置其使用百度地图MCP服务器。
- Agent 的 'instructions' 设置为 "使用工具接入地图服务,实现查找周边地点、 规划出行路线等。"
- 运行 'client.py' 后,Agent 会执行预设的查询 "北京到深圳的距离?",并输出结果。
- 你可以修改 'client.py' 中的 'message' 变量来测试其他地图相关的问题。
注意:
- 运行前请确保已正确安装所有依赖包并配置了必要的 API Key。
- 本示例客户端使用了 OpenAI Agents SDK 和 'MCPServerStdio',演示了如何通过标准输入输出流 (stdio) 与 MCP 服务器进行通信。
- 如果需要替换默认模型为 DeepSeek-V3,请取消 'client.py' 中 DeepSeek 相关的代码注释,并注释掉 OpenAI 相关的代码。
信息
分类
网页与API