mahdin75
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"geoserver-mcp": {
"args": [
"--url",
"http://localhost:8080/geoserver",
"--user",
"admin",
"--password",
"geoserver"
],
"command": "C:\\path\\to\\geoserver-mcp\\.venv\\Scripts\\geoserver-mcp"
}
}
}
服务介绍
GeoServer MCP 服务器
版本 0.4.0(Alpha)正在积极开发中,并将很快发布。我们欢迎贡献者和开发者加入我们共同构建这个项目。
🎥 演示
📋 目录
🚀 功能
- 🔍 查询和操作 GeoServer 工作区、图层和样式
- 🗺️ 对矢量数据执行空间查询
- 🎨 生成地图可视化
- 🌐 访问 OGC 兼容的 Web 服务 (WMS, WFS)
- 🛠️ 与 MCP 兼容的客户端轻松集成
📋 前提条件
- Python 3.10 或更高版本
- 正在运行的 GeoServer 实例并启用了 REST API
- MCP 兼容的客户端(如 Claude Desktop 或 Cursor)
- 用于包安装的互联网连接
🛠️ 安装
选择最适合您需求的安装方法:
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装 GeoServer MCP 服务器,请使用以下命令:
bash
npx -y @smithery/cli install @mahdin75/geoserver-mcp --client claude
🛠️ Docker 安装
Docker 安装是运行 GeoServer MCP 服务器最快且最隔离的方式。它适用于:
- 快速测试和评估
- 生产部署
- 不希望依赖 Python 环境的情况
- 在不同系统上保持一致的部署
- 运行 geoserver-mcp:
bash
docker pull mahdin75/geoserver-mcp
docker run -d mahdin75/geoserver-mcp
- 配置客户端:
如果您使用的是 Claude Desktop,请编辑 claude_desktop_config.json。
如果您使用的是 Cursor,请创建 .cursor/mcp.json。
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+ 的系统
- 希望自定义服务器配置的用户
- 开发和测试目的
- 安装 uv 包管理器。
bash
pip install uv
- 创建虚拟环境(Python 3.10+):
Linux/Mac:
bash
uv venv --python=3.10
Windows PowerShell:
bash
uv venv --python=3.103. 使用 pip 安装包:
bash
uv pip install geoserver-mcp
- 配置 GeoServer 连接:
Linux/Mac:
bash
export GEOSERVER_URL="http://localhost:8080/geoserver"
export GEOSERVER_USER="admin"
export GEOSERVER_PASSWORD="geoserver"
Windows PowerShell:
powershell
$env:GEOSERVER_URL="http://localhost:8080/geoserver"
$env:GEOSERVER_USER="admin"
$env:GEOSERVER_PASSWORD="geoserver"
- 启动服务器:
如果你将使用 Claude 桌面版,则不需要此步骤。对于 Cursor 或你自己的自定义客户端,你应该运行以下代码。
Linux:
bash
source .venv/bin/activate
geoserver-mcp
或
bash
source .venv/bin/activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
Windows PowerShell:
bash
..venvScriptsactivate
geoserver-mcp
或
bash
..venvScriptsactivate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
- 配置客户端:
如果你使用的是 Claude 桌面版,请编辑 claude_desktop_config.json。
如果你使用的是 Cursor,请创建 .cursor/mcp.json。
Windows:
json
{
"mcpServers": {
"geoserver-mcp": {
"command": "C:\path\to\geoserver-mcp\.venv\Scripts\geoserver-mcp",
"args": [
"--url",
"http://localhost:8080/geoserver",
"--user",
"admin",
"--password",
"geoserver"
]
}
}
}
Linux:
json
{
"mcpServers": {
"geoserver-mcp": {
"command": "/path/to/geoserver-mcp/.venv/bin/geoserver-mcp",
"args": [
"--url",
"http://localhost:8080/geoserver",
"--user",
"admin",
"--password",
"geoserver"
]
}
}
}
🛠️ 开发安装
开发安装是为贡献者和开发者设计的,他们希望修改代码库。这种方法适用于:
- 为项目做贡献的开发者
- 需要修改源代码的用户
- 测试新功能
- 调试和开发目的
- 安装 uv 包管理器。
bash
pip install uv
- 创建虚拟环境(Python 3.10+):
bash
uv venv --python=3.10
- 使用 pip 安装包:
bash
uv pip install -e .
- 配置 GeoServer 连接:
Linux/Mac:
bash
export GEOSERVER_URL="http://localhost:8080/geoserver"
export GEOSERVER_USER="admin"
export GEOSERVER_PASSWORD="geoserver"
Windows PowerShell:
powershell
$env:GEOSERVER_URL="http://localhost:8080/geoserver"
$env:GEOSERVER_USER="admin"
$env:GEOSERVER_PASSWORD="geoserver"
- 启动服务器:
如果你将使用 Claude 桌面版,则不需要此步骤。对于 Cursor 或你自己的自定义客户端,你应该运行以下代码。
Linux:
bash
source .venv/bin/activate
geoserver-mcp
或
bash
source .venv/bin/activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
Windows PowerShell:
bash
..venvScriptsactivate
geoserver-mcp
或
bash
..venvScriptsactivate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
- 配置客户端:
如果你使用的是 Claude 桌面版,请编辑 claude_desktop_config.json。
如果你使用的是 Cursor,请创建 .cursor/mcp.json。
Windows:
json
{
"mcpServers": {
"geoserver-mcp": {
"command": "C:\path\to\geoserver-mcp\.venv\Scripts\geoserver-mcp",
"args": [
"--url",
"http://localhost:8080/geoserver",
"--user",
"admin",
"--password",
"geoserver"
]
}
}
}
Linux:
json
{
"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服务器建立连接
- 如何发送请求并处理响应
- 基本的错误处理和连接管理
- 各种工具和操作的使用示例
示例客户端是理解协议和实现您自己的客户端应用程序的良好起点。
此外,这里有一些示例用法:
列出工作区
Tool: list_workspaces
Parameters: {}
Response: ["default", "demo", "topp", "tiger", "sf"]
获取图层信息
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集成
🤝 贡献
我们欢迎贡献!以下是您可以帮助的方式:
- 分叉仓库
- 创建一个特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个拉取请求
请确保您的PR描述清楚地说明了问题和解决方案。如果适用,请包含相关的issue编号。
📄 许可证
此项目根据MIT许可证许可 - 详情请参阅LICENSE文件。
🔗 相关项目
- Model Context Protocol - 核心MCP实现
- GeoServer REST API - 官方GeoServer REST文档
- GeoServer REST Python Client - GeoServer REST API的Python客户端
📞 支持
如需支持,请打开issue