[general]
name=QGIS MCP
qgisMinimumVersion=3.28
qgisMaximumVersion=4.99
description=Connect QGIS to Claude AI via the Model Context Protocol (MCP)
about=Socket server plugin that exposes QGIS operations to LLMs through the
    Model Context Protocol. Enables Claude to directly control QGIS: manage
    layers, edit features, run processing algorithms, render maps, and more.

    This plugin is only one half of the setup. You also need an MCP server
    so that Claude (or another LLM) can talk to QGIS.
    See https://github.com/nkarasiak/qgis-mcp for installation instructions.

    Features:
    - 100+ MCP tools for layers, features, processing, rendering, layouts
    - Diagnose tool for full stack health checks
    - Plugin development tools: message log, plugin reload, layer tree
    - Expression validation, project variables, settings access
    - Non-blocking TCP socket server with length-prefixed framing
    - Toolbar button with port configuration dropdown

version=0.8.1
author=Nicolas Karasiak
email=nicart@gmail.com
tags=mcp,ai,claude,llm,automation,socket,remote
homepage=https://github.com/nkarasiak/qgis-mcp
tracker=https://github.com/nkarasiak/qgis-mcp/issues
repository=https://github.com/nkarasiak/qgis-mcp
license=MIT
category=Plugins
icon=icons/icon.png
experimental=False
deprecated=False
changelog=0.8.1 : Support mcp 2.0, which renamed mcp.server.fastmcp to
    mcp.server.mcpserver — the dependency had no upper bound and uvx resolves
    fresh, so every new install of the MCP server failed on import; it now works
    on both SDK majors and is capped below 3 (thanks @JAlmedaRuiz, @bernatGene,
    #25). Fix destructive tools never asking for confirmation: the elicitation
    call passed a plain dict where the SDK requires a pydantic model, and the
    resulting error was swallowed as "client doesn't support elicitation", so
    remove_layer, delete_features, execute_code, set_setting, delete_field and
    remove_layout always proceeded (#27). Fix add_features silently accepting
    malformed features — a wrong geometry key (geometry instead of geometry_wkt),
    an unknown field name or unparseable WKT created null-geometry features and
    still reported success; same validation added to update_features, which also
    accepted an fid that no feature had. Add CI running the unit suite against
    both the locked and the newest dependency set, so an SDK major shows up as a
    failed build rather than a broken install.
    0.8.0 : Fix compound tool mode being unusable — every handler took
    **kwargs, which FastMCP/pydantic cannot express in JSON Schema and degraded
    to a single required string, so no action could receive parameters; handlers
    now take an explicit params object ({"action": "load", "params": {...}})
    (thanks @kintopp, #24). Compound mode also reaches every granular command
    again: new field and analysis groups, plus layer export/add_web/save_style/
    apply_style/add_join and processing execute_batch/get_providers/list_models/
    run_model. Fix execute_sql failing whenever any raster layer was loaded (all
    project layers were added as virtual-layer sources); non-vector layers are
    now skipped. Fix NaN/Infinity being written to the socket as bare tokens,
    which is invalid JSON — non-finite floats serialise as null and
    get_layer_extent reports {"empty": true} for a layer with no features. Fix
    batch results failing return validation in compound mode. run_model now
    defaults missing output/sink parameters to a temporary layer instead of
    aborting.
    Earlier releases: https://github.com/nkarasiak/qgis-mcp/releases
