SuperAPI AI 工具集

powerbi-analyst-mcp

Power BI Analyst MCP 是一个本地 MCP 服务器,用于将 Power BI 语义模型连接到 LLM(如 Claude)进行分析。它可以浏览工作区、表和度量值,运行 DAX 查询。针对大型查询结果,会自动保存为本地 CSV 文件并按需分页返回给代理,避免占用 LLM 上下文窗口,同时提供查询历史记录以复用分析模式。所有数据留在本地,通过 OAuth 设备代码流认证,令牌存储在操作系统安全存储中。

访问官网

工具介绍

用途

Power BI Analyst MCP 是一个本地 MCP 服务器,旨在将 Power BI 语义模型连接到 LLM(如 Claude)以进行数据分析。它解决的核心瓶颈是分析翻译:将数据转化为决策所需的人工技能和时间。此服务器将翻译工作交由 LLM 处理,让用户通过自然语言提问即可获得基于实时 DAX 的答案,无需了解 DAX 或等待分析师。

主要能力

  • 跨模型复合推理:代理可连续运行多个查询,每个查询基于前一个结果,综合推理并在几分钟内得出结论。例如询问“EMEA 利润率下降的原因是什么?”,Claude 会探索度量值、深入市场、检查时间趋势,并给出解释。
  • 自然语言分析:任何利益相关者都可以用自然语言提问并获得实时 DAX 支持的真实答案。
  • 主动异常检测:可定期对关键度量值运行 Claude,查询数据并与前期比较,用通俗语言标记超出预期范围的情况。
  • 自文档化语义模型:Claude 可探索架构并生成数据字典,用于入职、治理和理解模型内容。
  • 大数据集自动处理:大型查询结果自动保存为本地 CSV,代理获得紧凑摘要(行数、列名、5 行预览),并按需分页读取。
  • 查询历史积累:每次成功的 DAX 查询记录在本地 JSONL 审计跟踪中,包括用户提问、生成的 DAX、返回列和 CSV 保存位置。代理可搜索历史以复用 DAX 模式和结果文件。
  • 本地数据安全:查询、结果和令牌不经过云中继。服务器本地运行,使用 OAuth 设备代码流认证,令牌存储在操作系统原生安全存储(Keychain/DPAPI/LibSecret)。

使用方式

前提条件

  • Power BI Pro、Premium Per User (PPU) 或 Premium 容量许可证
  • Azure AD 应用注册(免费,约 5 分钟)

步骤 1 — 创建 Azure AD 应用注册

  1. 转到 portal.azure.com → Azure Active Directory → 应用注册 → 新注册。
  2. 命名(如 PowerBI MCP),选择“仅此组织目录中的账户(单租户)”,点击注册。
  3. 在“身份验证” → “平台配置”下添加“移动和桌面应用程序”,勾选重定向 URI:https://login.microsoftonline.com/common/oauth2/nativeclient
  4. 在“身份验证” → “高级设置”下,将“允许公共客户端流”设为“是”,保存。
  5. 在“API 权限” → “添加权限” → “Power BI 服务”中,添加:Dataset.Read.All、Workspace.Read.All。若租户需要管理员同意,请让管理员授予。
  6. 从“概述”页复制“应用程序(客户端) ID”和“目录(租户) ID”。 注意:Power BI 租户设置“数据集执行查询 REST API”必须在 Power BI 管理门户(集成设置)中启用,execute_dax 才能工作。

步骤 2 — 安装和连接

服务器已发布在 PyPI。最快方式是使用 uvx,无需手动安装或虚拟环境。 将以下内容添加到 claude_desktop_config.json: 配置文件位置: macOS:~/Library/Application Support/Claude/claude_desktop_config.json Windows:%APPDATA%\Claude\claude_desktop_config.json POWERBI_TENANT_ID 对几乎所有用户都是必需的。设置为步骤 1 中的目录(租户) ID。 在项目中添加 .cursor/mcp.json 文件(或使用全局配置),然后替换 uvx 命令块。 .mcpb(MCP Bundle)是一个 ZIP 归档,Claude Desktop 可通过拖放安装,无需手动编辑配置。首次运行时自动安装所有 Python 依赖,唯一前提是 Python 3.10+。bundle/ 中有两个清单。构建组织 bundle:编辑 bundle/manifest.json 并在 mcp_config.env 中设置值。POWERBI_OUTPUT_DIR 可选,省略则使用默认 ~/powerbi_output。分发:将 dist/*.mcpb 分享给同事,拖放到 Claude Desktop → 设置 → 开发者。bundle/manifest.json 和 dist/ 均被 gitignore,只提交无凭据模板。

典型分析工作流

连接后,让 LLM 自然遵循此序列:注意始终使用 list_apps(而非 list_workspaces)来发现工作区 ID。在应用管理的组织中,数据集访问通过 Power BI 应用授予,使用 list_workspaces 的工作区 ID 可能导致权限错误。

大型结果处理

大型结果返回的摘要包含:rowCount(总行数)、columns(列名和类型)、preview(前 5 行)、savedTo(CSV 绝对路径)。代理随后可用 read_query_result 分页读取:返回 rows、totalRows、offset、limit 和 hasMore。通过增加 offset 获取下一页。

execute_dax 参数控制结果大小。输出目录默认为 ~/powerbi_output,可通过 POWERBI_OUTPUT_DIR 覆盖。CSV 文件和查询历史日志不会自动清理,需手动管理或添加保留策略。

适用场景

  • 业务用户无需 DAX 知识即可获得数据答案
  • 分析师需快速探索数据并自动生成解释
  • 定期监控关键指标并自动标记异常
  • 生成数据字典以理解语义模型
  • 处理数十万行的大型数据集而不中断 AI 会话

限制

  • 只读。不支持创建、修改和删除 Power BI 工件。
  • execute_dax 限制:每次查询最多 100,000 行或 1,000,000 个值(Power BI API 硬上限)。
  • 速率限制:每用户每分钟 120 个 DAX 查询请求。
  • list_tables、list_measures 和 list_columns 使用 DAX INFO.VIEW.* 函数,需要启用 XMLA 读取访问的 Import 或 DirectQuery 模型。
  • execute_dax 写入的 CSV 文件不会自动清理。
  • 令牌通过 msal-extensions 持久化:macOS 使用 Keychain,Windows 使用 DPAPI 加密文件,Linux 使用 LibSecret(gnome-keyring/KWallet),若不可用则回退到加密文件。缓存文件位于 ~/.powerbi_mcp_token_cache.bin,被 .gitignore 覆盖。服务器不记录访问令牌。所有数据访问受用户自身的 Power BI 权限控制(委托 OAuth 2.0,无服务主体,无客户端密钥)。