Qlik Lineage
БесплатноНе проверенA read-only MCP server that exposes data-file lineage analyses for Qlik Cloud tenants, enabling identification of unused columns and ghost files to reduce stora
Описание
A read-only MCP server that exposes data-file lineage analyses for Qlik Cloud tenants, enabling identification of unused columns and ghost files to reduce storage costs.
README
A read-only Model Context Protocol (MCP) server that exposes data-file lineage analyses for Qlik Cloud tenants. Built especially for tenants on the capacity pricing model (daily peak GB), where dropping unused columns / ghost files yields direct savings.
Tools
| Tool | What it answers |
|---|---|
unused_columns |
Given a data file (QVD or Parquet) and its space, which columns are not consumed by any app in the tenant? |
ghost_files |
Given a space, which data files are not consumed by any app — including transitive chains (file -> file -> app)? |
Both tools are read-only. They recommend, they never delete.
Quick start
# 1. Install deps with uv (or pip)
uv sync
# 2. Copy and fill the env file
copy .env.example .env
# edit QLIK_TENANT_URL and QLIK_API_KEY
# 3. Run the MCP server (stdio transport)
uv run qlik-lineage-mcp
Wire the server into Claude Desktop / Claude Code / VS Code:
{
"mcpServers": {
"qlik-lineage": {
"command": "uv",
"args": ["run", "qlik-lineage-mcp"],
"cwd": "C:/path/to/qlik-lineage-mcp"
}
}
}
Architecture
src/qlik_lineage_mcp/
├── server.py # FastMCP entry point — auto-registers everything in tools/
├── config.py # env-var loader (.env fallback)
├── qlik_client.py # all Qlik Cloud HTTP calls live here
├── models.py # format-agnostic Pydantic models (DataFile = QVD or Parquet)
└── tools/
├── __init__.py # auto-discovers and calls register(mcp) on each module
├── unused_columns.py
└── ghost_files.py
Adding a new tool: drop a file in tools/ that exports register(mcp: FastMCP).
server.py does not need to be edited.
How unused_columns works
A 3-phase pipeline that uses Qlik's field-level lineage (no script parsing):
- Enumerate columns —
GET /lineage-graphs/nodes/{file_qri}?level=fieldexposes every column of the target file as a node whose QRI starts with the file QRI. - Find consumer apps — iterate every app in the tenant and read its
data/lineage. Apps whose discriminators include alib://...{file_name}LOAD reference are the consumers. - Detect renames — for each consumer app, fetch
GET /lineage-graphs/nodes/{app_qri}?level=field. Edges whose source is a field of the target file map the original column to the alias used by the app. Qlik decomposes composite expressions automatically, soLOAD A_COD & '\' & A_LOJA AS KEY FROM fileproduces two edges (A_COD->KEY,A_LOJA->KEY) — no script parser needed.
Cost: one file-side call + N data/lineage calls (one per app, also paid
by ghost_files) + M field-level lineage calls (one per consumer app).
Known limitations
- Rename detection requires the consumer app to have been reloaded since field-level lineage was activated in the tenant. Apps that have not been reloaded show no edges in their field-level graph, so renames in those apps are invisible. The output lists which consumer apps could not be inspected so the verdict is auditable.
ghost_fileswalks every app'sdata/lineageand builds an app/file graph, then runs a fixpoint to mark useful chains. Dependencies hidden insideSUB/CALL/$(include)or dynamic file paths are missed.- Apps whose
data/metadatacannot be fetched (permissions, errors) are surfaced as a top-levelmetadata_unavailable_appscaveat — verdicts are conditional on those apps being checkable. - Parquet support is implemented format-agnostically but until a real Parquet item-endpoint fixture is captured, surfacing of Parquet files is best-effort. The tools flag this in their output.
Testing
uv run pytest
All tests run against captured JSON fixtures in tests/fixtures/ —
no live tenant calls.
Установка Qlik Lineage
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/EngIcaro/qlik-lineage-mcpFAQ
Qlik Lineage MCP бесплатный?
Да, Qlik Lineage MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Qlik Lineage?
Нет, Qlik Lineage работает без API-ключей и переменных окружения.
Qlik Lineage — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Qlik Lineage в Claude Desktop, Claude Code или Cursor?
Открой Qlik Lineage на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Qlik Lineage with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
