QGIS MCP

100 tools. 63 can modify or destroy data without limits.

6 destructive tools with no built-in limits. Policy required.

Last updated:

63 can modify or destroy data
37 read-only
100 tools total

Community server · catalogue entry verified 27/06/2026

How to control QGIS MCP ↓

What QGIS MCP exposes to your agents

Read (37) Write / Execute (57) Destructive / Financial (6)
Critical Risk

The most dangerous QGIS MCP tools

63 of QGIS MCP's 100 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control QGIS MCP

PolicyLayer is an MCP gateway — it sits between your AI agents and QGIS MCP, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "delete_features": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "add_bookmark": {
    "limits": [
      {
        "counter": "add_bookmark_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "diagnose": {
    "limits": [
      {
        "counter": "diagnose_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register QGIS MCP — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON QGIS →

Instant setup, no code required.

All 100 QGIS MCP tools

WRITE 48 tools
Write add_bookmark Add a spatial bookmark to the project for quick navigation. Write add_features Add features to a vector layer. Each feature: {attributes: {field: value}, Write add_field Add a new field to a vector layer. field_type: Write add_layout_label Add a text label to a print layout (mm). text may contain [% expression %] Write add_layout_legend Add a legend to a print layout, linked to a map item (defaults to the first Write add_layout_map Add a map item to a print layout at specified position and size (in millimeters). Write add_layout_picture Add a picture or SVG (logo, north arrow) to a print layout. path is an image Write add_layout_scalebar Add a scale bar to a print layout, linked to a map item. style e.g. Write add_layout_table Add an attribute table for a vector layer to a print layout. Write add_map_theme Create a map theme from the current layer visibility state. Write add_raster_layer Add a raster layer (GeoTIFF, etc.) to the project. Write add_table_join Add a table join to a vector layer. Write add_vector_layer Add a vector layer (shapefile, GeoJSON, GeoPackage, etc.) to the project. Write add_web_layer Add a web layer (XYZ, WMS, WFS) to the project. service: Write apply_map_theme Apply a map theme — restores the layer visibility state saved in the theme. Write apply_style_qml Apply a QGIS QML style file to a layer. Write area_m2 Add (if missing) + populate a field from a QGIS expression, per feature, in-place. Write clear_selection Clear the selection on a layer. Write configure_atlas Configure a print layout Write create_layer_group Create a new layer group in the layer tree. Write create_layout Create a new print layout. Write create_memory_layer Create a new in-memory vector layer. geometry_type: Point, LineString, Polygon, Write create_new_project Create a new empty QGIS project and save it to the given path. Write duplicate_layer Duplicate a layer (including its style) under a new name. Write export_atlas Export a configured atlas. format Write export_layer Export vector/raster to disk; format from output_path extension Write export_layout Export a print layout to file. format: Write move_layer_to_group Move a layer into a layer group by group name. Write rename_field Rename a field in a vector layer. Write render_map Render the current map canvas to an image. Returns the image inline so you can see it. Write save_project Save the current project. Optionally specify a new path. Write save_style_qml Save a layer Write select_features Select features in a layer by expression or feature IDs. Write set_active_layer Set the active layer in the QGIS layer panel by layer ID. Write set_canvas_extent Set the map canvas extent. Coordinates should be in the specified CRS (default: project CRS). Write set_canvas_scale Set the map canvas scale and/or rotation. Provide scale as denominator Write set_layer_crs Set the CRS of a layer (e.g. Write set_layer_labeling Configure labeling for a vector layer. Set enabled=false to disable labels. Write set_layer_order Set the explicit layer draw order in the tree. layer_ids is the ordered list Write set_layer_property Set a layer property. Supported properties: opacity (0.0-1.0), name (string), Write set_layer_style Set symbology. style_type: Write set_layer_visibility Set a layer Write set_project_crs Set the project coordinate reference system (e.g. Write set_project_variable Set a project-level variable. Variables are accessible in expressions as @key. Write set_setting Write a QGIS setting. Use with care — incorrect settings can affect QGIS behavior. Write spatial_join Join attributes by location (native:joinattributesbylocation). Write system system Write update_features Update feature attributes. updates: [{fid: 1, attributes: {field: value}}].
READ 37 tools
Read diagnose Run diagnostic checks on the QGIS MCP stack. Reports QGIS version, Read find_layer Find layers by name pattern. Supports fnmatch wildcards (e.g. Read get_active_layer Get the currently active (selected) layer in the QGIS layer panel. Read get_algorithm_help Get detailed help for a processing algorithm: parameters (name, type, optional, default), Read get_bookmarks Get spatial bookmarks from the project. Each bookmark has a name, group, Read get_canvas_extent Get the current map canvas extent and CRS. Read get_canvas_scale Get the current map canvas scale, rotation, and magnification factor. Read get_canvas_screenshot Grab a fast screenshot of the current map canvas widget (no re-render). Read get_field_statistics Compute aggregate statistics (count, sum, mean, min, max, stdev) for a numeric field. Read get_layer_crs Get the coordinate reference system (CRS) of a layer: EPSG code, description, Read get_layer_extent Get the spatial extent (bounding box) and CRS of a layer. Read get_layer_features Get features from a vector layer. Flat dicts: _fid + attributes at top level. Read get_layer_labeling Get the labeling configuration of a vector layer: enabled state, field, font size, color. Read get_layer_tree Get the full layer tree structure with groups and layers. Read get_layers List layers in the current project with IDs, names, types, visibility, and type-specific info. Read get_layout_info List items in a print layout (type, id, uuid, position, size) and page count. Read get_map_themes Get map themes (visibility presets). Each theme stores which layers are visible. Read get_message_log Get QGIS message log entries. Filter by level ( Read get_plugin_info Get detailed info for a specific plugin: name, enabled, version, description, author, path. Read get_processing_providers List Processing providers (native, gdal, grass, saga, model, ...) with Read get_project_info Get current project metadata: filename, title, CRS, layer count, and summary of layers. Read get_project_variables Get all project-level variables (key-value pairs set in Project Properties). Read get_qgis_info Get QGIS version, profile path, and plugin count. Read get_raster_info Get raster layer info: band count, dimensions, CRS, extent, per-band statistics, nodata values. Read get_selection Get the current selection for a layer. Returns feature IDs and count. Read get_setting Read a QGIS setting by key path (e.g. Read get_unique_values Return the distinct values of a field. Use Read identify_features Identify features at a point [x, y] in project CRS across layers (map-click Read list_layouts List all print layouts in the current project with names and page counts. Read list_plugins List installed QGIS plugins with name, enabled status, and version. Read list_processing_algorithms Search for processing algorithms by keyword and/or provider. Read list_processing_models List registered Processing models (the Read load_project Load a QGIS project from a .qgs/.qgz file path. Read ping Check connectivity to the QGIS plugin server. Returns pong if connected. Read sample_raster_values Sample raster pixel values at points. Read validate_expression Validate a QGIS expression. Returns whether it Read zonal_statistics Per-polygon stats from a raster (native:zonalstatisticsfb).

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about QGIS MCP

Can an AI agent delete data through the QGIS MCP server? +

Yes. The QGIS MCP server exposes 6 destructive tools including delete_features, delete_field, remove_bookmark. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through QGIS MCP? +

The QGIS MCP server has 48 write tools including add_bookmark, add_features, add_field. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach QGIS MCP.

How many tools does the QGIS MCP server expose? +

100 tools across 4 categories: Destructive, Execute, Read, Write. 37 are read-only. 63 can modify, create, or delete data.

How do I enforce a policy on QGIS MCP? +

Register the QGIS MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every QGIS MCP tool call.

Deterministic rules across all 100 QGIS MCP tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

100 QGIS MCP tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.