MCP-Geo
使用GeoPY构建的MCP地理编码服务器!
📋 系统要求
- Python 3.6+
📦 依赖项
安装所有必需的依赖项:
# 使用uv
uv sync
必需的包
- fastmcp: 用于构建Model Context Protocol服务器的框架
- geoPy: 用于访问和地理编码/反向地理编码位置的Python库。
所有依赖项均在requirements.txt中指定,便于安装。
📑 目录
🛠️ MCP工具
此MCP服务器为大型语言模型(LLMs)提供以下地理编码工具:
geocode_location
-
接收用户提供的地址或地名,并返回最佳匹配的纬度、经度和格式化地址。
-
轻松处理错误,如果位置未找到或发生错误,则返回None。
reverse_geocode
- 接收纬度和经度,并返回最近地址。
- 用于查找地图上某点的描述性信息。
geocode_with_details
- 与geocode_location类似,但返回额外的数据,如边界框和更详细的地址信息(如果地理编码器支持)。
geocode_multiple_locations
- 接收地址字符串列表,并为每个地址返回地理编码结果(纬度/经度/地址)列表。
- 受速率限制,以避免超出地理编码服务配额。
reverse_geocode_multiple_locations
- 接收[纬度, 经度]对列表,对每个位置执行反向地理编码。
- 返回包含纬度、经度和地址(或未成功查找的None)的字典列表,也受速率限制。
distance_between_addresses
- 计算两个地址或地点之间的距离。
- 接收2个地址和测量单位(英里/千米)
- 返回指定单位的距离,如果任一地址无法地理编码,则返回None。
distance_between_coords
- 计算两个纬度/经度对之间的距离。
- 接收2对纬度和经度以及测量单位(千米/英里)
- 返回指定单位的距离。
🚀 入门指南
克隆仓库:
git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo
📦 安装选项
您可以将此MCP服务器安装在Claude桌面版或其他地方。选择最适合您需求的选项。
选项1:为Claude桌面版安装
使用FastMCP安装:
fastmcp install geo.py --name "MCP Geo"
选项2:在其他地方安装
要在其他地方使用此服务器:
- 将以下配置添加到设置文件:
{
"mcp-geo": {
"command": "uv",
"args": [
"--directory",
"MCP-Geo",
"run",
"geo.py"
],
"env": {
"NOMINATIM_URL": "${NOMINATIM_URL}",
"SCHEME": "http",
"GEOCODER_PROVIDER": "nominatim"
}
}
}
🔒 安全功能 • 速率限制:每个地理编码调用都受速率限制(例如,1秒延迟),以避免过度请求违反使用限制。 • 错误处理:捕获geopy异常(超时、服务错误)并返回安全的None结果,而不是崩溃。
📚 开发文档
如果您想扩展或修改此服务器: • 检查geo.py以了解每个工具的实现方式以及如何集成geopy。 • 调整环境变量以切换提供者(Nominatim、ArcGIS、Bing等)。 • 查看geopy的官方文档以了解高级用法,如边界框、语言设置或高级数据提取。
⚙️ 环境变量
使用环境变量配置服务器:
| 变量 | 描述 | 默认 |
|---|---|---|
GEOCODER_PROVIDER (可选) | "nominatim", "arcgis", 或 "bing" | nominatim |
NOMINATIM_URL (可选) | Nominatim的域名 | nominatim.openstreetmap.org |
SCHEME (可选) | http/https | http |
ARC_USERNAME (可选用于ArcGIS) | ArcGIS用户名 | None |
ARC_PASSWORD (可选用于ArcGIS) | ArcGIS密码 | None |
BING_API_KEY (必需用于Bing) | 您的Bing Maps密钥。 | None |
这些可以在您的shell中设置或在您的环境设置文件中设置。如果需要更多,只需编辑geo.py并添加到您正在使用的地理编码器中。