这是一个基于 FastAPI 和 fastmcp 的高德地图导航 MCP (Model Context Protocol) 工具。它提供了交互式地图页面,支持驾车、骑行、步行三种导航类型,可通过 MCP 接口发送导航命令实现实时路线规划。系统采用 WebSocket 实时通信和基于 sessionid 的会话管理,保障多用户使用的安全性与独立性。
我们使用 uv 进行 Python 环境管理。首先确保已安装 uv:
# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建新的虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# 使用 uv 安装依赖
uv pip install -r requirements.txt
# 同步依赖(推荐)
uv sync
如果你有自己的高德地图 API 密钥,可以设置环境变量:
# 设置环境变量
export AMAP_API_KEY="你的高德地图API密钥"
export AMAP_SECURITY_CODE="你的高德地图安全密钥"
# 直接运行
python main.py
# 或者使用 uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000
服务器启动后,你会看到以下信息:
🚀 启动高德地图导航 MCP 服务器...
🔧 MCP 端点: http://localhost:8000/mcp
📚 API 文档: http://localhost:8000/docs
使用说明:
1. 使用 MCP tool 'create_session' 创建会话
2. 使用返回的 sessionid 访问地图页面
3. 使用 MCP tool 'send_navigation_to_map' 发送导航命令
使用 uv 进行 Python 环境管理,确保已安装 uv,并按以下步骤操作:
# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建新的虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# 使用 uv 安装依赖
uv pip install -r requirements.txt
# 同步依赖(推荐)
uv sync
若有自己的高德地图 API 密钥,可设置环境变量:
# 设置环境变量
export AMAP_API_KEY="你的高德地图API密钥"
export AMAP_SECURITY_CODE="你的高德地图安全密钥"
# 直接运行
python main.py
# 或者使用 uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000
以下是使用 MCP tool 创建会话和发送导航命令的基本示例:
# 假设这里有创建会话的代码示例
# 例如:使用 MCP tool 'create_session' 创建会话
# session = mcp_tool.create_session()
# 假设这里有发送导航命令的代码示例
# 例如:使用 MCP tool 'send_navigation_to_map' 发送导航命令
# mcp_tool.send_navigation_to_map(session, "目的地信息")
在实际应用中,可结合环境变量和会话管理进行更灵活的操作:
import os
# 设置环境变量
os.environ["AMAP_API_KEY"] = "你的高德地图API密钥"
os.environ["AMAP_SECURITY_CODE"] = "你的高德地图安全密钥"
# 创建会话
# session = mcp_tool.create_session()
# 发送导航命令
# mcp_tool.send_navigation_to_map(session, "目的地信息")
| 属性 | 详情 |
|---|---|
| 端点 | /、/ws/{session_id}、/sessions、/queue-status、/health、/mcp、/static |
| 方法 | GET、WebSocket |
| 说明 | 获取地图页面(需要 sessionid 参数)、WebSocket 连接端点、查看所有活跃会话、查看命令队列状态、健康检查、MCP 协议端点、静态文件服务 |
# 查看所有会话
curl "http://localhost:8000/sessions"
# 查看命令队列状态
curl "http://localhost:8000/queue-status"
# 健康检查
curl "http://localhost:8000/health"
AMAP_API_KEY 和 AMAP_SECURITY_CODEpython main.pycreate_sessionsend_navigation_to_mapcreate_session 创建会话,send_navigation_to_map 发送导航命令⚠️ 重要提示
本服务仅用于学习和开发测试目的,严禁在生产环境中使用!API 密钥通过 URL 参数传递,存在暴露风险;未实施密钥加密和访问控制,不得部署到公网;密钥可能被记录在服务器访问日志中;缺乏 HTTPS、密钥加密、访问限制等安全措施。
💡 使用建议
仅在本地开发环境使用,使用测试用的 API 密钥,确保防火墙阻止外部访问,禁止使用生产环境密钥,禁止部署到公网服务器。
08.amap/
├── main.py # 主程序文件
├── main.js # 客户端JavaScript文件
├── main.html # 地图页面HTML文件
├── pyproject.toml # 项目配置文件
├── README.md # 项目说明文档(中文)
├── README_EN.md # Project documentation (English)
├── README_JA.md # プロジェクトドキュメント(日本語)
└── uv.lock # 依赖锁定文件
欢迎提交 Issues 和 Pull Requests!
MIT License
免责声明: 本项目仅用于学习和技术研究目的。使用者应当:
作者不承担因使用本项目而产生的任何直接或间接损失。