返回市场
MCP-地理

MCP-地理

作者:webcoderz29 星标更新:2025-01-21

项目介绍

MCP-Geo

使用GeoPY的地理编码MCP服务器!

<a href="https://glama.ai/mcp/servers/ujss4qy5fs"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=1433779848,3979250201&fm=3081&app=3081&f=PNG?w=760&h=400" /> </a>

📋 系统要求

  • Python 3.6+

📦 依赖项

安装所有必需的依赖项:

# 使用uv
uv sync

必需的包

  • fastmcp: 构建模型上下文协议服务器的框架
  • 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

  • 计算两个地址或地名之间的距离。
  • 接受两个地址和一个单位(英里/公里)。
  • 返回指定单位的距离,或者如果任一地址无法地理编码则返回None。

distance_between_coords

  • 计算两个经纬度对之间的距离。
  • 接受两组纬度和经度以及一个单位(公里/英里)。
  • 返回指定单位的距离。

🚀 开始使用

克隆仓库:

git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo

📦 安装选项

您可以在Claude桌面或其他地方安装此MCP服务器。选择最适合您的选项。

选项1:为Claude桌面安装

使用FastMCP安装:

fastmcp install geo.py --name "MCP Geo"

选项2:在其他地方安装

要在其他任何地方使用此服务器:

  1. 将以下配置添加到设置文件中:
{
    "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/httpshttp
ARC_USERNAME (ArcGIS可选)ArcGIS用户名None
ARC_PASSWORD (ArcGIS可选)ArcGIS密码None
BING_API_KEY (Bing必填)您的Bing Maps密钥None

这些可以在您的shell或MCP设置文件中为您的环境设置。如果需要更多,请编辑geo.py并根据您使用的地理编码器添加它们。