The GeoServer MCP Server enables AI assistants to interact with geospatial data and services via the GeoServer REST API. It acts as a gateway using the Model Context Protocol (MCP) for managing geospatial resources.
Capabilities include:
- 🔍 List, create, and manage GeoServer workspaces and layers
- 🗺️ Execute spatial queries on vector data using CQL filters
- 🎨 Generate map images with WMS GetMap
- 🛠️ Create and apply SLD styles for map visualization
- 🗑️ Delete resources (workspaces, layers, styles, etc.)
- 📊 Retrieve detailed metadata about layers and workspaces
- 🌐 Interact with OGC-compliant web services (WMS, WFS)
GeoServer MCP Server
Version 0.4.0 (Alpha) is under active development and will be released shortly. We are open to contributions and welcome developers to join us in building this project.
🎥 Demo
📋 Table of Contents
- Features
- Prerequisites
- Installation
- Available Tools
- Client Development
- Planned Features
- Contributing
- License
- Related Projects
- Support
- Badges
🚀 Features
- 🔍 Query and manipulate GeoServer workspaces, layers, and styles
- 🗺️ Execute spatial queries on vector data
- 🎨 Generate map visualizations
- 🌐 Access OGC-compliant web services (WMS, WFS)
- 🛠️ Easy integration with MCP-compatible clients
📋 Prerequisites
- Python 3.10 or higher
- Running GeoServer instance with REST API enabled
- MCP-compatible client (like Claude Desktop or Cursor)
- Internet connection for package installation
🛠️ Installation
Choose the installation method that best suits your needs:
🛠️ Installation (Docker)
The Docker installation is the quickest and most isolated way to run the GeoServer MCP server. It's ideal for:
- Quick testing and evaluation
- Production deployments
- Environments where you want to avoid Python dependencies
- Consistent deployment across different systems
- Run geoserver-mcp:
- Configure the clients:
If you are using Claude Desktop, edit claude_desktop_config.json
If you are using Cursor, Create .cursor/mcp.json
🛠️ Installation (pip)
The pip installation is recommended for most users who want to run the server directly on their system. This method is best for:
- Regular users who want to run the server locally
- Systems where you have Python 3.10+ installed
- Users who want to customize the server configuration
- Development and testing purposes
- Install uv package manager.
- Create the Virtual Environment (Python 3.10+):
Linux/Mac:
Windows PowerShell:
- Install the package using pip:
- Configure GeoServer connection:
Linux/Mac:
Windows PowerShell:
- Start the server:
If you are going to use Claude desktop you don't need this step. For cursor or your own custom client you should run the following code.
Linux:
or
Windows PowerShell:
or
- Configure Clients:
If you are using Claude Desktop, edit claude_desktop_config.json
If you are using Cursor, Create .cursor/mcp.json
Windows:
Linux:
🛠️ Development installation
The development installation is designed for contributors and developers who want to modify the codebase. This method is suitable for:
- Developers contributing to the project
- Users who need to modify the source code
- Testing new features
- Debugging and development purposes
- Install uv package manager.
- Create the Virtual Environment (Python 3.10+):
- Install the package using pip:
- Configure GeoServer connection:
Linux/Mac:
Windows PowerShell:
- Start the server:
If you are going to use Claude desktop you don't need this step. For cursor or your own custom client you should run the following code.
Linux:
or
Windows PowerShell:
or
- Configure Clients:
If you are using Claude Desktop, edit claude_desktop_config.json
If you are using Cursor, Create .cursor/mcp.json
Windows:
Linux:
🛠️ Available Tools
🛠️ Workspace and Layer Management
Tool | Description |
---|---|
list_workspaces | Get available workspaces |
create_workspace | Create a new workspace |
get_layer_info | Get detailed layer metadata |
list_layers | List layers in a workspace |
create_layer | Create a new layer |
delete_resource | Remove resources |
🛠️ Data Operations
Tool | Description |
---|---|
query_features | Execute CQL queries on vector data |
update_features | Modify feature attributes |
delete_features | Remove features based on criteria |
🛠️ Visualization
Tool | Description |
---|---|
generate_map | Create styled map images |
create_style | Define new SLD styles |
apply_style | Apply existing styles to layers |
🛠️ Client Development
If you're planning to develop your own client to interact with the GeoServer MCP server, you can find inspiration in the example client implementation at examples/client.py
. This example demonstrates:
- How to establish a connection with the MCP server
- How to send requests and handle responses
- Basic error handling and connection management
- Example usage of various tools and operations
The example client serves as a good starting point for understanding the protocol and implementing your own client applications.
Also, here is the example usgage:
List Workspaces
Get Layer Information
Query Features
Generate Map
🔮 Planned Features
- Coverage and raster data management
- Security and access control
- Advanced styling capabilities
- WPS processing operations
- GeoWebCache integration
🤝 Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Please ensure your PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Related Projects
- Model Context Protocol - The core MCP implementation
- GeoServer REST API - Official GeoServer REST documentation
- GeoServer REST Python Client - Python client for GeoServer REST API
📞 Support
For support, please Open an issue
🏆 Badges
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
A Model Context Protocol server that connects Large Language Models to the GeoServer REST API, enabling AI assistants to query and manipulate geospatial data through natural language.
- 🎥 Demo
- 📋 Table of Contents
- 🚀 Features
- 📋 Prerequisites
- 🛠️ Installation
- 🛠️ Available Tools
- 🛠️ Client Development
- 🔮 Planned Features
- 🤝 Contributing
- 📄 License
- 🔗 Related Projects
- 📞 Support
- 🏆 Badges
Related Resources
Related MCP Servers
- -securityAlicense-qualityA server that enables Large Language Models to discover and interact with REST APIs defined by OpenAPI specifications through the Model Context Protocol.Last updated -37896TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that provides Google Maps API integration, allowing users to search locations, get place details, geocode addresses, calculate distances, obtain directions, and retrieve elevation data through LLM processing capabilities.Last updated -716325TypeScriptMIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that enables large language models to interact with Apache Superset databases through REST API, supporting database queries, table lookups, field information retrieval, and SQL execution.Last updated -43TypeScript
- -securityAlicense-qualityA customizable Model Context Protocol server implementation that enables AI models to interact with external tools including weather queries, Google search, and camera control functionality.Last updated -8PythonApache 2.0