io.github.fabienfrfr/pbix-atlas
Bidirectional data lineage graph for Power BI (.pbix) files, from source to display
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
pbix-atlasclaude mcp add pbix-atlas -e 'PBIX_LINEAGE_PORT=8080' -e 'PBIX_LINEAGE_HOST=127.0.0.1' -- uvx pbix-atlas==1.0.0
{
"mcpServers": {
"pbix-atlas": {
"command": "uvx",
"args": [
"pbix-atlas==1.0.0"
],
"env": {
"PBIX_LINEAGE_PORT": "8080",
"PBIX_LINEAGE_HOST": "127.0.0.1"
}
}
}
}
Variables d'environnement
PBIX_LINEAGE_PORTPort the server listens onPBIX_LINEAGE_HOSTHost interface to bind to
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
🌐 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
Questions fréquentes
Qu'est-ce que io.github.fabienfrfr/pbix-atlas ?
Bidirectional data lineage graph for Power BI (.pbix) files, from source to display
Comment installer io.github.fabienfrfr/pbix-atlas ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add pbix-atlas -e 'PBIX_LINEAGE_PORT=8080' -e 'PBIX_LINEAGE_HOST=127.0.0.1' -- uvx pbix-atlas==1.0.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour io.github.fabienfrfr/pbix-atlas ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
io.github.fabienfrfr/pbix-atlas est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient io.github.fabienfrfr/pbix-atlas ?
Il est publié par fabienfrfr. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.