QGISMCP
Allows Claude AI to directly interact with and control QGIS, enabling project creation, layer loading, processing execution, and code execution.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@QGISMCP Add a vector layer from a shapefile"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QGISMCP - QGIS Model Context Protocol Integration
QGISMCP connects QGIS to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control QGIS. This integration enables prompt assisted project creation, layer loading, code execution and more.
This project is strongly based on the BlenderMCP project by Siddharth Ahuja
Features
Two-way communication: Connect Claude AI to QGIS through a socket-based server.
Project manipulation: Create, load and save projects in QGIS.
Layer manipulation: Add and remove vector or raster layers to a project.
Execute processing: Execute processing algorithms (Processing Toolbox).
Code execution: Run arbitrary Python code in QGIS from Claude. Very powerful, but also be very cautious using this tool.
Related MCP server: QGISMCP
Components
The system consists of two main components:
QGIS plugin: A QGIS plugin that creates a socket server within QGIS to receive and execute commands.
MCP Server: A Python server that implements the Model Context Protocol and connects to the QGIS plugin.
Installation
Prerequisites
QGIS 3.X (only tested on 3.22)
Claude desktop
Python 3.10 or newer
uv package manager:
If you're on Mac, please install uv as
brew install uvOn Windows Powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Otherwise installation instructions are on their website: Install uv
⚠️ Do not proceed before installing UV
Download code
Download this repo to your computer. You can clone it with:
git clone git@github.com:jjsantos01/qgis_mcp.gitQGIS plugin
You need to copy the folder qgis_mcp_plugin and its content on your QGIS profile plugins folder.
You can get your profile folder in QGIS going to menu Settings -> User profiles -> Open active profile folder Then, go to Python/plugins and paste the folder qgis_mcp_plugin.
On a Windows machine the plugins folder is usually located at:
C:\Users\USER\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
and on MacOS: ~/Library/Application\ Support/QGIS/QGIS3/profiles/default/python/plugins
Then close QGIS and open it again. Go to the menu option Plugins > Installing and Managing Plugins, select the All tab and search for "QGIS MCP", then mark the QGIS MCP checkbox.
Claude for Desktop Integration
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
If you can't find the "Developers tab" or the
claude_desktop_config.jsonlook at this documentation.
{
"mcpServers": {
"qgis": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/REPO/FOLDER/qgis_mcp/src/qgis_mcp",
"run",
"qgis_mcp_server.py"
]
}
}
}Usage
Starting the Connection
In QGIS, go to
plugins>QGIS MCP>QGIS MCP
Click "Start Server"

Using with Claude
Once the config file has been set on Claude, and the server is running on QGIS, you will see a hammer icon with tools for the QGIS MCP.

Tools
ping- Simple ping command to check server connectivityget_qgis_info- Get QGIS information about the current installationload_project- Load a QGIS project from the specified pathcreate_new_project- Create a new project and save itget_project_info- Get current project informationadd_vector_layer- Add a vector layer to the projectadd_raster_layer- Add a raster layer to the projectget_layers- Retrieve all layers in the current projectremove_layer- Remove a layer from the project by its IDzoom_to_layer- Zoom to the extent of a specified layerget_layer_features- Retrieve features from a vector layer with an optional limitexecute_processing- Execute a processing algorithm with the given parameterssave_project- Save the current project to the given pathrender_map- Render the current map view to an image fileexecute_code- Execute arbitrary PyQGIS code provided as a string
Example Commands
This is the example I used for the demo:
You have access to the tools to work with QGIS. You will do the following:
1. Ping to check the connection. If it works, continue with the following steps.
2. Create a new project and save it at: "C:/Users/USER/GitHub/qgis_mcp/data/cdmx.qgz"
3. Load the vector layer: ""C:/Users/USER/GitHub/qgis_mcp/data/cdmx/mgpc_2019.shp" and name it "Colonias".
4. Load the raster layer: "C:/Users/USER/GitHub/qgis_mcp/data/09014.tif" and name it "BJ"
5. Zoom to the "BJ" layer.
6. Execute the centroid algorithm on the "Colonias" layer. Skip the geometry check. Save the output to "colonias_centroids.geojson".
7. Execute code to create a choropleth map using the "POB2010" field in the "Colonias" layer. Use the quantile classification method with 5 classes and the Spectral color ramp.
8. Render the map to "C:/Users/USER/GitHub/qgis_mcp/data/cdmx.png"
9. Save the project.Available Tools
15 toolsadd_raster_layerC
Add a raster layer to the project.
Inputs: path (required), provider, name.
add_vector_layerC
Add a vector layer to the project.
Inputs: path (required), provider, name.
create_new_projectC
Create a new project a save it
Inputs: path (required).
execute_codeC
Execute arbitrary PyQGIS code provided as a string.
Inputs: code (required).
execute_processingC
Execute a processing algorithm with the given parameters.
Inputs: algorithm (required), parameters (required).
get_layer_featuresB
Retrieve features from a vector layer with an optional limit.
Inputs: layer_id (required), limit.
get_layersA
Retrieve all layers in the current project.
Inputs: no named parameters.
get_project_infoC
Get current project information
Inputs: no named parameters.
get_qgis_infoC
Get QGIS information
Inputs: no named parameters.
load_projectB
Load a QGIS project from the specified path.
Inputs: path (required).
pingA
Simple ping command to check server connectivity
Inputs: no named parameters.
remove_layerB
Remove a layer from the project by its ID.
Inputs: layer_id (required).
render_mapC
Render the current map view to an image file with the specified dimensions.
Inputs: path (required), width, height.
save_projectA
Save the current project to the given path, or to the current project path if not specified.
Inputs: path.
zoom_to_layerC
Zoom to the extent of a specified layer.
Inputs: layer_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
All tools have clearly distinct purposes. Layer operations (add, remove, get, zoom) are separate from project operations (create, load, save) and execution tools (code vs processing). Ping is a standalone health check.
Nearly all tools follow a consistent verb_noun pattern with underscores (e.g., add_raster_layer, get_layers, remove_layer). The only exception is 'ping', which is a standard single-word health check command.
With 15 tools, the count is well within the ideal range. Each tool serves a core QGIS function—project management, layer operations, execution, retrieval, rendering—without redundancy or gaps.
The tool set covers essential CRUD for projects and layers, plus code execution, processing algorithms, and rendering. Missing advanced features like layer style updates or feature editing, but core workflows are complete.
Maintenance
Related MCP Connectors
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Make AI videos and images in Qulture Studio from ChatGPT, Claude, Cursor or any MCP client.
Related MCP Servers
- FlicenseBqualityDmaintenanceConnects Claude AI to QGIS through the Model Context Protocol, allowing Claude to directly interact with and control QGIS for tasks like project creation, layer manipulation, and code execution.151,150-
- FlicenseNot gradedqualityDmaintenanceConnects QGIS to Claude AI through the Model Context Protocol, enabling AI-assisted project creation, layer manipulation, processing algorithm execution, and Python code running within QGIS.7-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that connects Claude AI to QGIS, enabling direct interaction with the GIS software for project creation, layer manipulation, code execution, and processing algorithms through natural language prompts.1510Creative Commons Zero v1.0 Universal
- AlicenseAqualityDmaintenanceConnect QGIS to Claude AI through the Model Context Protocol (MCP), enabling Claude to directly control QGIS — manage layers, edit features, run processing algorithms, render maps, and more.1001MIT