msfabric-mcp
msfabric-mcp
Ein Model Context Protocol Server für Microsoft Fabric, über stdio, in Python.
Er gibt einem Agenten eine einzige Verbindung, die beide Hälften von Fabric erreicht:
die Control Plane über die öffentliche REST-API unter
api.fabric.microsoft.com/v1(Workspaces, Items, Lakehouses, Warehouses, Notebooks, den Job-Scheduler) unddie Data Plane über den SQL-Analytics-Endpunkt eines Warehouses oder Lakehouses, hinter einer Allowlist-Read-only-Wache.
Zusätzlich optional DAX gegen ein Power BI-Semantikmodell.
Standardmäßig schreibgeschützt. Schreibvorgänge werden verweigert, es sei denn, der Betreiber setzt
FABRIC_ALLOW_WRITES, und selbst dann müssen UPDATE und DELETE ein WHERE enthalten.
Paket:
msfabric-mcpauf PyPIRepository: https://github.com/NawafSheikh/fabric-mcp
MCP-Registrierungsname:
io.github.nawafsheikh/msfabric-mcpLizenz: MIT
Ehrliche Positionierung
Fabric MCP ist ein überfülltes Regal (Stand 2026-08-22). Hier ist, was bereits existiert und wo sich dieses unterscheidet. Nichts unten ist eine Behauptung, dass die anderen schlecht sind.
Was | Form | Abdeckung |
Fabric Core MCP Server (Microsoft, Vorschau) | remote, von Microsoft gehostet, | ~30 Control-Plane-Tools: Workspaces, Items, Ordner, Kapazitäten, OneLake-Katalogsuche, Item-Definitionen, langlaufende Operationen. Keine T-SQL-Ausführung, kein Notebook-Job-Run, kein DAX. (Doku) |
Power BI remote MCP server (Microsoft, Vorschau) | remote | Berichts- und Semantikmodell-Metadaten sowie DAX-Generierung über Copilot (verbraucht Copilot-Kapazität). (Doku) |
microsoft/fabric-rti-mcp | lokal, Open Source | Real-Time Intelligence: Eventhouse und Azure Data Explorer, KQL. Eine andere Workload als Lakehouse- und Warehouse-T-SQL. (Repo) |
| lokal, Open Source | überlappendes Terrain, jeder mit seinem eigenen Ausschnitt |
| unabhängig | das ist das andere Fabric, das |
Wo msfabric-mcp steht:
Ein Server über beide Ebenen. Microsofts Core-MCP-Server ist nur Control Plane; man braucht immer noch ein zweites Ding, um eine Abfrage auszuführen. Hier leben
list_itemsundrun_sqlim selben Prozess und mit derselben Anmeldeinformation.Lokales stdio, keine Vorschau-Anmeldung. Die Microsoft-Server sind remote und in der Vorschau. Dies läuft auf deinem Rechner gegen die allgemein verfügbare REST-API, funktioniert also in jedem Mandanten, bei dem du dich bereits anmelden kannst.
Die Wache ist das Produkt.
run_sqlist eine Allowlist, keine Blocklist: Eine Anweisung wird nur ausgeführt, wenn sie positiv als Lesevorgang klassifiziert wird (oder als erlaubter Schreibvorgang, wenn Schreiben aktiviert ist). Kommentare werden zuerst entfernt, Anweisungsbatches werden verweigert, und Prozedurausführung,OPENROWSET/OPENQUERY,GRANT/REVOKE,BACKUP/RESTOREundSHUTDOWNwerden in jedem Modus verweigert.Begrenzte Ausgabe. Jedes Ergebnisset ist in Zeilen und Zellenbreite begrenzt und gibt an, wenn es abgeschnitten wurde, sodass ein breites
SELECT *keinen Kontextfenster überfluten kann.
Wenn du nur Control-Plane-Durchsuchen in einem Mandanten mit aktivierter Vorschau benötigst, verwende Microsofts Core-MCP-Server; er ist First-Party und wird die API immer schneller verfolgen. Verwende diesen, wenn du SQL und Jobs im selben Server lokal mit einer harten Read-only-Standardeinstellung möchtest.
Related MCP server: Databricks MCP Server
Installation
pip install msfabric-mcpSQL-Zugriff benötigt einen Treiber. Wähle einen:
pip install "msfabric-mcp[sql]" # pyodbc, plus ODBC Driver 18 for SQL Server
pip install "msfabric-mcp[mssql]" # mssql-python, no external ODBC managerpyodbc benötigt ODBC Driver 18 for SQL Server separat installiert (17 funktioniert auch). Das Entra-Token wird über das Verbindungsattribut
SQL_COPT_SS_ACCESS_TOKEN(1256) übergeben.mssql-python ist Microsofts eigener Treiber, benötigt Python 3.10+, installiert seine Konnektivitätsschicht mit dem Wheel und unterstützt Fabric Data Warehouse und den Lakehouse-SQL-Analytics-Endpunkt.
Die REST-Tools benötigen keinen der Treiber. Du kannst den Server ohne jegliche SQL-Konfiguration ausführen und trotzdem Workspaces, Items und Jobs durchsuchen.
Erfordert Python 3.11 oder höher.
Konfiguration
Alles kommt aus Umgebungsvariablen. Nichts über einen Mandanten, Workspace, Warehouse oder Host ist in das Paket kompiliert. Siehe .env.example.
Authentifizierung
Drei Modi, alle auf azure-identity aufgebaut.
1. DefaultAzureCredential (die Standardeinstellung). Nichts setzen. Die Anmeldeinformationskette erkennt eine az login-Sitzung, eine VS-Code-Anmeldung, eine verwaltete Identität oder den Standard-AZURE_CLIENT_ID / AZURE_TENANT_ID / AZURE_CLIENT_SECRET-Umgebungsdienstprinzipal.
az login2. Dienstprinzipal. Alle drei setzen und der Modus wird abgeleitet:
Variable | Bedeutung |
| Verzeichnis- (Mandanten-) ID |
| Anwendungs- (Client-) ID |
| Client-Geheimnis |
Der Dienstprinzipal muss dem Workspace mit Admin, Member oder Contributor hinzugefügt werden, und die Mandanteneinstellung Dienstprinzipale können Fabric-öffentliche APIs aufrufen muss aktiviert sein.
3. Gerätecode, für eine headless Box oder eine SSH-Sitzung:
FABRIC_AUTH_MODE=device_code
FABRIC_CLIENT_ID=<a public client app registration>Tokens werden pro Bereich im Speicher zwischengespeichert und zwei Minuten vor Ablauf aktualisiert. Sie werden nie auf die Festplatte geschrieben, nie protokolliert und erscheinen nie in einer Fehlermeldung, die der Server zurückgibt.
Umfang und SQL
Variable | Standard | Bedeutung |
| nicht gesetzt | Standard-Workspace, sodass Tools ihn nicht wiederholen müssen. Optional: Jedes Tool akzeptiert auch |
| nicht gesetzt | SQL-Analytics-Endpunkt nur Host, ohne Protokoll. Auf der Einstellungsseite des Warehouses oder Lakehouses zu finden. Optional: Ohne ihn erklären die SQL-Tools, dass sie nicht konfiguriert sind, und die REST-Tools funktionieren weiterhin. |
| nicht gesetzt | Standard-Warehouse- oder Lakehouse-Name |
|
|
|
Sicherheit
Variable | Standard | Bedeutung |
|
| aus. Solange aus, wird jede Schreibanweisung mit einer Erklärung verweigert. Aktiviere es nur für einen Workspace, den du ändern möchtest. |
|
| Zeilen pro Ergebnisset, begrenzt auf 5000 |
|
| Zeichen pro Zelle, begrenzt auf 4000 |
Es wird nie ein Geheimnis ausgegeben. health meldet ob eine Mandanten-ID, Client-ID und ein Geheimnis konfiguriert sind, nie deren Werte, und Fehlermeldungen enthalten eine Ausnahmeklasse und eine kurze Dienstbeschreibung mit entfernter Abfragezeichenfolge.
Client-Konfiguration
Claude Desktop, Claude Code oder ein beliebiger stdio-MCP-Client:
{
"mcpServers": {
"fabric": {
"command": "msfabric-mcp",
"env": {
"FABRIC_WORKSPACE_ID": "00000000-0000-0000-0000-000000000000",
"FABRIC_SQL_ENDPOINT": "your-endpoint.datawarehouse.fabric.microsoft.com",
"FABRIC_SQL_DATABASE": "your_warehouse"
}
}
}
}Setze FABRIC_CLIENT_SECRET nicht in eine Konfigurationsdatei, die in einem Repository liegt. Verwende az login, eine verwaltete Identität oder einen Geheimnisverwalter, der die Variable in den Serverprozess injiziert.
Werkzeuge
Tool | Erreicht | Was es tut |
| REST | für die Identität sichtbare Arbeitsbereiche |
| REST | Elemente in einem Arbeitsbereich, gefiltert nach Fabric-Elementtyp |
| REST | Metadaten eines Elements |
| REST | Lakehouses |
| REST | Warehouses |
| REST | Notebooks |
| REST oder SQL | Lakehouse-Tabellen über die Tables-API oder |
| SQL | Spalten, Typen, NULL-Fähigkeit, Ordnung aus |
| SQL | eine abgesicherte Anweisung |
| REST | startet einen |
| REST | Status, Zeitabläufe, Fehlergrund |
| Power BI | eine DAX- |
| beides | Konfigurationsübersicht und Erreichbarkeitstest |
Notebook- und Lakehouse-Argumente akzeptieren entweder einen Anzeigenamen oder eine ID; ein Name wird dabei über list_items aufgelöst.
Die SQL-Absicherung, präzise
run_sql akzeptiert eine Anweisung pro Aufruf, wobei Kommentare vor jeder Entscheidung entfernt werden. Dann:
Beginnt mit
SELECToderWITHund enthält keinSELECT ... INTOoderFOR UPDATE: als lesend eingestuft, immer erlaubt.Beginnt mit
INSERT,UPDATE,DELETE,MERGE,CREATE,ALTER,DROP,TRUNCATEoder ist einSELECT ... INTO: als schreibend eingestuft. Wird abgelehnt, es sei denn,FABRIC_ALLOW_WRITESist gesetzt.UPDATEundDELETEerfordern zusätzlich eineWHERE-Klausel, selbst wenn Schreibvorgänge aktiviert sind.Alles andere: abgelehnt, da es keiner Form entspricht.
EXEC/EXECUTE,sp_*,xp_*,OPENROWSET,OPENDATASOURCE,OPENQUERY,BULK INSERT,GRANT,REVOKE,DENY,BACKUP,RESTORE,SHUTDOWN,RECONFIGURE: in jedem Modus abgelehnt.Mehrere durch
;getrennte Anweisungen: abgelehnt, damit jede einzeln beurteilt werden kann.
Tabellen- und Schemanamen, die an describe_table übergeben werden, werden als einfache Bezeichner validiert, und die Suche selbst ist parametrisiert, sodass ein Name kein SQL enthalten kann.
Dies ist ein Schutz vor Fehlern eines Agenten, kein Ersatz für Berechtigungen. Gewähren Sie der Identität den geringstmöglichen Zugriff; die Arbeitsbereichsrolle und die Objektberechtigungen des Warehouses bleiben die eigentliche Grenze.
Hinweise zu execute_dax
Verwendet den JSON-executeQueries-Endpunkt anstelle der neueren Arrow-executeDaxQueries-API, da executeQueries mit Pro-, PPU- und Premium-/Fabric-Kapazitäten funktioniert und keine Arrow-Bibliothek benötigt. Das dokumentierte Limit liegt bei 100.000 Zeilen und 1.000.000 Werten pro Abfrage; FABRIC_MAX_ROWS gilt zusätzlich. Die Mandanteneinstellung Dataset Execute Queries REST API muss aktiviert sein, und der Aufrufer benötigt die Build-Berechtigung für das semantische Modell. Es werden nur EVALUATE- und DEFINE-Abfragen akzeptiert.
Was berührt wird
Ausgehender HTTPS-Verkehr zu
api.fabric.microsoft.com,api.powerbi.comund Microsoft Entra für Token.Ausgehendes TDS auf Port 1433 zu Ihrem SQL-Analytics-Endpunkt, nur wenn ein SQL-Tool aufgerufen wird und
FABRIC_SQL_ENDPOINTgesetzt ist.Encrypt=yes,TrustServerCertificate=no.Keine lokalen Dateisystemzugriffe. Keine Telemetrie. Kein Drittanbieterdienst.
Entwickeln
git clone https://github.com/NawafSheikh/fabric-mcp
cd fabric-mcp
pip install -e ".[dev]"
pytest
python -m buildDie gesamte Testsuite läuft ohne Netzwerk, ohne Fabric-Mandanten und ohne installierten ODBC-Treiber: REST-Aufrufe laufen über ein httpx.MockTransport, und die SQL-Schicht verwendet eine injizierbare Verbindungsfabrik, die die Tests mit einer gefälschten DB-API-Verbindung füllen.
Mitwirken
Probleme und Pull-Requests sind willkommen unter https://github.com/NawafSheikh/fabric-mcp/issues.
Quellen
Geprüft am 22.08.2026.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access enterprise data from Unity Catalog (vector search, functions, Genie spaces) and perform developer actions in Databricks like managing notebooks and running jobs.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Databricks workspaces programmatically, providing comprehensive tools for cluster management, notebook operations, job orchestration, Unity Catalog data governance, user management, permissions control, and FinOps cost analytics.263MIT
- AlicenseBqualityDmaintenanceEnables AI agents to interact with Microsoft Fabric by exposing tools for managing workspaces, notebooks, SQL queries, pipelines, and Livy Spark sessions. It provides a comprehensive set of operations for data engineering and analytics tasks using standard Azure authentication.374MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Microsoft Fabric and Power BI services through the Model Context Protocol. Users can manage workspaces, execute DAX queries, refresh datasets, and create Fabric notebooks using natural language.6142MIT
Related MCP Connectors
Shared, permission-aware company context for AI agents, with provenance, approvals and audit.
Debug, build, and manage Power Automate cloud flows with AI agents
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NawafSheikh/fabric-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server