GeoServer MCP Server

by mahdin75
Verified
MIT License
2
  • Linux
  • Apple

GeoServer MCP 服务器

模型上下文协议 (MCP) 服务器实现将大型语言模型 (LLM) 连接到 GeoServer REST API,使 AI 助手能够与地理空间数据和服务进行交互。

🚀 功能

  • 🔍 查询和操作 GeoServer 工作区、图层和样式
  • 🗺️ 对矢量数据执行空间查询
  • 🎨 生成地图可视化
  • 🌐 访问符合 OGC 标准的 Web 服务(WMS、WFS)

📋 先决条件

  • Python 3.10+
  • 运行启用 REST API 的 GeoServer 实例
  • MCP 兼容客户端(如 Claude Desktop)
  • geoserver-rest

🛠️ 安装

  1. 安装软件包:
pip install -e .
  1. 配置GeoServer连接:

Linux/Mac:

export GEOSERVER_URL="http://localhost:8080/geoserver" export GEOSERVER_USER="admin" export GEOSERVER_PASSWORD="geoserver"

Windows PowerShell:

$env:GEOSERVER_URL="http://localhost:8080/geoserver" $env:GEOSERVER_USER="admin" $env:GEOSERVER_PASSWORD="geoserver"
  1. 启动服务器:
geoserver-mcp-server

🔧 配置

命令行参数

geoserver-mcp-server --url http://localhost:8080/geoserver --user admin --password geoserver --debug

MCP 客户端集成

克劳德桌面

编辑claude_desktop_config.json

"mcpServers": { "geoserver-mcp-server": { "command": "geoserver-mcp-server", "args": [ "--url", "http://localhost:8080/geoserver", "--user", "admin", "--password", "geoserver" ] } }

光标

创建.cursor/mcp.json

{ "mcpServers": { "geoserver-mcp-server": { "command": "geoserver-mcp-server", "args": [ "--url", "http://localhost:8080/geoserver", "--user", "admin", "--password", "geoserver" ] } } }

🛠️ 可用工具

目录管理

  • list_workspaces - 获取可用的工作空间
  • create_workspace创建一个新的工作区
  • get_layer_info - 获取详细的图层元数据
  • list_layers - 列出工作区中的图层
  • create_layer创建新层
  • delete_resource - 删除资源

数据操作

  • query_features - 对矢量数据执行 CQL 查询

可视化

  • generate_map - 创建样式地图图像
  • create_style - 定义新的 SLD 样式

📚 使用示例

列出工作区

Tool: list_workspaces Parameters: {} Response: ["default", "demo", "topp", "tiger", "sf"]

工作区在 MCP 客户端中的显示方式如下:

屏幕截图显示了 GeoServer 实例中实际可用的工作区,包括:mahdi、demo-workspace、cite、tiger、nurc、sde、it.geosolutions、topp 和 sf。这些工作区用作组织 GeoServer 资源的容器。

获取图层信息

Tool: get_layer_info Parameters: { "workspace": "topp", "layer": "states" }

查询功能

Tool: query_features Parameters: { "workspace": "topp", "layer": "states", "filter": "PERSONS > 10000000", "properties": ["STATE_NAME", "PERSONS"] }

生成地图

Tool: generate_map Parameters: { "layers": ["topp:states"], "styles": ["population"], "bbox": [-124.73, 24.96, -66.97, 49.37], "width": 800, "height": 600, "format": "png" }

🔮 计划功能

  • 覆盖范围和栅格数据管理
  • 安全和访问控制
  • 高级造型功能
  • WPS处理操作
  • GeoWebCache 集成

🤝 贡献

欢迎贡献代码!欢迎提交 Pull 请求。

📄 许可证

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

🔗 相关项目

ID: dcvyllecj0