Agent tools for Qlik Sense Enterprise on Windows: troubleshoot, govern, query and build.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server for Qlik Sense Enterprise on Windows (client-managed).
The glue layer for a Qlik support agent. Qlik Cloud ships a native MCP endpoint; the client-managed estate โ where a large share of enterprise Qlik still runs โ has nothing equivalent. This server exposes the on-prem API surface (Repository/QRS, Engine/QIX, Proxy) as Model Context Protocol tools, so an agent can do what a support engineer does when a number is wrong: walk KPI โ object โ sheet โ app โ script โ source, evaluating definitions at every step โ plus govern, query, and build against the site.
Status: 0.5.2, pre-release. All 44 tools exercised end-to-end against Qlik Sense May 2026 (15.13.8) on a single-node site, in BOTH certificate and JWT auth modes (including the full mutation lifecycle: copy โ set_script โ reload โ publish โ delete, and task start-to-finish). Tool names and shapes may still change.
qseow-mcp is an independent open-source project by Terenzi LLC. It is not affiliated with, endorsed by, or sponsored by QlikTech International AB. Qlikยฎ, Qlik Senseยฎ, and related marks are trademarks of QlikTech International AB, used here only to identify the software this server interoperates with.
Claude Desktop โ one-click. Download qseow-mcp-<version>.mcpb from the
latest release and
double-click it. Claude Desktop prompts for your hostname and certificate
paths; there is no JSON to edit and no npm install to run.
Any MCP client โ via npx. No clone, no build:
Claude Code, same thing in one line:
Certificates come from QMC โ Certificates โ Export (choose PEM). For JWT instead of certificates, see Authentication.
It starts read-only. Mutating tools are not registered at all until you set
QSEOW_ALLOW_MUTATIONS=true, so the tool list a client sees is genuinely
read-only until you decide otherwise.
Expose only what a given deployment needs with QSEOW_TOOL_GROUPS.
Analyst โ ask questions of data (Engine/QIX)
| Tool | Purpose |
|---|---|
list_engine_apps | Apps visible to the session |
get_app_data_model | Tables, fields, row counts, cardinality |
evaluate_expression | Evaluate a Qlik expression in the current selection state |
create_hypercube | Group-by query: dimensions ร measures โ rows |
get_field_values | Distinct values with selection state, optional search |
select_field_values / clear_selections / get_current_selections | Drive and inspect selection state |
crosscheck_expression | Adversarial self-check: total vs sum-of-groups โ flags non-additive measures and scoping bugs before a number reaches a user |
Every value-returning analytics tool ships a trust envelope: expression validation warnings (a misspelled field returns null/0 without erroring โ the engine's worst habit) and the active selections the value was computed under, so a filtered number can never masquerade as the unfiltered truth.
Inspector โ the troubleshooting loop (ships with the analyst group)
| Tool | Purpose |
|---|---|
list_sheets / get_sheet_objects | Walk the UI layer: sheets and the objects on them |
get_object_properties | Full qProps of any object โ the definition layer |
search_expressions | Find a field, KPI, or expression fragment across ALL objects (with owning sheet), master items, variables, and the script |
list_master_measures / list_master_dimensions | The governed definition inventory |
evaluate_master_measure | Evaluate a master measure by id or title (sidesteps the [Name]-resolves-to-a-field trap) |
get_app_lineage | Every LOAD/STORE source and target, classified (qvd, database, inline, resident, store) |
Published-app caveat: the engine hides a published app's script and lineage from user identities (internal certificate identities bypass this). The support-agent pattern is copy_app โ trace the owned copy โ the copy carries the same script and definitions.
Developer โ build and ship apps (Engine + QRS)
| Tool | Purpose |
|---|---|
create_sheet / add_sheet_object | Build the UI layer: sheets and visualizations. Creation runs the render-validation gate and returns its verdict |
validate_sheet | Quality gate (read-only): will these objects actually render? Definition errors, unknown fields/types, empty cubes, pivot qMode traps, missing nebula property blocks, cell-placement lint |
get_script / set_script | Read and replace an app's load script |
check_script | Syntax-check without reloading |
reload_app | Reload and save, returns progress tail |
create_app | Create app, optionally set script and reload |
copy_app / publish_app / delete_app | Duplicate; publish to a stream; delete |
Admin โ govern the site (QRS)
| Tool | Purpose |
|---|---|
qrs_about / service_status | Version; health of every service on every node |
license_summary | Serial, edition, expiry, professional/analyzer allocations |
list_apps / list_streams / list_tasks / list_users | Inventory, all filterable |
start_task | Trigger a reload task |
list_extensions / list_data_connections | Extension and connection inventory |
qrs_search | Any QRS entity + filter expression โ the governance power tool |
get_reload_log | Why did a reload fail? Last execution result + detail timeline + script-log tail |
engine_healthcheck | Engine version, saturated flag, memory/CPU, loaded apps, session counts |
security_rule_audit | Every security rule with decoded actions + lint findings (disabled defaults, wildcard filters, unconditional write grants) |
list_user_sessions / end_user_sessions | Active proxy sessions per user; force logout. Certificate-backed โ see note below |
Mutating tools (set_script, reload_app, create_app, copy_app, publish_app, delete_app, start_task, end_user_sessions, create_sheet, add_sheet_object) are gated at registration: unless QSEOW_ALLOW_MUTATIONS=true, they are never registered, so a read-only deployment advertises a genuinely read-only tool surface in tools/list. Default is read-only.
Every tool carries MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so clients that honor them can apply their own policy โ e.g. reload_app/set_script/start_task are flagged destructive; selection tools are non-destructive session-state mutations.
Credential redaction applies to every QRS egress path: list_data_connections and generic qrs_search (any entity type, condensed or full:true) recursively mask credential-bearing fields (password, passphrase, clientsecret, ...) and secrets embedded in connection strings (PWD=..., apikey=...). Empty/null credential fields pass through unmasked โ "no credential present" is a legitimate signal.
All list tools are paged (offset/limit, envelope {total, offset, returned, truncated, items}) so a site with thousands of apps or users cannot blow the client's context window.
Modern Sense visualizations are nebula.js supernovas rendered by the client, not the engine โ a hypercube the engine accepts and evaluates perfectly still renders blank if the supernova's default property blocks are missing (it throws Cannot read properties of undefined in the browser; the engine never knows). The builder ships those blocks per type, and validate_sheet flags objects that lack them.
Because engine-side validation cannot prove pixels, two scripts close the loop: scripts/viz_matrix.mjs builds one of every supported type against a live site, and scripts/render_proof.mjs drives a real headless browser over the result at sheet-tile sizes and reports what actually drew.
All 12 supported types are render-verified on Qlik Sense May 2026, at sheet-tile sizes, in a real browser client: kpi, gauge, barchart, linechart, combochart, piechart, scatterplot, treemap, table, pivot-table, listbox, text-image.
When a supernova refuses to draw, do not reverse-engineer its properties from error messages โ some charts throw nothing useful. Instead ask the client what it writes:
This scans every readable app for client-authored objects of that type and dumps their properties. Qlik's shipped monitoring apps (Content / Operations / License Monitor) are a good source. This is how the last two broken types were fixed, each in a single pass after repeated guesswork had failed:
qMode: "K" (tree mode โ the same class of trap as pivot-table needing "P") plus a far leaner property set than the generic builder produced. Harvested from Qlik's shipped Content Monitor app.gaugetype, angle, autoOrientation, paletteProgressColor and segmentInfo โ properties no error message ever named, because gauge fails silently. Harvested from a gauge authored in the Sense client for the purpose.No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/qseow-mcp)<a href="https://allmcps.com/mcp/qseow-mcp"><img src="https://allmcps.com/api/badge/qseow-mcp?style=directory" alt="Qseow MCP on AllMCPs" /></a>