Skip to main content
Glama

msfabric-mcp

一个用于 Microsoft Fabric 的 Model Context Protocol 服务器,基于 stdio,使用 Python 实现。

它通过一个连接为智能体提供 Fabric 的两个部分:

  • 控制平面,通过 api.fabric.microsoft.com/v1 上的公共 REST API(工作区、项、湖屋、仓库、笔记本、作业调度器),以及

  • 数据平面,通过仓库或湖屋的 SQL 分析端点,并受只读白名单守卫的保护。

另外还支持对 Power BI 语义模型执行可选的 DAX。

默认只读。除非操作者设置 FABRIC_ALLOW_WRITES,否则拒绝所有写入;即使设置了,UPDATEDELETE 也必须带有 WHERE


坦诚的定位

截至 2026-08-22,Fabric MCP 领域已经相当拥挤。下面列出已有的实现以及本项目的区别。以下内容并非在声称其他实现不好。

项目

形态

涵盖

Fabric Core MCP Server(Microsoft,预览)

远程,由 Microsoft 托管,在 MCP 注册表中为 com.microsoft/microsoft-fabric

约 30 个控制平面工具:工作区、项、文件夹、容量、OneLake 目录搜索、项定义、长时间运行的操作。不支持 T-SQL 执行、笔记本作业运行和 DAX。(文档

Power BI remote MCP server(Microsoft,预览)

远程

报表和语义模型元数据,以及通过 Copilot 进行 DAX 生成(消耗 Copilot 容量)。(文档

microsoft/fabric-rti-mcp

本地,开源

Real-Time Intelligence:Eventhouse 和 Azure Data Explorer,KQL。这是与湖屋和仓库 T-SQL 不同的工作负载。(仓库

位于 PyPI 的 fabric-lakehouse-mcpmicrosoft-fabric-mcp,以及社区服务器,例如 santhoshravindran7/Fabric-Analytics-MCPAugustab/microsoft_fabric_mcpsdebruyn/fabric-dw-mcp-cli

本地,开源

与其他方案有重叠,各有侧重

位于 PyPI 和 npm 的 fabric-mcp

不相关

那是另一个 Fabric,即 danielmiessler/fabric 提示框架。本包特意没有使用那个名称。

msfabric-mcp 的定位:

  1. 一个服务器横跨两个平面。 Microsoft 的 Core MCP 服务器仅覆盖控制平面;要运行查询,你还需要另一个工具。在这里,list_itemsrun_sql 位于同一进程、使用同一凭据。

  2. 本地 stdio,无需加入预览。 Microsoft 的服务器是远程的且处于预览阶段。本服务器在你的机器上运行,使用正式发布的 REST API,因此你能够登录的任何租户都可以使用。

  3. 守卫即产品。 run_sql 是白名单,而不是黑名单:只有当语句被明确归类为读取(或在启用写入时被归类为允许的写入)才会执行。首先剥离注释,拒绝语句批处理,并且在任何模式下都拒绝存储过程执行、OPENROWSET/OPENQUERYGRANT/REVOKEBACKUP/RESTORESHUTDOWN

  4. 输出有界。 每个结果集在行数和单元格宽度上都有限制,并在截断时予以说明,因此宽泛的 SELECT * 不会淹没上下文窗口。

如果你只需要在已启用预览的租户内浏览控制平面,请使用 Microsoft 的 Core MCP 服务器;它是第一方产品,并且总能更快地跟进 API。当你希望在本地、在同一个服务器中同时使用 SQL 和作业,并希望默认严格只读时,请使用本服务器。


Related MCP server: Databricks MCP Server

安装

pip install msfabric-mcp

SQL 访问需要一个驱动程序。请选择一种:

pip install "msfabric-mcp[sql]"     # pyodbc, plus ODBC Driver 18 for SQL Server
pip install "msfabric-mcp[mssql]"   # mssql-python, no external ODBC manager

REST 工具不需要任何驱动程序。你可以在完全不配置 SQL 的情况下运行服务器,仍然可以浏览工作区、项和作业。

需要 Python 3.11 或更高版本。


配置

所有内容都来自环境变量。与租户、工作区、仓库或主机相关的任何信息都不会编译进包中。参见 .env.example

身份验证

三种模式,全部基于 azure-identity

1. DefaultAzureCredential(默认)。 无需设置任何内容。凭据链会采用 az login 会话、VS Code 登录、托管标识,或通过标准的 AZURE_CLIENT_ID / AZURE_TENANT_ID / AZURE_CLIENT_SECRET 环境变量配置的服务主体。

az login

2. 服务主体。 设置全部三项后,模式会自动推断:

变量

含义

FABRIC_TENANT_ID

目录(租户)ID

FABRIC_CLIENT_ID

应用程序(客户端)ID

FABRIC_CLIENT_SECRET

客户端机密

服务主体必须以管理员、成员或参与者身份添加到工作区,并且租户设置 服务主体可调用 Fabric 公共 API 必须处于开启状态。

3. 设备代码,适用于无头计算机或 SSH 会话:

FABRIC_AUTH_MODE=device_code
FABRIC_CLIENT_ID=<a public client app registration>

令牌按作用域缓存在内存中,并在过期前两分钟刷新。它们绝不会写入磁盘,不会被记录,也绝不会出现在服务器返回的任何错误消息中。

作用域与 SQL

变量

默认值

含义

FABRIC_WORKSPACE_ID

未设置

默认工作区,因此工具无需重复指定。可选:每个工具也接受 workspace 参数。

FABRIC_SQL_ENDPOINT

未设置

SQL 分析端点,仅主机名,不含协议。可在仓库或湖屋的设置页面找到。可选:未设置时,SQL 工具会说明它们未配置,而 REST 工具仍然可用。

FABRIC_SQL_DATABASE

未设置

默认仓库或湖屋名称

FABRIC_SQL_DRIVER

auto

autopyodbcmssql_python

安全

变量

默认值

含义

FABRIC_ALLOW_WRITES

0

关闭。关闭时,每条写入语句都会被拒绝并附带说明。仅在你愿意更改的工作区中将其打开。

FABRIC_MAX_ROWS

200

每个结果集返回的行数,上限为 5000 行

FABRIC_MAX_CELL_CHARS

200

每个单元格的字符数,上限为 4000 字符

任何机密都不会被打印。health 只报告租户 ID、客户端 ID 和机密是否已配置,绝不会报告它们的值;错误消息只包含异常类和一段简短的详细信息,并已去除查询字符串。

客户端配置

Claude Desktop、Claude Code 或任何 stdio MCP 客户端:

{
  "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"
      }
    }
  }
}

