Google Maps MCP Server
基于 FastMCP 框架的 Google Maps MCP 服务器,提供完整的 Google Maps API 功能。
功能特性
- 🗺️ 地理编码: 地址与坐标相互转换
- 🔍 地点搜索: 使用 Google Places API 搜索地点
- 📍 地点详情: 获取详细的地点信息
- 📏 距离计算: 多点间距离和时间矩阵
- ⛰️ 海拔数据: 获取位置海拔信息
- 🧭 路线规划: 多种交通方式的路线指导
安装依赖
本项目使用 uv 进行依赖管理:
# 安装 uv(如果未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 同步项目依赖(自动创建虚拟环境)
uv sync
uv 会自动:
- 创建
.venv虚拟环境 - 安装所有生产和开发依赖
- 生成
uv.lock锁定文件确保可重复的构建
配置
1. 获取 Google Maps API Key
- 访问 Google Cloud Console
- 创建新项目或选择现有项目
- 启用以下 API:
- Maps JavaScript API
- Geocoding API
- Places API
- Distance Matrix API
- Elevation API
- Directions API
- 创建 API 密钥并记录
2. 设置环境变量
export GOOGLE_MAPS_API_KEY="your_api_key_here"
或创建 .env 文件:
echo "GOOGLE_MAPS_API_KEY=your_api_key_here" > .env
运行服务器
使用 uv 运行(推荐)
# 方式1:使用脚本入口点
uv run google-maps-mcp
# 方式2:直接运行 Python 文件
uv run python google_maps_server.py
# 方式3:使用启动脚本
./start_server.sh
不同传输方式
默认使用 STDIO 传输,你也可以使用 HTTP 传输:
# STDIO 传输(默认)
uv run google-maps-mcp
# HTTP 传输
MCP_TRANSPORT=streamable-http MCP_PORT=8000 uv run google-maps-mcp
MCP 工具使用示例
地理编码
# 将地址转换为坐标
await maps_geocode("北京市天安门广场")
反向地理编码
# 将坐标转换为地址
await maps_reverse_geocode(39.9042, 116.4074)
搜索地点
# 搜索餐厅
await maps_search_places("北京餐厅", location={"latitude": 39.9042, "longitude": 116.4074}, radius=5000)
获取地点详情
# 获取详细信息
await maps_place_details("ChIJD3uTd9hfUDERCA0j7L2EMqo")
距离矩阵
# 计算多点间距离
await maps_distance_matrix(
origins=["北京", "上海"],
destinations=["广州", "深圳"],
mode="driving"
)
海拔数据
# 获取海拔
await maps_elevation([
{"latitude": 39.9042, "longitude": 116.4074},
{"latitude": 31.2304, "longitude": 121.4737}
])
路线规划
# 获取导航路线
await maps_directions("北京", "上海", mode="driving")
与 Claude Desktop 集成
-
打开 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
添加服务器配置:
{
"mcpServers": {
"google-maps": {
"command": "uv",
"args": ["run", "--directory", "/path/to/google-maps-mcp", "google-maps-mcp"],
"env": {
"GOOGLE_MAPS_API_KEY": "your_api_key_here"
}
}
}
}
- 重启 Claude Desktop
开发
项目结构
google-maps-mcp/
├── google_maps_server.py # 主服务器文件
├── pyproject.toml # 项目配置
├── README.md # 本文档
└── .env # 环境变量(需要创建)
代码特性
- ✅ 类型注解完整
- ✅ 异步操作支持
- ✅ 错误处理和日志记录
- ✅ Pydantic 数据模型验证
- ✅ Context 对象支持 MCP 功能
测试
# 运行完整测试套件
uv run python test_server.py
# 运行开发工具
uv run black . # 代码格式化
uv run ruff check . # 代码检查
uv run mypy . # 类型检查
uv run pytest # 单元测试(如果有)
许可证
MIT License - 详见 LICENSE 文件
贡献
欢迎提交 Issue 和 Pull Request!
相关链接
Metadata
Release files for mclabs.google_maps_mcp_server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mclabs_google_maps_mcp_server-0.1.0.tar.gz | 75.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mclabs_google_maps_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.2 kB
Release files / mclabs_google_maps_mcp_server-0.1.0.tar.gz
| Download URL | mclabs_google_maps_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 75.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b98047be57f0e63ef0bd0cf67a2e769daf41462bbaf1d922a3d7f809e701b664
|
|
BLAKE2b-256 checksum How to use checksums |
3e4460b3c2fbcc1cc958a7e4fdf280fa76c6fba1650250c2c117529dcd35e775
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.16
|
Release files / mclabs_google_maps_mcp_server-0.1.0-py3-none-any.whl
| Download URL | mclabs_google_maps_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
54de7edfc16829c33adfe486a345dfe366181ad61c570d8fc4492f27e48d3689
|
|
BLAKE2b-256 checksum How to use checksums |
7eb76f4fb9dd56fea665e1cd46d5cbf40a25882107c554881d05dd328072a9b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.16
|