fabric-dw

io.github.sdebruyn由 GitHub 帳號 sdebruyn 發布v2026.9.0更新於 Oct 24, 2026

MCP server for Microsoft Fabric Data Warehouses and SQL Analytics Endpoints

發布方自己的服務:Fabric

概覽

AI 產生的概覽

針對 Microsoft Fabric 資料倉儲與 SQL 分析端點的 MCP 伺服器,讓助理查詢、管理、最佳化並保護這些資源。

可以做什麼
瀏覽工作區、倉儲、SQL 端點、結構描述、資料表與檢視,並對其執行或解說 SQL 查詢,包括預估執行計畫以及時間點快照或匯出為 Parquet。監控查詢活動:列出執行中、長時間執行或高頻查詢,並終止失控的工作階段。檢視與管理統計資料、依新鍵重新叢集化資料表,並處理還原點與稽核資料。管理治理:授予或拒絕 SQL 權限、資料行層級安全性與資料列層級安全性原則。將本機 Parquet 檔案載入資料表,並建立 dbt-fabric 專案骨架。
適用情境
當助理需要直接操作 Fabric 資料倉儲或 SQL 分析端點時使用:探索結構描述、執行與調校查詢、檢查效能或套用權限,而不必切換到 SSMS 或入口網站。
執行需求
透過 stdio 在本機執行,通常以 uvx 從 fabric-dw 套件啟動,或使用已發佈的容器映像。需要 Fabric 的 Azure 認證,由 FABRIC_AUTH 選擇(預設認證鏈、使用 AZURE_TENANT_ID、AZURE_CLIENT_ID 與 AZURE_CLIENT_SECRET 的服務主體,或互動式瀏覽器登入)。可選用 FABRIC_MCP_WORKSPACES 限定範圍。
安裝前請注意
此伺服器可以變更資料與權限:除非設定 FABRIC_MCP_READONLY,否則變更類工具可用;delete、clear_table 與 restore_warehouse_in_place 等永久破壞性工具在設定 FABRIC_MCP_ALLOW_DESTRUCTIVE 前維持關閉。未設定 FABRIC_MCP_WORKSPACES 時允許所有工作區。服務主體密鑰以環境變數傳入。可選的 HTTP 傳輸沒有內建身分驗證或 TLS,應置於具身分驗證的反向代理之後。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 fabric-dw,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[fabric-dw logo]

fabric-dw

[Documentation] [CI] [codecov] [PyPI version] [Python versions] [License]

Python CLI and MCP server for Microsoft Fabric Data Warehouses and SQL Analytics Endpoints: administer, query, optimize, and secure them from your terminal or your AI agent.

Full documentation: fdw.debruyn.dev

📣 Just announced! Read the story behind fabric-dw in the announcement blog post.

Description

fabric-dw provides two interfaces for managing Microsoft Fabric Data Warehouses and SQL Analytics Endpoints:

  • CLI: a command-line tool for common DW administration tasks.
  • MCP server: a Model Context Protocol server that exposes DW operations as tools for AI assistants.

Authentication is configured via the FABRIC_AUTH environment variable. The default (FABRIC_AUTH=default) uses azure-identity DefaultAzureCredential, which walks environment variables, Workload/Managed Identity, Azure CLI, Azure Developer CLI, Azure PowerShell, and interactive browser in order. Any of these will satisfy it. See the Authentication docs for the full chain, all supported sources, and debugging tips.

Installation

bash
pip install fabric-dw# or run without installing:uvx fabric-dw --help# or install persistently on PATH:uv tool install fabric-dw

After installation, the fdw command is a short alias for fabric-dw; both invoke the same entry point. See the Install docs for MCP server setup, upgrading, and prerelease builds.

Quick Start

CLI

The workspace is a global root option -w / --workspace placed before the command group. Set a default once with fdw config set workspace <NAME> and omit -w on every subsequent call. Workspace resolution order: (1) -w flag, (2) FABRIC_DW_DEFAULT_WORKSPACE env var, (3) configured default.

bash
# Run without installing; install to get the fdw aliasuvx fabric-dw --help
# Set a default workspace once; all subsequent commands pick it upfdw config set workspace SalesWS
bash
# -- Run and explain SQL --
# Execute a query against a warehousefdw sql exec SalesWH -q "SELECT TOP 10 * FROM dbo.orders ORDER BY order_date DESC"
# Capture an estimated execution plan as SVG -- no SSMS or Windows neededfdw sql plan SalesWH -f query.sql --format svg -o plan.svg
# -- Performance mission-control --
# See what is running right nowfdw queries running SalesWH
# Long-running queries from the past hourfdw queries long-running SalesWH --ago 1h
# Kill a runaway session by IDfdw queries kill SalesWH 55
# Most-repeated queries over the past 24 hoursfdw queries frequent SalesWH --ago 24h
# -- Optimize --
# Inspect a statistics histogram with inline terminal bar chartsfdw statistics show SalesWH dbo.orders st_order_date --histogram
# Re-cluster a table on a new key (transactional CTAS-swap, auto-rollback on failure)fdw tables cluster-by SalesWH dbo.orders --cluster-by customer_id
# -- Time travel + export --
# Browse the table as it looked 2 hours agofdw tables read SalesWH dbo.orders --ago 2h
# Export a point-in-time snapshot to Parquetfdw tables export SalesWH dbo.orders --output snapshot.parquet --ago 2h
# -- Governance --
# Grant SELECT on a specific tablefdw permissions sql grant SalesWH SELECT --to [email protected] --object dbo.orders
# Deny access to sensitive columns (column-level security)fdw permissions cls deny SalesWH SELECT --to [email protected] \    --object dbo.orders --columns salary,bonus
# Create a row-level security policy (filter rows by SalesRep)fdw permissions rls create SalesWH rls.SalesFilter \    --filter "rls.fn_sales_filter(SalesRep)" --on dbo.orders
# -- Load + scaffold --
# Load a local Parquet file and auto-create the table from its schemafdw tables load SalesWH dbo.orders --file orders.parquet --create
# Scaffold a full dbt-fabric project wired to the warehousefdw dbt init SalesWH ./my-dbt-project --project-name sales_dw --with-sources

