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 集成