MCP地理
使用GeoPY对MCP服务器进行地理编码!
📋 系统要求
- Python 3.6+
📦 依赖项
安装所有必需的依赖项:
# Using uv
uv sync所需套餐
- fastmcp:构建模型上下文协议服务器的框架
- geoPy:用于访问和地理编码/反向地理编码位置的Python库。
所有依赖关系都在中指定 requirements.txt 便于安装。
📑 目录
🛠️ MCP工具
此MCP服务器为大型语言模型(LLM)提供以下地理编码工具:
地理位置
- 接受用户提供的地址或地名,并返回最佳匹配的纬度、经度和格式化地址。
- 优雅地处理错误,如果找不到位置或发生错误,则返回None。
反向geocode
- 获取纬度和经度,并返回最近的地址。
- 可用于查找地图上某个点的描述性信息。
地理信息_详细信息
- 类似于geocode_location,但如果地理编码器支持,则返回附加数据,如边界框和更详细的地址信息。
地理位置_多个位置
- 接受地址字符串列表,并返回每个地址的地理编码结果列表(lat/lon/address)。
- 限制费率以避免达到地理编码服务配额。
反向geocode_多个位置
- 接受\[lat,lon\]对列表,为每个对执行反向地理编码。
- 返回包含lat、lon和address的字典列表,对于不成功的查找,返回None,也有速率限制。
距离_间隔_地址
- 计算两个地址或地名之间的距离。
- 接受2个地址和一个计量单位(英里/公里)
- 返回指定单位的距离,如果任一地址都无法进行地理编码,则返回None。
距离_间隔_坐标
- 计算两个lat/lon对之间的距离。
- 接受2对纬度和经度以及一个测量单位(公里/英里)
- 以指定单位返回距离。
🚀 入门指南
克隆存储库:
git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo📦 安装选项
您可以在Claude Desktop或其他地方安装此MCP服务器。选择最适合您需求的选项。
选项1:为Claude Desktop安装
使用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的集成方式。 •调整环境变量以切换提供程序(Nominim、ArcGIS、Bing等)。 •查看geopy的官方文档,了解边界框、语言设置或高级数据提取等高级用法。
⚙️ 环境变量
使用环境变量配置服务器:
| 变量 | 描述 | 默认值 |
|---|---|---|
GEOCODER_PROVIDER (可选) | “nominatim”、“arcgis”或“bing” | nominatim |
NOMINATIM_URL (可选) | 提名域名 | Nominatim.openstreetmap.org |
SCHEME (可选) | http/https | http |
ARC_USERNAME (ArcGIS可选) | ArcGIS用户名 | 无 |
ARC_PASSWORD (ArcGIS可选) | ArcGIS密码 | 无 |
BING_API_KEY (必应必备) | 您的必应地图键。 | 无 |
这些可以在您的shell中设置,也可以在您环境的MCP设置文件中设置。如果需要更多,只需编辑geo.py并将其添加到您使用的任何地理编码器中。

