io.github.fabienfrfr/pbix-lineage
Bidirectional data lineage graph for Power BI (.pbix) files, from source to display
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
pbix-lineageclaude mcp add pbix-lineage -e 'PBIX_LINEAGE_PORT=8080' -e 'PBIX_LINEAGE_HOST=127.0.0.1' -- uvx pbix-lineage==0.1.2
{
"mcpServers": {
"pbix-lineage": {
"command": "uvx",
"args": [
"pbix-lineage==0.1.2"
],
"env": {
"PBIX_LINEAGE_PORT": "8080",
"PBIX_LINEAGE_HOST": "127.0.0.1"
}
}
}
}
Environment variables
PBIX_LINEAGE_PORTPort the server listens onPBIX_LINEAGE_HOSTHost interface to bind to
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
🌐 PBIX‑Atlas
Full lineage graph for Power BI — from source to visual field
PbixAtlas is an Universal lineage graph for Power BI .pbix files: source to visual field in one traversable graph.
source (HTTP, OData, SQL, file...) --> Power Query (M)
--> column / calculated column --> measure (DAX)
--> field displayed in a report visual
Install
pip install pbix-atlas
# or
uv add pbix-atlas
Quick start
from pbix_atlas import LineageGraphBuilder, upstream, downstream, print_tree, find_nodes
graph = LineageGraphBuilder().build("my_report.pbix")
find_nodes(graph, "customer_name")
print_tree(graph, "visual_field::my_report.pbix::Page1::16::customer_name", direction="upstream")
print_tree(graph, "source::odata::example.com/odata/", direction="downstream")
Export
from pbix_atlas import export_graphml, export_nodes_csv, export_edges_csv, graph_summary
graph_summary(graph) # {'query': 70, 'column': 183, ...}
export_graphml(graph, "lineage.graphml") # Gephi / yEd
export_nodes_csv(graph, "nodes.csv")
export_edges_csv(graph, "edges.csv")
Codegen — standalone Python pipeline
Generates a single Python file reproducing a report's full chain: source → extraction → Power Query → semantic model → Vizro dashboard. The M source is executed at runtime by the built-in interpreter, not pattern-matched. Unimplemented functions raise MRuntimeError (no silent stubs).
pip install "pbix-atlas[codegen]"
pbix-atlas-codegen my_report.pbix -o pipeline.py
from pbix_atlas import generate_python_pipeline
generate_python_pipeline("my_report.pbix", "pipeline.py")
HTTP API / MCP server
uv sync --extra api
uv run pbix-atlas # http://127.0.0.1:8080
- REST:
POST /graphs,/search,/upstream,/downstream,/tree,/export,/codegen - MCP (streamable HTTP):
http://127.0.0.1:8080/mcp/ - Env vars:
PBIX_LINEAGE_HOST,PBIX_LINEAGE_PORT
Architecture
| Module | Responsibility |
|---|---|
models.py | Node/edge types and shared data structures |
sources.py | Physical source detection (configurable patterns) |
pbix_model.py | Adapter isolating from pbixray |
m_lexer.py / m_parser.py | Built-in M tokenizer and parser |
m_interpreter.py | M runtime interpreter + stdlib |
dax_translate.py | DAX → Python (supported subset) |
dax.py | DAX reference parsing |
mquery.py | Power Query dependencies (table-level) |
layout.py | Internal Report/Layout format parsing |
graph_builder.py | Orchestrator: builds the networkx.DiGraph |
navigation.py | Upstream/downstream traversal, search, export |
codegen.py | Python pipeline code generation |
api/app.py | FastAPI + MCP mount (FastMCP) |
Sample files
- Retail Analysis Sample PBIX (Microsoft)
- Sales & Returns Sample v201912 (Microsoft)
Development
uv sync --extra dev
uv run pytest
uv build
Frequently asked questions
What is io.github.fabienfrfr/pbix-lineage?
Bidirectional data lineage graph for Power BI (.pbix) files, from source to display
How do I install io.github.fabienfrfr/pbix-lineage?
It runs on your machine. In Claude Code: claude mcp add pbix-lineage -e 'PBIX_LINEAGE_PORT=8080' -e 'PBIX_LINEAGE_HOST=127.0.0.1' -- uvx pbix-lineage==0.1.2. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.fabienfrfr/pbix-lineage need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.fabienfrfr/pbix-lineage open source?
Its code is public on GitHub, but the repository does not declare a standard license.
Who maintains io.github.fabienfrfr/pbix-lineage?
It is published by fabienfrfr. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.