不要将 FABRIC_CLIENT_SECRET 放在位于仓库中的配置文件中。请使用 az login、托管标识或能够将变量注入服务器进程的机密管理器。


工具

工具

访问方式

功能说明

list_workspaces(name_filter?)

REST

身份可见的工作区

list_items(workspace?, item_type?, name_filter?)

REST

工作区中的项目,按 Fabric 项目类型筛选

get_item(item_id, workspace?)

REST

单个项目的元数据

list_lakehouses(workspace?)

REST

湖屋

list_warehouses(workspace?)

REST

仓库

list_notebooks(workspace?)

REST

笔记本

list_tables(lakehouse?, database?, workspace?)

REST 或 SQL

通过 Tables API 或 SQL 端点上的 INFORMATION_SCHEMA.TABLES 获取湖屋表

describe_table(table, schema?, database?)

SQL

列、类型、可空性、序号,来自 INFORMATION_SCHEMA.COLUMNS,参数化

run_sql(sql, database?)

SQL

一条受保护语句

run_notebook(notebook, workspace?, parameters?)

REST

启动 RunNotebook 作业,返回作业实例 ID,不阻塞

get_job_status(item_id, job_instance_id, workspace?)

REST

状态、耗时、失败原因

execute_dax(dataset_id, query_text, workspace?)

Power BI

一条 DAX EVALUATE 查询,可选

health()

两者

配置摘要和可达性探测

笔记本和湖屋参数接受显示名称或 ID;名称会通过 list_items 即时解析。

SQL 防护机制详解

run_sql 每次调用接受一条语句,在做出任何判断之前会先去除注释。然后:

  • SELECTWITH 开头,且不包含 SELECT ... INTOFOR UPDATE:归类为读取,始终允许。

  • INSERTUPDATEDELETEMERGECREATEALTERDROPTRUNCATE 开头,或是 SELECT ... INTO:归类为写入。除非设置了 FABRIC_ALLOW_WRITES,否则拒绝。即使启用了写入,UPDATEDELETE 还额外要求包含 WHERE 子句。

  • 其他任何情况:拒绝,因为不符合上述两种形态。

  • EXEC/EXECUTEsp_*xp_*OPENROWSETOPENDATASOURCEOPENQUERYBULK INSERTGRANTREVOKEDENYBACKUPRESTORESHUTDOWNRECONFIGURE:在所有模式下均拒绝。

  • ; 分隔的多条语句:拒绝,以便每条语句单独判断。

提供给 describe_table 的表名和架构名会作为普通标识符进行验证,且查询本身是参数化的,因此名称无法携带 SQL。

这是针对代理失误的防护,而非权限的替代品。为身份授予其所需的最低访问权限;工作区角色和仓库自身的对象权限仍然是真正的边界。

关于 execute_dax 的说明

使用 JSON executeQueries 端点,而非较新的 Arrow executeDaxQueries,因为 executeQueries 适用于 Pro、PPU 和 Premium/Fabric 容量,且无需 Arrow 库。其文档规定的上限为每个查询 100,000 行和 1,000,000 个值;FABRIC_MAX_ROWS 在此基础上进一步限制。必须启用租户设置 Dataset Execute Queries REST API,且调用方需要对语义模型具有 Build 权限。仅接受 EVALUATEDEFINE 查询。


涉及的外部资源

  • api.fabric.microsoft.comapi.powerbi.com 和 Microsoft Entra 发起出站 HTTPS 请求以获取令牌。

  • 仅在调用 SQL 工具且设置了 FABRIC_SQL_ENDPOINT 时,通过 1433 端口向 SQL 分析端点发起出站 TDS 连接。Encrypt=yesTrustServerCertificate=no

  • 不写入本地文件系统。无遥测。无第三方服务。


开发

git clone https://github.com/NawafSheikh/fabric-mcp
cd fabric-mcp
pip install -e ".[dev]"
pytest
python -m build

整个测试套件在无网络、无 Fabric 租户、未安装 ODBC 驱动的情况下运行:REST 调用通过 httpx.MockTransport 进行,SQL 层接受可注入的连接工厂,测试用假的 DB-API 连接来填充。

贡献

欢迎在 https://github.com/NawafSheikh/fabric-mcp/issues 提交 Issue 和 Pull Request。

参考来源

检查日期:2026-08-22。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    263
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    37
    4
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    6
    14
    2
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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