地理空间分析服务器

一个开源的地理空间分析服务器,为AI代理提供Overture Maps数据的空间分析工具。

  • by srivinod1
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 srivinod1/overture-mcp-server

使用说明

Overture Maps MCP服务器

一个开源的MCP服务器 序曲地图 数据作为AI代理的空间分析工具。

这有什么作用

人工智能代理需要地理空间智能。该服务器允许他们通过干净、可组合的工具原语直接访问Overture Maps数据。

问以下问题:

  • “1公里范围内的建筑中,住宅和商业建筑的比例是多少?”
  • “土地利用结构是什么——住宅、工业还是混合用途?”
  • “两个潜在零售地点的咖啡馆密度如何比较?”

它如何适应代理堆栈

+---------------------------------------------------+
|  AI Agent (Claude, Mistral, etc.)                 |
+-----------------+---------------------------------+
|  Geocoding /    |  Overture Maps MCP              |
|  Routing /      |  ----------------------         |
|  Display MCP    |  Place analytics                |
|  -------------- |  Building composition           |
|  Geocoding      |  Admin boundary lookups         |
|  Routing        |  Transportation analysis        |
|  Directions     |  Land use classification        |
|  ETA            |  Category discovery             |
|  Map display    |                                 |
+-----------------+---------------------------------+

MCP序曲 处理需要直接数据访问的空间分析。 地理编码/路由/显示MCP 通过API处理地理编码、路线、方向和地图显示。

它们是互补的——将它们一起用于一个完整的地理空间代理。

可用工具(V1)

工具 主题 它的作用
get_place_categories 地点 搜索Overture的地点类别分类
places_in_radius 地点 查找半径内与类别匹配的所有地点
nearest_place_of_type 地点 查找给定类型的单个最近地点
count_places_by_type_in_radius 地点 统计一个区域中某个类别的地点
building_count_in_radius 建筑物 统计一个区域内的建筑物
building_class_composition 建筑物 获取建筑物类型的百分比细分
point_in_admin_boundary 分区 查找哪个国家/地区/城市包含一个点
road_count_by_class 交通 按类别统计一个地区的路段
nearest_road_of_class 交通 查找给定类别中最近的道路
road_surface_composition 交通 获取路面类型的百分比细分
land_use_at_point 土地利用 确定某一点的土地利用名称
land_use_composition 土地利用 获取一个地区土地利用类型的百分比细分
land_use_search 土地利用 查找特定子类型的土地利用地块

服务器还支持 渐进式披露模式 (TOOL_MODE=progressive)它公开了3个元工具,而不是13个单独的工具——在与许多其他上下文开销很重要的MCP一起运行时非常有用。看 docs/TOOLS.md 了解详情。

看 docs/OPERATIONS.md 用于完整的参数和响应规范。

快速开始

先决条件

  • Python 3.10+
  • MCP兼容的AI代理(克劳德桌面、克劳德代码等)

从源代码安装

git clone https://github.com/your-username/overture-mcp-server.git
cd overture-mcp-server
pip install -e .

本地运行(stdio传输)

# stdio is default — no API key needed for local use
python -m overture_mcp.server

# or via the CLI entry point
overture-mcp-server

作为托管服务器运行(SSE传输)

export OVERTURE_API_KEY="your-api-key"
export TRANSPORT=sse
python -m overture_mcp.server
# Server starts on http://0.0.0.0:8000

从克劳德桌面连接

本地(stdio): 添加到您的Claude Desktop MCP配置(claude_desktop_config.json):

{
  "mcpServers": {
    "overture-maps": {
      "command": "python",
      "args": ["-m", "overture_mcp.server"]
    }
  }
}

远程(SSE): 连接到托管实例:

{
  "mcpServers": {
    "overture-maps": {
      "url": "http://localhost:8000/sse",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

代理交互示例

User: "Compare cafe density near two potential retail locations in Amsterdam"

Agent:
  1. Calls Geocoding MCP -> geocode("Leidseplein, Amsterdam") -> (52.3636, 4.8828)
  2. Calls Geocoding MCP -> geocode("De Pijp, Amsterdam") -> (52.3509, 4.8936)
  3. Calls Overture MCP -> get_place_categories({query: "cafe"})
  4. Calls Overture MCP -> count_places_by_type_in_radius(
       {lat: 52.3636, lng: 4.8828, radius_m: 500, category: "cafe"}) -> 12
  5. Calls Overture MCP -> count_places_by_type_in_radius(
       {lat: 52.3509, lng: 4.8936, radius_m: 500, category: "cafe"}) -> 7
  6. Returns: "Leidseplein has 12 cafes within 500m vs 7 in De Pijp..."

建筑

  • 运行时:Python+FastMCP
  • 数据库:带Spatial扩展的DuckDB(进程内)
  • 数据:S3上的Overture Maps GeoParquet(直接查询,无数据复制)
  • 认证:持票人代币通过 Authorization 标头(HTTP/SSE传输)
  • 运输:stdio(本地,默认),SSE(托管),流式HTTP(托管)
  • 托管:铁路、Docker或任何容器平台
  • 刀具模式:直接(默认,13个工具)或渐进式(3个元工具)

看 建筑.md 了解完整的技术细节和设计决策。

数据源

此服务器查询 序曲地图 数据直接来自S3。

  • 当前版本: 2026-01-21.0
  • 更新频率:季度
  • 许可证:序曲地图数据可在以下网址获得 ODbL 和 CDLA许可2.0
  • 覆盖:全球,按区域完整性不同
  • 无需AWS凭据 --Overture S3存储桶是公开访问的

环境变量

变量 必填 默认 描述
OVERTURE_API_KEY 用于SSE/HTTP -- 客户端身份验证的承载令牌
TRANSPORT 没有 stdio stdio, sse,或 http
TOOL_MODE 没有 direct direct 或 progressive
OVERTURE_DATA_VERSION 没有 2026-01-21.0 序曲发布版本
MAX_CONCURRENT_QUERIES 没有 3 DuckDB并发限制
MAX_RADIUS_M 没有 50000 半径安全帽(米)
PORT 没有 8000 服务器端口(仅限SSE/HTTP)
HOST 没有 0.0.0.0 服务器主机(仅限SSE/HTTP)

文档

贡献

欢迎投稿!请先阅读架构文档以了解设计决策。

# Clone and set up dev environment
git clone https://github.com/your-username/overture-mcp-server.git
cd overture-mcp-server
pip install -e ".[dev]"

# Run tests (no S3 access needed)
pytest tests/ -m "not s3"

# Run full test suite
pytest tests/

许可证

麻省理工学院