MCP Server

Add to your MCP client configuration (e.g. Claude Desktop, VS Code):

json
{  "mcpServers": {    "fabric-dw": {      "command": "uvx",      "args": ["--from", "fabric-dw", "fabric-dw-mcp"]    }  }}

The MCP server exposes all CLI operations as MCP tools (workspaces, warehouses, SQL endpoints, schemas, tables, views, queries, snapshots, restore points, audit, statistics, permissions, sql-pools). Bundled Claude Code agent skills (query-optimizer, warehouse-performance, dbt-setup) are included for deeper AI-assisted analysis. Set FABRIC_AUTH in the environment if you need a non-default auth mode.

Both the skills and the MCP server install in one command via the fabric-dw plugin marketplace, for Claude Code and GitHub Copilot CLI alike: /plugin marketplace add sdebruyn/fabric-dw-mcp-cli then /plugin install fabric-dw@fabric-dw. See the Agent Skills docs for details.

Run in Docker

The Docker image's default ENTRYPOINT is the MCP server (fabric-dw-mcp). Use it as-is with your MCP client, or override the entrypoint to run the CLI instead.

bash
docker pull ghcr.io/sdebruyn/fabric-dw:latest
# Run the MCP server (default entrypoint, connect via stdio from your MCP client):docker run --rm -i \  -e AZURE_CLIENT_ID=… \  -e AZURE_TENANT_ID=… \  -e AZURE_CLIENT_SECRET=… \  -e FABRIC_AUTH=sp \  ghcr.io/sdebruyn/fabric-dw
# Run the CLI instead (override the entrypoint):docker run --rm \  --entrypoint fabric-dw \  -e AZURE_CLIENT_ID=… \  -e AZURE_TENANT_ID=… \  -e AZURE_CLIENT_SECRET=… \  -e FABRIC_AUTH=sp \  ghcr.io/sdebruyn/fabric-dw --help

Dev images (built from every main merge): ghcr.io/sdebruyn/fabric-dw:main or :<version>.dev<N>.

Package page: ghcr.io/sdebruyn/fabric-dw

Security environment variables
VariableDefaultDescription
FABRIC_MCP_READONLYunsetSet to 1 to restrict execute_sql to SELECT/WITH and block all mutating tools.
FABRIC_MCP_ALLOW_DESTRUCTIVEunsetSet to 1 to enable permanently-destructive tools (delete_*, clear_table, restore_warehouse_in_place). Disabled by default.
FABRIC_MCP_WORKSPACESunsetComma-separated workspace names or GUIDs the server may touch. Unset = all workspaces allowed.
FABRIC_MCP_ALLOW_REMOTEunsetSet to 1 to allow the HTTP transport (--transport http) to bind on a non-loopback address. A warning is logged; ensure an authenticating reverse proxy with TLS fronts the endpoint, and pass --allowed-host so Host validation stays on. See Hosting the MCP server.
HTTP transport

The MCP server can be started in HTTP mode for remote clients:

bash
fabric-dw-mcp --transport http [--host 127.0.0.1] [--port 8000]

It binds to loopback by default, where Host and Origin validation is handled for you. Binding anywhere else requires FABRIC_MCP_ALLOW_REMOTE=1 and --allowed-host, and the endpoint has no built-in authentication or TLS, so always front it with an authenticating reverse proxy. See Hosting the MCP server for that setup.

Develop in a container

Open the repo in GitHub Codespaces or VS Code's Remote-Containers extension. The devcontainer pre-installs Python 3.14, uv, Azure CLI, and the GitHub CLI.

[Open in GitHub Codespaces]

Contributing

See CONTRIBUTING.md for dev setup, branch flow, and how to run tests locally.

📖 Docs: fdw.debruyn.dev (or run uv run --only-group docs zensical serve locally).

Security

Please report vulnerabilities privately. See SECURITY.md.

Code of Conduct

This project follows the Contributor Covenant 2.1.

License

MIT. Copyright (c) 2026 Sam Debruyn

來源:README.md,提交 a85c04c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2026.9.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Fabric 整合