SuperAPI AI 工具集

power-bi-mcp

Power BI MCP Server 是一个基于 Model Context Protocol(MCP)的服务器,让 AI 智能体通过自然语言管理 Power BI 工作区、数据集与刷新任务。它支持表级轮询与重试的刷新操作、刷新诊断(将执行错误、同工作区报表依赖与可选本地 PBIP 源码线索汇集成证据包)、带 RLS 模拟的 DAX 查询、PBIP 源码定位与刷新报告。服务器提供认证发现、数据集与刷新管理、诊断与源码、查询与报告等能力,便于运维人员在刷新故障时定位候选表与相关报表,由操作员决定是否修复与重试。

访问官网

工具介绍

用途

Power BI MCP Server 是一个 MCP(Model Context Protocol)服务器,旨在让 AI 智能体使用自然语言来管理 Power BI 工作区、数据集以及刷新(refresh)操作。对于刷新故障场景,服务器会把数据集上下文、执行错误、同工作区报表依赖以及可选的本地 PBIP 源码线索汇集到一个证据包中,供智能体提出下一步排查建议,而修复与运维决策仍由操作员负责。

主要能力

根据资料,服务器提供以下能力分区:

  • 认证与发现(Authentication & Discovery):通过 pbi_auth 完成一次认证,之后智能体可发现工作区、数据集并使用返回的 ID。
  • 数据集与刷新管理(Dataset & Refresh Management):管理数据集与刷新任务,资料提到包含表级轮询与重试。
  • 诊断与源码(Diagnostics & Source Code):通过 pbi_diagnose(workspace_id: str, dataset_id: str, refresh_id: str = "") -> str 进行刷新诊断;当 refresh_id 为空时,会读取最近 10 条刷新记录,并按 API 响应顺序选择第一条 status == "Failed" 且 refreshType == "ViaEnhancedApi" 的记录。该工具返回 JSON 编码字符串,包含执行消息、对象、错误分类以及 PBIP 源码查找结果。
  • 查询与报告(Query & Reporting):DAX 查询(含 RLS 模拟)与刷新报告。

资料中还提到实现参考包含:诊断工具、分类与 PBIP 查找、错误目录、数据集/报表上下文、刷新历史/详情。

诊断流程示例(模拟,非真实执行)

资料给出的示例流程为:智能体先发现工作区,再列出数据集并使用返回的 ID(如“Demo Operations”映射到特定 GUID)。随后调用诊断工具,获取证据,包括:

  • 第一条带 location.SourceObject.Table 的 Error 消息会指出初始排查候选表及其分区。
  • 错误码 0xC1450012 对应 MashupDataAccessError,消息匹配错误目录中的 EmptyColumnReference 模式;后续的取消可能是级联所致。
  • 当启用 PBIP 查找且提取成功时,root_cause_source.partition_source_m 会包含提取出的 TMDL 分区主体(含 source =)。资料中的虚构本地 TMDL 示例显示 Table.SelectColumns 请求了空列名,而源仅定义 OrderId 与 SalesAmount,从而佐证错误模式。工具不会选择预期的替换列。

示例中的智能体结论为:从 fact_sales 的 M 表达式开始检查,在确认预期列与上游架构后再编辑;若意图是选择 SalesAmount,在检查后再将 {""} 替换为 {"SalesAmount"};在 Power Query/Power BI Desktop 中验证更改,确认本地 PBIP 版本与已部署模型一致,然后按常规审批流程发布并重试,最后查看下一次刷新结果以验证恢复。

使用方式

资料给出的接入步骤:

  1. 安装依赖(未提供具体命令文本)。
  2. 在 MCP 客户端中注册:将配置添加到 MCP 客户端配置中,资料提到 Cursor / Windsurf / Antigravity IDE 使用 mcp.json。
  3. 一次性认证:首次使用时,智能体会调用 pbi_auth 并显示提示;操作包括:在浏览器打开链接、输入显示的代码、使用 Microsoft 工作账户登录、批准权限。令牌缓存到 ~/.powerbi-mcp/token.json 并自动刷新,除非撤销访问,否则无需重复。

服务器内置公开 client_id,开箱即用;可在项目根目录创建 config.json 进行自定义。资料还提到包含 setup.ps1 脚本,用于通过 Azure CLI 自动化创建应用注册。

适用场景

  • 刷新故障排查:将执行错误、同工作区报表依赖与本地 PBIP 源码线索汇集为证据包,帮助操作员定位候选表与可能仍显示过期数据的报表。
  • 数据集与刷新管理:通过自然语言管理工作区、数据集与刷新任务。
  • 查询与报告:执行 DAX 查询(含 RLS 模拟)并生成刷新报告。

限制

  • 资料强调诊断示例为模拟演示,不是真实 Power BI 执行;所有名称、ID、路径、服务响应、源码和智能体结论均为虚构,不表示生产事故、成功修复或实测时间节省。
  • 当 refresh_id 为空时,选择的是按 API 响应顺序第一条符合条件的失败记录,可能不同于最近一次的定时或按需失败;要调查已知事件,应传入其 requestId 作为 refresh_id。
  • 工具不会选择预期的替换列;修复与运维决策由操作员负责。
  • 资料提到故障排查情形:组织可能阻止公共客户端流(AADSTS7000218)、需要管理员同意(AADSTS65001)、需要 MFA(AADSTS50076/50079)、令牌过期需重新调用 pbi_auth、刷新详情返回 403 通常表示权限不足或刷新记录已过期。
  • 服务器基于 FastMCP(mcp[cli] ≥ 1.6.0)与 httpx ≥ 0.27.0。