GIS MCP服务器
| 类别 | 徽章 |
|---|---|
| 包裹 | |
| 安装和运输 | |
| 数据源 | |
| AI 代理 | |
| 社区 |
✨ Want to perform accurate geospatial analysis in your chatbot? ✨
Install GIS-MCP and transform your AI’s spatial capabilities!
一种模型上下文协议(MCP)服务器实现,使用GIS库将大型语言模型(LLM)连接到GIS操作,使AI助手能够执行地理空间操作和转换。
🌐 网站: gis-mcp.com
当前版本为0.14.0(测试版):
我们欢迎贡献者和开发者加入我们,共同构建这个项目。
🎥 演示
📋 目录
-
特性
-
先决条件
-
氛围编程
-
安装
-
Docker安装
-
pip安装
-
开发安装
-
构建您的第一个GIS AI代理
-
可用功能
-
形状功能
-
PyProj函数
-
GeoPandas功能
-
光栅函数
-
PySAL函数
-
可视化功能
-
静态地图功能
-
交互式网络地图功能
-
行政边界职能
-
气候数据功能
-
生态数据功能
-
运动数据功能
-
土地覆盖数据功能
-
卫星图像功能
-
客户端开发
-
计划的功能
-
贡献
-
许可证
-
相关项目
-
支持
-
徽章
🚀 特性
GIS MCP Server为AI助手提供先进的地理空间智能。主要特征包括:
- 🔹 综合几何运算 –轻松执行交集、并集、缓冲区、差分和其他几何变换。
- 🔹 高级坐标变换 –轻松地在坐标参考系之间重新投影和转换几何图形。
- 🔹 精确的测量 精确计算距离、面积、长度和质心。
- 🔹 空间分析与验证 –验证几何图形,运行邻近检查,并执行空间覆盖或连接。
- 🔹 光栅和矢量支持 –处理光栅图层,计算NDVI等指数,剪切,重新采样,并与矢量数据合并。
- 🔹 空间统计与建模 –利用PySAL进行空间自相关、聚类和邻域分析。
- 🔹 易于集成 –与兼容MCP的客户端无缝连接,如Claude Desktop或Cursor IDE。
- 🔹 HTTP/SSE传输 –使用RESTful存储端点作为HTTP服务运行,用于文件上传/下载操作。
- 🔹 灵活且可扩展 支持基于Python的GIS库,并已准备好使用自定义工具或工作流扩展。
🌟 提示: 借助GIS MCP Server,您的人工智能现在可以“空间思考”,为环境分析、地图绘制和位置智能解锁新功能。
📋 先决条件
- Python 3.10或更高版本
- MCP兼容客户端(如Claude Desktop或Cursor)
- 用于安装软件包的互联网连接
氛围编程
如果您正在通过vibe编码构建代理,请在编辑器中使用这些上下文文件,以便LLM了解GIS MCP服务器:
llms.txt:总结了较小窗口的上下文。llms-full.txt:当你的模型有一个更大的窗口时,提供完整的上下文。
🛠 安装
选择最适合您需求的安装方法:
🐳 Docker安装
GIS MCP服务器可以使用Docker运行,Docker提供了一个预先安装了所有依赖项的隔离环境。
重要提示: 两者 Dockerfile 和 Dockerfile.local 有 默认情况下启用HTTP传输模式。服务器在端口上运行 9010 可在以下网址访问 http://localhost:9010/mcp.
使用Dockerfile
主要的 Dockerfile 从PyPI安装软件包:
- 构建Docker镜像:
BASH``` 1docker build -t gis-mcp .
1. 运行容器(默认情况下启用HTTP模式):
BASH```
1docker run -p 9010:9010 gis-mcp
使用Dockerfile.local
这 Dockerfile.local 从本地源文件安装包(对开发或自定义构建有用):
- 构建Docker镜像:
BASH``` 1docker build -f Dockerfile.local -t gis-mcp:local .
1. 运行容器(默认情况下启用HTTP模式):
BASH```
1docker run -p 9010:9010 gis-mcp:local
服务器将在以下时间可用 http://localhost:9010/mcp 在HTTP传输模式下。
有关Docker配置和环境变量的更多详细信息,请参阅 Docker安装指南.
📦 pip安装
建议大多数用户安装pip:
- 安装uv包管理器:
BASH``` 1pip install uv
1. 创建虚拟环境(Python 3.10+):
BASH```
1uv venv --python=3.10
- 激活虚拟环境:
在Windows(PowerShell)上:
POWERSHELL``` 1..venv\Scripts\Activate.ps1
在Linux上:
BASH```
1source .venv/bin/activate
- 安装软件包:
BASH``` 1uv pip install gis-mcp
#### 安装可视化功能
要安装可视化功能(Folium和PyDeck用于交互式地图):
BASH```
1uv pip install gis-mcp[visualize]
这将安装其他依赖项:
folium>=0.15.0-用于创建交互式网络地图pydeck>=0.9.0-用于高级3D可视化
- 启动服务器:
BASH``` 1gis-mcp
默认情况下,服务器在 **STDIO传输模式**,非常适合本地开发和与Claude Desktop或Cursor IDE集成。
您还可以在中运行服务器 **HTTP传输模式** 对于网络部署:
BASH```
1
2
3export GIS_MCP_TRANSPORT=http
export GIS_MCP_PORT=8080
gis-mcp
在HTTP或SSE传输模式下运行时,以下端点可用:
-
MCP端点:
http://host:port/mcp(HTTP)或http://host:port/sse上海证券交易所 -
存储端点:
-
POST /storage/upload-将文件上传到服务器存储 -
GET /storage/download?path=<file>-从服务器存储下载文件 -
GET /storage/list?path=<dir>-列出服务器存储中的文件
有关传输模式和完整端点文档的更多详细信息,请参阅:
- HTTP传输配置
- 服务器端点
pip配置
要将pip安装与Claude或Cursor一起使用,请添加以下配置:
克劳德桌面:
窗户:
JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “gis-mcp”: { “command”: “C:\Users\YourUsername\.venv\Scripts\gis-mcp”, “args”: [] } } }
**Linux/Mac:**
JSON```
1
2
3
4
5
6
7
8{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}
光标IDE (创建 .cursor/mcp.json):
窗户:
JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “gis-mcp”: { “command”: “C:\Users\YourUsername\.venv\Scripts\gis-mcp”, “args”: [] } } }
**Linux/Mac:**
JSON```
1
2
3
4
5
6
7
8{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}
配置后:
- 确保更换
YourUsername使用您的实际用户名 - 对于开发安装,请更换
/path/to/gis-mcp与项目的实际路径 - 重新启动IDE以应用更改
- 现在,您可以通过Claude或Cursor使用所有GIS操作!
🛠 开发安装
对于贡献者和开发者:
- 安装uv包管理器:
BASH``` 1pip install uv
1. 创建虚拟环境:
BASH```
1uv venv --python=3.10
- 在开发模式下安装软件包:
BASH``` 1uv pip install -e .
1. 启动服务器:
BASH```
1python -m gis_mcp
开发配置
要将开发安装与Claude或Cursor一起使用,请添加以下配置:
克劳德桌面:
窗户:
JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “gis-mcp”: { “command”: “C:\path\to\gis-mcp\.venv\Scripts\python”, “args”: [“-m”, “gis_mcp”] } } }
**Linux/Mac:**
JSON```
1
2
3
4
5
6
7
8{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}
光标IDE (创建 .cursor/mcp.json):
窗户:
JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “gis-mcp”: { “command”: “C:\path\to\gis-mcp\.venv\Scripts\python”, “args”: [“-m”, “gis_mcp”] } } }
**Linux/Mac:**
JSON```
1
2
3
4
5
6
7
8{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}
配置后:
- 确保更换
YourUsername使用您的实际用户名 - 对于开发安装,请更换
/path/to/gis-mcp与项目的实际路径 - 重新启动IDE以应用更改
- 现在,您可以通过Claude或Cursor使用所有GIS操作!
🤖 构建您的第一个GIS AI代理
准备好创建自己的可以执行地理空间操作的AI代理了吗?我们的综合教程将指导您从零到英雄!
你将学到什么
- ✅ 如何在HTTP模式下设置GIS MCP服务器
- ✅ 如何从头开始构建LangChain代理
- ✅ 如何将您的代理连接到GIS工具
- ✅ 如何使用OpenRouter访问多个AI模型(DeepSeek、Gemini、GPT-4、Claude等)
- ✅ 如何定制和扩展您的代理
开始使用
👉 遵循完整的教程→
本教程对初学者友好,不需要任何人工智能或GIS经验。您将构建一个工作代理,它可以:
- 计算点之间的距离
- 转换不同系统之间的坐标
- 在位置周围创建缓冲区
- 执行空间分析
- 还有更多!
非常适合:开发人员、数据科学家、GIS专业人员以及任何对构建人工智能驱动的地理空间应用程序感兴趣的人。
📚 可用功能
本节提供了按库组织的所有可用功能的综合列表。
🔷 形状功能(共29个)
基本几何运算:
buffer-在几何体周围创建缓冲区intersection-查找两个几何图形的交点union-组合两个几何图形difference-查找几何图形之间的差异symmetric_difference-找到对称差异
几何特性:
convex_hull-计算凸包envelope-获取边界框minimum_rotated_rectangle-获取最小旋转矩形get_centroid-获取质心点get_bounds-获取几何体边界get_coordinates-提取坐标阵列get_geometry_type-获取几何图形类型名称
转换:
rotate_geometry-按角度旋转几何图形scale_geometry-按因子缩放几何图形translate_geometry-按偏移量移动几何图形
高级操作:
triangulate_geometry-创建三角测量voronoi-创建沃罗诺伊图unary_union_geometries-联合多种几何形状
测量:
get_length-计算几何体长度get_area-计算几何面积
验证和实用程序:
is_valid-检查几何有效性make_valid-修复无效几何图形simplify-简化几何图形snap_geometry-捕捉到参考几何图元nearest_point_on_geometry-查找最近的点normalize_geometry-规范方向geometry_to_geojson-转换为GeoJSONgeojson_to_geometry-从GeoJSON转换
🔷 PyProj函数(共13个)
坐标变换:
transform_coordinates-转换点坐标project_geometry-CRS之间的项目几何形状
CRS信息:
get_crs_info-获取详细的CRS信息get_available_crs-列出可用的CRS系统get_utm_zone-获取UTM区域的坐标get_utm_crs-获取坐标的UTM CRSget_geocentric_crs-获取地心CRS
大地测量计算:
get_geod_info-获取椭球体信息calculate_geodetic_distance-计算椭球面上的距离calculate_geodetic_point-计算距离/方位角处的点calculate_geodetic_area-计算椭球面上的面积
🔷 GeoPandas功能(共13个)
I/O操作:
read_file_gpd-读取带有预览的地理空间文件write_file_gpd-将GeoDataFrame导出到文件
加入和合并操作:
append_gpd-垂直连接GeoDataFramesmerge_gpd-数据库样式属性连接overlay_gpd-空间叠加操作dissolve_gpd-按属性溶解explode_gpd-分割多部分几何图形
空间操作:
clip_vector-夹子几何形状sjoin_gpd-空间连接sjoin_nearest_gpd-最近邻空间连接point_in_polygon-多边形中的点测试
🔷 光栅函数(共20个)
光栅基本操作:
metadata_raster-获取光栅元数据get_raster_crs-获取光栅CRSextract_band-提取单波段raster_band_statistics-计算频带统计raster_histogram-计算像素直方图
光栅处理:
clip_raster_with_shapefile-用多边形剪裁光栅resample_raster-按比例因子重新采样reproject_raster-重新投影到新的CRStile_raster-分割成瓷砖
光栅分析:
compute_ndvi-计算植被指数raster_algebra-频带上的数学运算concat_bands-组合单波段光栅weighted_band_sum-加权频带组合
高级分析:
zonal_statistics-多边形内的统计reclassify_raster-重新分类像素值focal_statistics-移动窗口统计hillshade-从DEM生成山坡阴影write_raster-将阵列写入光栅文件
🔷 PySAL函数(共18个)
空间自相关:
morans_i-全球莫兰I统计gearys_c-Global Geary的C统计数据gamma_statistic-伽马指数getis_ord_g-全球Getis Ord G统计数据
当地统计数据:
moran_local-当地莫兰Igetis_ord_g_local-当地Getis Ord G*join_counts_local-本地加入人数
全球统计:
join_counts-二进制连接计数测试adbscan-基于自适应密度的聚类
空间权重:
weights_from_shapefile-从shapefile创建权重distance_band_weights-基于距离的权重knn_weights-K—最近邻权重build_transform_and_save_weights-构建、转换和保存权重ols_with_spatial_diagnostics_safe-OLS回归与空间诊断build_and_transform_weights-构建和转换权重
时空分析:
spatial_markov-面板数据的空间马尔可夫分析dynamic_lisa-动态LISA(定向LISA)分析
空间回归:
gm_lag-GM_Lag空间2SLS/GMM-IV空间滞后模型
🔷 可视化功能(共2个)
静态地图可视化(Matplotlib/GeoPandas):
create_map–从多个地理空间数据源生成高质量的静态地图(PNG、PDF、JPG),包括形状文件、光栅、WKT几何图形和坐标阵列。支持具有单独样式选项、图例、标题和网格覆盖的多个图层。
交互式网络地图可视化(Folium):
create_web_map–使用带有图层控件、图例、比例尺、动态标题、工具提示和小地图的Folium生成交互式HTML地图。支持多种底图选项和web浏览器的响应式设计。
🔷 行政边界职能(共1个)
边界下载:
download_boundaries-下载GADM管理边界并另存为GeoJSON
🔷 气候数据功能(共1个)
气候数据下载:
download_climate_data-下载气候数据(ERA5或其他CDS数据集)
🔷 生态数据功能(共2个)
生态数据下载和信息:
get_species_info–检索给定物种名称的分类信息download_species_occurrences–下载给定物种的发生记录并保存为JSON
🔷 运动数据功能(共2个)
运动数据下载和路由(通过 OSMnx):
download_street_network–下载给定地点的街道网络并另存为GraphMLcalculate_shortest_path–使用保存的街道网络计算两点之间的最短路径
🔷 土地覆盖数据功能(共2个)
行星计算机的土地覆盖:
download_worldcover–下载ESA WorldCover AOI/年;可选作物和重新种植compute_s2_ndvi–根据Sentinel-2 L2A计算NDVI;支持作物和复种
🔷 卫星图像功能(共1个)
基于STAC的卫星下载:
download_satellite_imagery–从STAC项目(如Sentinel-2、Landsat)下载和堆叠乐队,并可选择裁剪和重新投影
可用功能总数:92
🛠 客户端开发
工具使用示例:
缓冲区操作
PYTHON``` 1 2 3 4 5 6 7 8 9Tool: buffer Parameters: { “geometry”: “POINT(0 0)”, “distance”: 10, “resolution”: 16, “join_style”: 1, “mitre_limit”: 5.0, “single_sided”: false }
### 坐标变换
PYTHON```
1
2
3
4
5
6Tool: transform_coordinates
Parameters: {
"coordinates": [0, 0],
"source_crs": "EPSG:4326",
"target_crs": "EPSG:3857"
}
大地测量距离
PYTHON``` 1 2 3 4 5 6Tool: calculate_geodetic_distance Parameters: { “point1”: [0, 0], “point2”: [10, 10], “ellps”: “WGS84” }
### 静态地图创建
PYTHON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Tool: create_map
Parameters: {
"layers": [
{
"data": "buildings.shp",
"style": {"label": "Buildings", "color": "red", "alpha": 0.7}
},
{
"data": "roads.shp",
"style": {"label": "Roads", "color": "black", "linewidth": 1}
}
],
"filename": "city_analysis",
"filetype": "png",
"title": "City Infrastructure Analysis",
"show_grid": true,
"add_legend": true
}
交互式网络地图创建
PYTHON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Tool: create_web_map Parameters: { “layers”: [ { “data”: “buildings.shp”, “style”: {“label”: “Buildings”, “color”: “red”} }, { “data”: “parks.geojson”, “style”: {“label”: “Parks”, “color”: “green”} } ], “filename”: “city_interactive.html”, “title”: “City Infrastructure Map”, “basemap”: “CartoDB positron”, “show_grid”: true, “add_legend”: true, “add_minimap”: true }
## 🔮 计划的功能
- 实施高级空间索引
- 实施网络分析功能
- 添加对3D几何图形的支持
- 实施性能优化
- 添加对更多GIS库的支持
## 🤝 贡献
我们欢迎捐款!以下是您可以提供帮助的方式:
1. 分叉存储库
2. 创建要素分支(`git checkout -b feature/AmazingFeature`)
3. 提交您的更改(`git commit -m 'Add some AmazingFeature'`)
4. 推到分支(`git push origin feature/AmazingFeature`)
5. 打开拉取请求
请确保您的公关描述清楚地描述了问题和解决方案。如果适用,请包括相关问题编号。
## 📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
## 🔗 相关项目
| 项目名称 | 类别 | 描述 |
| --- | --- | --- |
| [模型上下文协议](https://github.com/modelcontextprotocol/modelcontextprotocol) | MCP相关 | 核心MCP规范 |
| [FastMCP](https://github.com/jlowin/fastmcp) | MCP相关 | 构建MCP服务器和客户端的快速Python方式 |
| [形状](https://github.com/shapely/shapely) | 地理空间分析 | 用于操作和分析几何对象的Python包 |
| [PyProj](https://github.com/pyproj4/pyproj) | 地理空间分析 | PROJ库的Python接口 |
| [GeoPandas 的](https://github.com/geopandas/geopandas) | 地理空间分析 | 用于处理地理空间数据的Python包 |
| [拉斯特里奥](https://github.com/rasterio/rasterio) | 地理空间分析 | 用于读取和写入地理空间栅格数据的Python包 |
| [Fiona](https://github.com/Toblerity/Fiona) | 地理空间分析 | OGR库的Python接口,用于读取和写入矢量地理空间数据格式 |
| [PySAL](https://github.com/pysal/pysal) | 地理空间分析 | 用于地理空间数据科学的Python空间分析库 |
| [叶](https://github.com/python-visualization/folium) | 可视化 | 使用Leaflet.js创建交互式网络地图的Python库 |
| [PyDeck](https://github.com/visgl/deck.gl) | 可视化 | 用于创建高级3D可视化和交互式地图的Python库 |
| [Matplotlib](https://github.com/matplotlib/matplotlib) | 可视化 | 用于创建静态地图和可视化的Python绘图库 |
| [cdsapi](https://github.com/ecmwf/cdsapi) | 地理空间数据收集 | Python API访问哥白尼气候数据存储(CDS) |
| [皮加德姆](https://github.com/12rambau/pygadm) | 地理空间数据收集 | 从Python脚本轻松访问GADM定义的管理边界 |
| [皮格比夫](https://github.com/gbif/pygbif) | 地理空间数据收集 | GBIF API的Python客户端(生态和生物多样性数据) |
| [OSMnx](https://osmnx.readthedocs.io/en/stable/) | 地理空间数据收集 | 用于从OpenStreetMap下载、建模和分析街道网络和城市特征的Python包 |
| [pystac客户端](https://github.com/stac-utils/pystac-client) | 地理空间数据收集 | STAC目录的Python客户端;搜索和访问时空资产 |
| [行星计算机Python SDK](https://github.com/microsoft/planetary-computer-sdk-for-python) | 地理空间数据采集 | 微软行星计算机Python SDK;STAC/COG的身份验证和帮助程序 |
## 🔗 相关MCP服务器
| 服务器名称 | 描述 |
| --- | --- |
| [GeoServer MCP](https://github.com/mahdin75/geoserver-mcp/) | 将LLM连接到GeoServer REST API的模型上下文协议(MCP)服务器实现 |
## 📞 支持
如需支持,请在GitHub存储库中打开问题。
## 💬 社区
加入我们的Discord社区,进行讨论、更新和支持:
[](https://discord.gg/SeVmVhVbk)
## 👥 贡献者
[](https://github.com/mahdin75/gis-mcp/graphs/contributors)
由…制作 [控制锁](https://contrib.rocks).
## 🏆 徽章
[](https://pypi.org/project/gis-mcp/)
[](https://pypi.org/project/gis-mcp/)
[](https://archestra.ai/mcp-catalog/mahdin75__gis-mcp)
[](https://glama.ai/mcp/servers/@mahdin75/gis-mcp)
[](https://mcp.so/server/gis-mcp-server/mahdin75)