GIS MCP 服务器
模型上下文协议 (MCP) 服务器实现,使用 GIS 库(当前支持 Shapely 和 PyProj)将大型语言模型 (LLM) 连接到 GIS 操作,使 AI 助手能够执行地理空间操作和转换。
阿尔法
0.2.0(Alpha)版本正在积极开发中。我们欢迎各位贡献代码并加入我们,共同构建这个项目。
🎥 演示
Related MCP server: Math-MCP
📋 目录
🚀 功能
🔍 全面的几何运算(交集、并集、缓冲等)
🌐 高级坐标变换和投影
📏 精确的距离和面积计算
🗺️ 空间分析和验证
🛠️ 轻松与 MCP 兼容客户端集成
📋 先决条件
Python 3.10 或更高版本
MCP 兼容客户端(如 Claude Desktop 或 Cursor)
用于软件包安装的互联网连接
🛠️ 安装
选择最适合您需要的安装方法:
📦pip安装
建议大多数用户使用 pip 安装:
安装 uv 包管理器:
pip install uv创建虚拟环境(Python 3.10+):
uv venv --python=3.10安装软件包:
uv pip install gis-mcp启动服务器:
gis-mcppip 配置
要使用 Claude 或 Cursor 的 pip 安装,请添加以下配置:
克劳德桌面:
视窗:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
"args": []
}
}
}Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}Cursor IDE (创建.cursor/mcp.json ):
视窗:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
"args": []
}
}
}Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}配置后:
确保将
YourUsername替换为您的实际用户名对于开发安装,请将
/path/to/gis-mcp替换为项目的实际路径重新启动 IDE 以应用更改
您现在可以通过 Claude 或 Cursor 使用所有 GIS 操作!
🛠️ 开发安装
对于贡献者和开发者:
安装 uv 包管理器:
pip install uv创建虚拟环境:
uv venv --python=3.10以开发模式安装包:
uv pip install -e .启动服务器:
python -m gis_mcp开发配置
要使用 Claude 或 Cursor 的开发安装,请添加以下配置:
克劳德桌面:
视窗:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
"args": ["-m", "gis_mcp"]
}
}
}Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}Cursor IDE (创建.cursor/mcp.json ):
视窗:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
"args": ["-m", "gis_mcp"]
}
}
}Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}配置后:
确保将
YourUsername替换为您的实际用户名对于开发安装,请将
/path/to/gis-mcp替换为项目的实际路径重新启动 IDE 以应用更改
您现在可以通过 Claude 或 Cursor 使用所有 GIS 操作!
🛠️ 可用工具
Shapely 操作
基本操作
工具 | 描述 |
| 使用可自定义的参数在几何体周围创建缓冲区 |
| 查找两个几何体的交集 |
| 组合两个几何体 |
| 寻找几何图形之间的差异 |
| 查找几何之间的对称差异 |
几何特性
工具 | 描述 |
| 计算几何体的凸包 |
| 获取几何体的边界框 |
| 获取几何体的最小旋转矩形 |
| 获取几何体的质心 |
| 获取几何体的边界 |
| 获取几何体的坐标 |
| 获取几何体的类型 |
变换
工具 | 描述 |
| 以指定的角度和原点旋转几何体 |
| 使用 x 和 y 因子缩放几何体 |
| 使用 x、y 和 z 偏移平移几何体 |
高级操作
工具 | 描述 |
| 创建几何体的三角剖分 |
| 根据点创建 Voronoi 图 |
| 创建多个几何体的联合 |
测量
工具 | 描述 |
| 获取几何的长度 |
| 获取几何体的面积 |
验证和简化
工具 | 描述 |
| 检查几何是否有效 |
| 使几何有效 |
| 简化具有指定公差的几何体 |
PyProj 操作
坐标变换
工具 | 描述 |
| 在 CRS 之间转换坐标 |
| 在 CRS 之间投影几何体 |
CRS信息
工具 | 描述 |
| 获取有关 CRS 的详细信息 |
| 获取所有可用 CRS 的列表 |
| 获取给定坐标的 UTM 区域 |
| 获取给定坐标的 UTM CRS |
| 获取给定坐标的地心 CRS |
大地测量计算
工具 | 描述 |
| 获取有关大地测量计算的信息 |
| 计算点之间的大地距离 |
| 计算给定距离和方位角的点 |
| 使用大地测量计算多边形的面积 |
🛠️ 客户端开发
工具使用示例:
缓冲区操作
Tool: buffer
Parameters: {
"geometry": "POINT(0 0)",
"distance": 10,
"resolution": 16,
"join_style": 1,
"mitre_limit": 5.0,
"single_sided": false
}坐标变换
Tool: transform_coordinates
Parameters: {
"coordinates": [0, 0],
"source_crs": "EPSG:4326",
"target_crs": "EPSG:3857"
}大地距离
Tool: calculate_geodetic_distance
Parameters: {
"point1": [0, 0],
"point2": [10, 10],
"ellps": "WGS84"
}🔮 计划功能
添加对更多 GIS 库的支持 - GDAL/OGR
实施高级空间索引
添加对光栅操作的支持
实现网络分析功能
添加对 3D 几何体的支持
实施性能优化
🤝 贡献
欢迎您贡献力量!您可以通过以下方式提供帮助:
分叉存储库
创建功能分支(
git checkout -b feature/AmazingFeature)提交您的更改(
git commit -m 'Add some AmazingFeature')推送到分支(
git push origin feature/AmazingFeature)打开拉取请求
请确保您的 PR 描述清晰地描述了问题和解决方案。如适用,请包含相关的问题编号。
📄 许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
🔗 相关项目
📞 支持
如需支持,请在 GitHub 存储库中打开一个问题。