Skip to main content

MCP (Model Context Protocol) server for GeoServer - enables AI assistants to manage GeoServer workspaces, datastores, layers, and styles through natural language

Project description

GeoServer MCP Server

A Model Context Protocol (MCP) server that exposes GeoServer REST API functionality for natural language interaction through AI assistants like Claude, VS Code Copilot, and other MCP-compatible clients.

About

This MCP server wraps the python-geoservercloud library, exposing 80+ GeoServer operations as MCP tools. This enables AI assistants to manage GeoServer workspaces, datastores, layers, styles, and more through natural language commands.

Example Interactions

Once connected, you can ask your AI assistant things like:

  • "List all workspaces in GeoServer"
  • "Create a new workspace called 'test_data'"
  • "What layers are available in the 'topp' workspace?"
  • "Create a PostGIS datastore connection"

Quick Start

Option 1: Full Local Development Stack

Start the MCP server with a local GeoServer and PostGIS:

cd mcp
docker compose up -d

This starts:

  • geoservercloud-mcp: The MCP server on port 8000
  • geoserver: GeoServer instance on port 8080
  • postgis: PostGIS database on port 5433

Option 2: MCP Server Only (Connect to External GeoServer)

If you have an existing GeoServer:

cd mcp
GEOSERVER_URL=http://your-geoserver:8080/geoserver \
GEOSERVER_USER=admin \
GEOSERVER_PASSWORD=your-password \
docker compose up -d geoservercloud-mcp

Connecting to AI Clients

VS Code / Cursor

  1. Open Command Palette → "MCP: Add Server"
  2. Select "Command (stdio)"
  3. Enter command: poetry run geoservercloud-mcp
  4. Enter server ID: geoserver

VS Code will create an MCP configuration file. Update it with the working directory and environment variables:

{
  "servers": {
    "geoserver": {
      "type": "stdio",
      "command": "poetry",
      "args": ["run", "geoservercloud-mcp"],
      "cwd": "/path/to/python-geoservercloud",
      "env": {
        "GEOSERVER_URL": "http://localhost:8080/geoserver",
        "GEOSERVER_USER": "admin",
        "GEOSERVER_PASSWORD": "geoserver"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "geoserver": {
      "command": "poetry",
      "args": ["run", "geoservercloud-mcp"],
      "cwd": "/path/to/python-geoservercloud",
      "env": {
        "GEOSERVER_URL": "http://localhost:8080/geoserver",
        "GEOSERVER_USER": "admin",
        "GEOSERVER_PASSWORD": "geoserver"
      }
    }
  }
}

Restart Claude Desktop after saving the configuration.


Testing with FastMCP Inspector

The MCP server includes a built-in inspector UI for debugging:

# From project root
poetry install
poetry run fastmcp dev geoservercloud/mcp/server.py

Open http://127.0.0.1:6274 in your browser to test individual tools.


Environment Variables

Variable Default Description
GEOSERVER_URL http://localhost:8080/geoserver GeoServer base URL
GEOSERVER_USER admin GeoServer username
GEOSERVER_PASSWORD geoserver GeoServer password

Docker Commands

# Start all services
cd mcp
docker compose up -d

# Stop services
docker compose down

# Stop and remove volumes (data)
docker compose down -v

# View logs
docker compose logs -f geoservercloud-mcp

Python Library

This MCP server is built on the python-geoservercloud library. For programmatic access without MCP, see the library documentation.

from geoservercloud import GeoServerCloud

geoserver = GeoServerCloud(
    url="http://localhost:8080/geoserver",
    user="admin",
    password="geoserver",
)
geoserver.create_workspace("my_workspace")

Full documentation: https://camptocamp.github.io/python-geoservercloud/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geoservercloud_mcp-0.1.1.tar.gz (16.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geoservercloud_mcp-0.1.1-py3-none-any.whl (16.2 MB view details)

Uploaded Python 3

File details

Details for the file geoservercloud_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: geoservercloud_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 16.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.10 Linux/6.14.0-37-generic

File hashes

Hashes for geoservercloud_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 423c177256daed0979caca1722de8ab1338d20c9f26207ca9e89cd511cc2971d
MD5 3e6271d5adfcbbf45dea175322e139f1
BLAKE2b-256 f44231cd78b2cb2bb2929d4e3f521b09afa2c871369ab515842e04b66c92033b

See more details on using hashes here.

File details

Details for the file geoservercloud_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: geoservercloud_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 16.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.10 Linux/6.14.0-37-generic

File hashes

Hashes for geoservercloud_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b6c219843d0b3b483fcfa1650202c78ccc4a6ff1e4c5b0955d0b5abd425da611
MD5 319330f0a8abc3aa29dd355caab0d55a
BLAKE2b-256 ec557202211ed46169fda3c56bebe5fe64ae495954367c23214a09639a543630

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page