alexrobl/geoanalisis-mcp
GitHub: alexrobl/geoanalisis-mcp
一款集成 Claude Desktop 的空间数据分析与制图 MCP 服务器,用自然语言即可完成矢量数据读取、统计分析和专业地图生成。
Stars: 3 | Forks: 0
# GeoAnalisis MCP
用于读取、分析和制图矢量空间数据的 MCP 服务器,与 Claude Desktop 集成。只需一条自然语言指令即可生成专业地图,无需打开桌面 GIS。

## 工具
| Tool | 描述 |
|------|-------------|
| `list_layers` | 列出空间文件中的图层,包含几何类型、feature count 和 CRS |
| `get_layer_schema` | 图层的完整 schema:字段、类型、bbox、CRS |
| `scan_field_stats` | 按字段生成描述性统计(数值型和类别型) |
| `read_features` | 读取 feature 作为 GeoJSON FeatureCollection,支持 WHERE 和 bbox 过滤器 |
| `preview_geometries` | 以 WKT 格式预览几何图形 |
| `render_map` | Leaflet 交互式地图(平移/缩放、点击查看属性、支持图层切换的多图层、图例、比例尺) |
| `export_map_image` | 导出地图图像(JPG/PNG/PDF/SVG),包含 basemap、符号系统、图例、比例尺、指北针和标注 |
| `export_map_cartographic` | 正式地图平面图:标题、包含图例和位置索引的侧边栏、图形比例尺、指北针和坐标网格 |
**通用功能**(由三种地图工具共享):
- **多图层** — `extra_layers` 可叠加额外图层,每个图层可单独配置颜色、线型、透明度和标签。
- **符号系统** — 使用 `color_by` 进行快速分类,或使用高级 `style`(如 `categorized` / `graduated`,支持色彩渐变和类别截断)。
- **自定义 basemap** — `basemap` 接受 ArcGIS MapServer 切片根 URL 或 XYZ 模板 `{z}/{x}/{y}`;默认使用 CartoDB Positron。
- **过滤器** — `where`(OGR SQL)和 `bbox`;使用 `where` 时,地图范围会自动适应过滤后的 feature。
- **CRS** — 自动重投影至 WGS84;对于未声明参考系统的文件,可使用 `source_crs` / `crs` 指定。
- **标注** — `label_by` 通过字段对 feature 进行智能定位标注。
**支持的格式:** FileGDB (`.gdb`)、Shapefile (`.shp`)、GeoJSON、GeoPackage (`.gpkg`)、KML 以及任何 GDAL/OGR 兼容的矢量格式。
## 在 Claude Desktop 中安装(推荐)
需要安装 [uv](https://docs.astral.sh/uv/)。
1. 从 [Releases](https://github.com/alexrobl/geoanalisis-mcp/releases) 下载 `geoanalisis-mcp-X.Y.Z.mcpb`
2. 使用 Claude Desktop 打开它(双击或 *设置 → 扩展 → 安装扩展*)
3. 完成 — 首次启动时依赖项将自动通过 uv 解析
从源代码生成 bundle:
```
npx @anthropic-ai/mcpb pack . geoanalisis-mcp.mcpb
```
## 手动安装(开发)
需要 Python ≥ 3.11 和 [uv](https://docs.astral.sh/uv/)。
```
git clone https://github.com/alexrobl/geoanalisis-mcp
cd geoanalisis-mcp
uv sync
```
将以下内容添加到你的 `claude_desktop_config.json` 中:
```
{
"mcpServers": {
"geoanalisis": {
"command": "/ruta/al/repo/.venv/bin/geoanalisis-mcp"
}
}
}
```
## render_map
直接在 Claude 中使用 Leaflet 生成交互式 HTML artifact,提供双重输出:
- **聊天内联显示** — 支持平移、缩放、点击 feature 查看属性、图层切换控件、图例、比例尺和光标坐标。在 Claude 的沙盒环境中,外部切片会被拦截,因此背景显示为灰色。
- **磁盘上的高保真版本** — 同时保存一个 HTML(`{capa}_dynamic.html`),在浏览器中打开时 basemap 可以正常加载。
数据在服务端进行嵌入(如果超出 `limit` 则进行均匀采样),不占用对话上下文。
## export_map_image 和 export_map_cartographic
使用 matplotlib + contextily 在服务端生成图像:在聊天中内联显示(72 DPI),并以高分辨率保存到磁盘(`dpi` 可配置;当 `dpi > 150` 时,basemap 切片会请求更高的缩放级别以保持清晰度)。两者都会返回一个文本报告,说明实际应用于每个图层的符号系统。
- `export_map_image` — 用于快速审查的视图:包含图例、比例尺、指北针和可选的来源信息。输出 `.png`、`.jpg`、`.pdf`(矢量)或 `.svg`。
- `export_map_cartographic` — 正式的交付产品:包含机构标题、带有图例、图例说明和位置索引的侧边栏,以及带有指北针、图形比例尺和来源说明的底部条带。推荐日常作业使用 `.jpg`,正式交付使用 `.pdf`。
标签:GeoJSON, Leaflet, MCP服务器, 地图渲染, 地理信息系统, 空间数据分析, 逆向工具