返回市场
地理服务器-mcp

地理服务器-mcp

作者:mahdin7545 星标更新:2025-06-30

项目介绍

GeoServer MCP 服务器

<p align="center"> <img src="https://badge.mcpx.dev?type=server" title="MCP Server"/> 这是一个实现模型上下文协议(MCP)的服务器,它连接大型语言模型(LLMs)与GeoServer REST API,使AI助手能够与地理空间数据和服务进行交互。 </p> <div align="center"> <img src="docs/geoserver-mcp.png" alt="GeoServer MCP 服务器图标" width="400"/> </div>

Alpha

版本0.4.0(Alpha)正在积极开发中,并将在不久后发布。我们欢迎贡献并邀请开发者加入我们的项目构建。

🎥 演示

<div align="center"> <img src="docs/demo/list_workspaces.png" alt="GeoServer MCP 服务器演示" width="400"/> </div>

📋 目录

🚀 特性

  • 🔍 查询和操作GeoServer工作区、图层和样式
  • 🗺️ 在矢量数据上执行空间查询
  • 🎨 生成地图可视化
  • 🌐 访问符合OGC标准的网络服务(WMS, WFS)
  • 🛠️ 与兼容MCP的客户端轻松集成

📋 前提条件

  • Python 3.10或更高版本
  • 启用了REST API的运行中的GeoServer实例
  • 兼容MCP的客户端(如Claude Desktop或Cursor)
  • 用于安装包的互联网连接

🛠️ 安装

选择最适合您需求的安装方法:

通过Smithery安装

要通过Smithery自动安装GeoServer MCP服务器到Claude Desktop:

npx -y @smithery/cli install @mahdin75/geoserver-mcp --client claude

🛠️ 安装(Docker)

Docker安装是运行GeoServer MCP服务器最快且最隔离的方式。它适用于:

  • 快速测试和评估
  • 生产部署
  • 避免Python依赖的环境
  • 不同系统上的一致部署
  1. 运行geoserver-mcp:
docker pull mahdin75/geoserver-mcp
docker run -d mahdin75/geoserver-mcp
  1. 配置客户端:

如果您使用的是Claude Desktop,请编辑claude_desktop_config.json 如果您使用的是Cursor,请创建.cursor/mcp.json

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GEOSERVER_URL=http://localhost:8080/geoserver",
        "-e",
        "GEOSERVER_USER=admin",
        "-e",
        "GEOSERVER_PASSWORD=geoserver",
        "-p",
        "8080:8080",
        "mahdin75/geoserver-mcp"
      ]
    }
  }
}

🛠️ 安装(pip)

推荐大多数用户直接在其系统上运行服务器时使用pip安装。此方法适用于:

  • 希望在本地运行服务器的常规用户
  • 已安装Python 3.10+的系统
  • 希望自定义服务器配置的用户
  • 开发和测试目的
  1. 安装uv包管理器。
pip install uv
  1. 创建虚拟环境(Python 3.10+):

Linux/Mac:

uv venv --python=3.10

Windows PowerShell:

uv venv --python=3.10
  1. 使用pip安装包:
uv pip install geoserver-mcp
  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. 启动服务器:

如果您打算使用Claude桌面,则不需要这一步。对于Cursor或其他自定义客户端,应运行以下代码。

Linux:

source .venv/bin/activate

geoserver-mcp

或者

source .venv/bin/activate

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

Windows PowerShell:

.\.venv\Scripts\activate
geoserver-mcp

或者

.\.venv\Scripts\activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
  1. 配置客户端:

如果您使用的是Claude Desktop,请编辑claude_desktop_config.json 如果您使用的是Cursor,请创建.cursor/mcp.json

Windows:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "C:\\path\\to\\geoserver-mcp\\.venv\\Scripts\\geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

Linux:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "/path/to/geoserver-mcp/.venv/bin/geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

🛠️ 开发安装

开发安装旨在供对项目做出贡献的开发者和需要修改代码库的用户使用。此方法适用于:

  • 贡献项目的开发者
  • 需要修改源代码的用户
  • 测试新功能
  • 调试和开发目的
  1. 安装uv包管理器。
pip install uv
  1. 创建虚拟环境(Python 3.10+):
uv venv --python=3.10
  1. 使用pip安装包:
uv pip install -e .
  1. 配置GeoServer连接:

Linux/Mac:

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

Windows PowerShell:

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

如果您打算使用Claude桌面,则不需要这一步。对于Cursor或其他自定义客户端,应运行以下代码。

Linux:

source .venv/bin/activate

geoserver-mcp

或者

source .venv/bin/activate

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

Windows PowerShell:

.\.venv\Scripts\activate
geoserver-mcp

或者

.\.venv\Scripts\activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
  1. 配置客户端:

如果您使用的是Claude Desktop,请编辑claude_desktop_config.json 如果您使用的是Cursor,请创建.cursor/mcp.json

Windows:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "C:\\path\\to\\geoserver-mcp\\.venv\\Scripts\\geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

Linux:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "/path/to/geoserver-mcp/.venv/bin/geoserver-mcp",
      "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查询
update_features修改要素属性
delete_features根据条件删除要素

🛠️ 可视化

工具描述
generate_map创建带有样式的地图图像
create_style定义新的SLD样式
apply_style将现有样式应用于图层

🛠️ 客户端开发

如果您计划开发自己的客户端以与GeoServer MCP服务器交互,可以在examples/client.py找到一个示例客户端实现。该示例展示了:

  • 如何与MCP服务器建立连接
  • 如何发送请求和处理响应
  • 基本错误处理和连接管理
  • 各种工具和操作的示例用法

示例客户端是一个很好的起点,用于理解协议并实现您自己的客户端应用程序。

此外,这里是一个示例用法:

列出工作区


工具: list_workspaces
参数: {}
响应: ["default", "demo", "topp", "tiger", "sf"]

获取图层信息


工具: get_layer_info
参数: {
"工作区": "topp",
"图层": "states"
}

查询要素


工具: query_features
参数: {
"工作区": "topp",
"图层": "states",
"过滤器": "PERSONS > 10000000",
"属性": ["STATE_NAME", "PERSONS"]
}

生成地图


工具: generate_map
参数: {
"图层": ["topp:states"],
"样式": ["population"],
"边界框": [-124.73, 24.96, -66.97, 49.37],
"宽度": 800,
"高度": 600,
"格式": "png"
}

🔮 计划功能

  • 覆盖和栅格数据管理
  • 安全性和访问控制
  • 高级样式能力
  • WPS处理操作
  • GeoWebCache集成

🤝 贡献

我们欢迎贡献!以下是您可以帮助的方式:

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m '添加一些AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开拉取请求

请确保您的PR描述清楚地描述了问题和解决方案。如果适用,请包括相关的issue编号。

📄 许可

本项目根据MIT许可证授权 - 查看LICENSE文件了解详情。

🔗 相关项目

📞 支持

如有疑问,请打开一个问题

🏆 徽章

<div align="center"> <a href="https://glama.ai/mcp/servers/@mahdin75/geoserver-mcp"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=2854644448,249908765&fm=3081&app=3081&f=PNG?w=760&h=400" alt="GeoServer Server MCP服务器" /> </a> <br/><br/><br/> <a href="https://mcp.so/server/Geoserver%20MCP%20Server/mahdin75"> <img src="https://gips3.baidu.com/it/u=3373652306,1218149413&fm=3081&app=3081&f=PNG?w=478&h=480" alt="MCP.so 徽章" width="150"/> </a> <br/><br/><br/>

MseeP.ai 安全评估徽章

</div>