qgis-dev-probe-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check connectivity; returns plugin version, mode and QGIS pid. |
| get_infoC | QGIS/Python/Qt versions, platform, profile dir, project, probe home and output dirs. |
| list_windowsB | List top-level windows (objectName, title, class, geometry, modal) and the active modal window. |
| dump_widgetsA | Dump the widget tree of a window (selector: objectName or title). Hidden widgets are skipped by default (visible_only); use only_named to cut noise further. Geometry of child widgets is relative to the parent; window geometry is in screen coordinates. |
| screenshotB | Capture QGIS main window, a window, or one widget. Returns the PNG image plus its saved path. |
| list_layersB | Layers in the current project (id, name, type, crs, public source). |
| inspect_layerB | Details of a layer by id or unique name: fields/geometry (vector) or bands/nodata (raster), sample features. |
| list_algorithmsC | Search Processing algorithms by id/name substring. |
| get_algorithm_paramsC | Parameter and output definitions of a Processing algorithm (e.g. 'native:buffer'). |
| list_pluginsC | Installed plugins with version and active state. |
| read_logB | Read QGIS message-log entries captured since the probe was loaded. Use since_id to poll for new entries. |
| list_recipesB | List recipe files (name + docstring) in the configured recipe directory. |
| set_widgetC | Set a widget value (text, number, bool, combo index/text, ...). Refuses invisible/disabled/read-only widgets. |
| click_widgetA | Click a button/checkbox/tool button by objectName or visible text (for QActions / menu items use trigger_action). The click is deferred; the reply is immediate, so a modal dialog it opens does not block. |
| list_actionsA | List QActions (menu items, toolbar buttons - where plugins usually put their entry) of a window. Use |
| trigger_actionA | Trigger a QAction by objectName (preferred) or its visible text (mnemonic '&' ignored). The trigger is deferred; the reply is immediate, so a modal dialog it opens does not block. Submenus and disabled actions are refused. Check the result with list_windows / screenshot. |
| close_windowC | Close a window (deferred). |
| add_layerC | Add a vector/raster layer from a local path (GeoPackage sublayer syntax 'file.gpkg|layername=x' works). |
| remove_layerC | Remove a layer from the project by id or unique name. |
| run_algorithmB | Run a Processing algorithm synchronously. QGIS UI is blocked meanwhile. Returns results and the log. |
| reload_pluginA | Unload, purge modules and reload a plugin so code edits take effect (not for qgis_dev_probe itself). |
| run_recipeC | Run a recipe (a Python file with |
| execute_codeA | Execute arbitrary Python inside QGIS (iface, project in scope; set |
| waitA | Sleep (max 60 s) so deferred GUI actions can finish before the next observation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Each resource family has clear action boundaries (list vs run vs inspect), and the click_widget/trigger_action distinction is explicitly documented. Minor overlap remains between execute_code and the specialized run_recipe/run_algorithm tools, and ping/get_info both expose diagnostic information, so an agent may occasionally hesitate.
All names use lowercase snake_case, and the dominant pattern is verb_noun (list_layers, run_algorithm, get_info). A few utility commands such as ping, wait, and screenshot break the verb_noun pattern but do not create mixed or confusing conventions.
24 tools sit at the upper end of the heavy range, covering many subdomains including GUI control, layers, Processing, plugins, recipes, and diagnostics. Most tools are justified, but the breadth makes the set feel borderline rather than tightly scoped.
The surface covers the main dev-probe workflows: GUI inspection/control, layer add/remove/list/inspect, Processing discovery/execution, plugin reload, recipes, logs, and screenshots. Gaps exist in layer/project mutation and feature editing (for example, no update_layer, save_project, or feature CRUD), though execute_code provides a workaround.