Token导航 LogoToken导航TokenDH.com
Powerbi Remote MCP Server logo
数据服务stdio官方级别未说明来源级核验

Powerbi Remote MCP Server

MCP Server

一个本地运行的Power BI数据分析工具,通过LLM(如Claude)连接Power BI语义模型,执行DAX查询并分析数据,支持大规模数据集处理。

工具数

12

提示词数

0

GitHub Stars

8

资源数

0
数据分析本地处理PythonClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

mbrummerstedt

提供方

mbrummerstedt

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install powerbi-analyst-mcp

详细介绍

Power BI分析师MCP

![PyPI](https://pypi.org/project/powerbi-analyst-mcp/) ![Python](https://pypi.org/project/powerbi-analyst-mcp/) ![Tests](https://github.com/mbrummerstedt/powerbi-analyst-mcp/actions) ![License: MIT](LICENSE)

![powerbi-analyst-mcp MCP server](https://glama.ai/mcp/servers/mbrummerstedt/powerbi-analyst-mcp)

请Claude分析您的Power BI数据。获取答案——而不是上下文窗口崩溃。

将Claude(或任何MCP客户端)连接到您的Power BI语义模型。探索表和度量值,运行DAX查询,并处理真实结果——即使是在包含数万行的数据集上。大型查询结果会自动保存到本地文件,并按需分页到代理,因此无论您提取多少数据,您的AI会话都会保持快速和专注。

一切都在你的机器上运行。您的数据永远不会通过第三方中继。

______________________________________________________________________

什么是可能的

分析的瓶颈从来不是数据访问——Power BI已经为人们提供了访问权限。瓶颈是翻译:将数据转化为决策的熟练、耗时的工作。此服务器将该翻译移动到LLM。

整个模型的复合推理 人类分析师运行一个查询,读取结果,形成假设,运行另一个查询。这部连续剧连载了好几个小时。一个代理可以按顺序运行20个查询——每个查询由最后一个查询通知——综合所有查询,并在几分钟内得出合理的结论。问“是什么导致了EMEA地区的利润率下降?”Claude将探索衡量标准,深入市场,检查时间趋势,隔离异常值,并解释它——而无需你指导每一步。

面向所有人的自然语言分析 任何利益相关者都可以提出数据问题,并获得实时DAX支持的真实答案,而无需知道DAX是什么,无需提交工单,也无需等待。翻译层过去需要训练有素的分析师按需运行。

主动异常检测 根据你的关键指标,按照时间表运行克劳德。它查询数据,与之前的时期进行比较,并用简单的英语标记任何超出预期范围的东西——在任何人打开仪表板发现问题之前。

自文档语义模型 “列出此数据集中的每个度量,并解释它的计算结果。”Claude探索了该模式并生成了一个数据字典,这对入职培训、治理以及任何试图理解模型实际包含内容的人都很有用。

大型数据集,自动处理 Power BI查询可以返回数万行。返回所有内联将占用LLM的大部分上下文窗口并使会话崩溃。此服务器将大型结果保存到本地CSV,并为代理提供一个简洁的摘要——行数、列名、5行预览——然后让它按需浏览文件。您将获得完整的数据集。AI会话保持精简。

查询随时间复合的历史记录 每个成功的DAX查询都会在本地记录在JSONL审计跟踪中——用户询问的内容、生成的DAX、返回的列以及CSV的保存位置。在下一个会话中,代理将搜索此历史记录以查找相关的先前工作:可重用的DAX模式、先前计算的结果文件以及早期分析的上下文。你使用它的次数越多,它就越快、越聪明——而且你总是有一个审计跟踪,知道每个数字的来源。

您的数据保留在您的计算机上 查询、结果和令牌永远不会通过云中继。服务器在本地运行,通过与Power BI web应用程序相同的OAuth设备代码流进行身份验证,并将令牌存储在操作系统的本机安全存储(Keychain/DPAPI/LibSecret)中。

______________________________________________________________________

它与微软的官方MCP服务器相比如何

微软为Power BI发布了两个MCP服务器。这个服务器在用途和架构上与两者都不同。

此服务器微软远程MCP微软建模MCP
目的查询和分析现有模型查询现有模型构建和修改模型
本地在您的计算机上Microsoft的云基础架构本地(Power BI桌面)
数据路径直接供电BI REST API通过Microsoft的MCP中继本地XMLA
认证OAuth设备代码(委托)通过远程服务的OAuth本地会话
大型结果自动保存到本地CSV仅在上下文中不适用
只读
给谁的使用Claude/Cursor的分析师使用Copilot的分析师模型开发人员

______________________________________________________________________

它看起来像什么

You: Analyse revenue by market and product category for Q1 2025

Claude: Let me explore the dataset first.
        [calls list_tables → list_measures → execute_dax]

        The query returned 73,840 rows — saved to:
        ~/powerbi_output/dax_result_revenue_q1_2025_20260313_091204.csv

        [pages through results with read_query_result]

        Summary: EMEA leads at 44% of total revenue. The top category
        is Premium Hardware in both EMEA and AMER. APAC shows the
        strongest quarter-over-quarter growth at +18%...

代理探索模式、写入DAX、处理文件并交付分析,而无需您触摸Power BI UI。

______________________________________________________________________

工具

工具它做什么
authenticate通过OAuth设备代码登录——返回URL+一次性代码;再次呼叫以完成
logout清除缓存的令牌(强制重新身份验证)
list_apps列出您有权访问的所有Power BI应用程序-- 从这里开始;退货 workspaceId 对于每个应用程序
list_datasets列出工作区中的数据集/语义模型(使用 workspaceIdlist_apps)
get_dataset_info数据集的元数据和最后5个刷新历史条目
list_tables数据集中的所有可见表
list_measures具有名称、表、描述和格式字符串的度量值
list_columns具有数据类型和键标志的列
execute_dax运行DAX查询——内联用于小结果,本地CSV用于大结果。通过 query_summary 记录查询以供将来参考。
read_query_result浏览大型CSV结果,而无需将其全部加载到上下文中
search_query_history按关键字、数据集或时间范围搜索本地查询日志——在会话中查找之前的DAX和结果
delete_query_log_entry删除查询日志条目(例如,当方法被证明是错误的时)

______________________________________________________________________

用户指南

先决条件

  • Python 3.10+
  • Power BI Pro、高级每用户(PPU)或高级容量许可证
  • Azure AD应用程序注册(免费,约5分钟——见下文)

步骤1--创建Azure AD应用程序注册

OAuth 2.0需要 客户端ID 以确定哪个应用程序代表您。注册是免费的,不需要客户端密码,也不需要Power BI管理员同意此处使用的两个只读范围。

  1. 首选 portal.azure.comAzure Active Directory应用注册新注册.
  1. 命名(例如。 PowerBI MCP).对于帐户类型,请选择 仅此组织目录中的帐户 (单租户)。点击 注册.
  1. 在...之下 认证平台配置,添加 移动和桌面应用程序 并勾选此重定向URI:
   https://login.microsoftonline.com/common/oauth2/nativeclient
  1. 仍在进行中 认证高级设置,set 允许公共客户端流。保存。
  1. 在...之下 API权限添加权限Power BI服务,添加:

- Dataset.Read.All - Workspace.Read.All

如果您的租户需要管理员同意,请请求管理员授予。

  1. 概述 第页,复制这两个文件——您将在步骤2中需要它们:

- 应用程序(客户端)ID - 目录(租户)ID

注: Power BI租户设置 “数据集执行查询REST API” 必须在Power BI管理门户(集成设置)中启用 execute_dax 工作。

______________________________________________________________________

步骤2——安装并连接

服务器发布在PyPI上。最快的跑步方式是 uvx,不需要手动安装或虚拟环境。

克劳德桌面版

将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "powerbi": {
      "command": "uvx",
      "args": ["powerbi-analyst-mcp"],
      "env": {
        "POWERBI_CLIENT_ID": "your-application-client-id",
        "POWERBI_TENANT_ID": "your-directory-tenant-id"
      }
    }
  }
}

配置文件位于:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
POWERBI_TENANT_ID 几乎所有用户都需要。 大多数组织只有一个Azure AD租户。将此设置为您的 目录(租户)ID 从步骤1开始。留下它作为 organizations (默认)将导致身份验证失败或针对错误的租户。

光标

添加a .cursor/mcp.json 项目中的文件(或使用全局配置):

{
  "mcpServers": {
    "powerbi": {
      "command": "uvx",
      "args": ["powerbi-analyst-mcp"],
      "env": {
        "POWERBI_CLIENT_ID": "your-application-client-id",
        "POWERBI_TENANT_ID": "your-directory-tenant-id"
      }
    }
  }
}

pip安装(替代)

pip install powerbi-analyst-mcp

然后更换 uvx 命令块包含:

"command": "powerbi-analyst-mcp",
"args": []

Claude Desktop捆绑包(.mcpb)——用于组织范围内的分发

A. .mcpb (MCP Bundle)是Claude Desktop通过拖放安装的ZIP存档,无需手动编辑配置。捆绑包在第一次运行时自动安装所有Python依赖项;唯一的先决条件是Python 3.10+。

两个清单住在 bundle/:

文件目的Git
manifest.template.json通用--在安装时通过Claude的UI提示用户输入凭据已提交
manifest.json特定于组织的--为静默部署硬编码的凭据Gitigned --永不承诺

构建一个组织包:

# 1. Create your org manifest (one-time setup)
cp bundle/manifest.template.json bundle/manifest.json

编辑 bundle/manifest.json 并设定你的价值观 mcp_config.env:

"env": {
  "POWERBI_CLIENT_ID": "your-application-client-id",
  "POWERBI_TENANT_ID": "your-directory-tenant-id",
  "POWERBI_OUTPUT_DIR": "/custom/output/path"
}

POWERBI_OUTPUT_DIR 是可选的--完全省略它以使用默认值 ~/powerbi_output.

# 2. Build the bundle
chmod +x bundle/build.sh
./bundle/build.sh
# → dist/miinto-powerbi-analyst.mcpb  (gitignored)

分发: 分享 dist/*.mcpb 与同事。他们把它拖放到上面 克劳德桌面版→ 设置→ 开发者。适用于macOS和Windows。

安全: bundle/manifest.jsondist/ 两者都被忽视了。仅提交无凭据模板。永远不要向git跟踪的任何文件添加凭据。

______________________________________________________________________

典型分析工作流程

连接后,要求您的LLM自然地遵循以下顺序:

1. authenticate          ← first run only; returns a URL + code to open in browser,
                           then call authenticate again to complete sign-in
2. list_apps             → returns installed apps, each with a workspaceId
3. list_datasets         workspace_id=   → returns dataset IDs
4. list_tables           workspace_id=   dataset_id=
5. list_measures         workspace_id=   dataset_id=   [table_name=]
6. list_columns          workspace_id=   dataset_id=   [table_name=]
7. search_query_history  [keyword="revenue"]  ← check if similar work exists from a prior session
8. execute_dax           workspace_id=   dataset_id=
                         dax_query="EVALUATE SUMMARIZECOLUMNS(...)"
                         [query_summary="Revenue by market and product for Q1 2025"]
                         [result_name="revenue by market q1"]  ← names the saved CSV
                         [max_rows=500]                        ← optional row cap for sampling
9. read_query_result     file_path=   [offset=0]   [limit=100]
                         ← page through large results without filling context
注: 总是使用 list_apps (不是 list_workspaces)以发现工作区ID。在应用程序管理的组织中,数据集访问是通过Power BI应用程序授予的——使用来自的工作区ID list_workspaces 可能会导致权限错误。

DAX查询示例

-- Total sales by year
EVALUATE
SUMMARIZECOLUMNS(
    'Date'[Year],
    "Total Sales", [Total Sales]
)
ORDER BY 'Date'[Year]

-- Top 10 customers by revenue
EVALUATE
TOPN(
    10,
    SUMMARIZECOLUMNS('Customer'[Name], "Revenue", [Revenue]),
    [Revenue], DESC
)

-- Filtered subset
EVALUATE
CALCULATETABLE(
    'Sales',
    'Date'[Year] = 2024
)

______________________________________________________________________

大结果处理——详细

结果大小会发生什么
≤50行以JSON形式内联返回——零摩擦
>50行完整结果保存到带时间戳的CSV中;代理收到一个简洁的摘要

返回的大型结果摘要包含:

  • rowCount --写入的行总数
  • columns --列名和类型
  • preview --前5行
  • savedTo --CSV文件的绝对路径

然后,代理可以使用以下命令浏览文件 read_query_result:

read_query_result(
    file_path = "/path/from/savedTo",
    offset    = 0,      # zero-based row offset
    limit     = 100     # rows per page (default 100)
)

退货 rows, totalRows, offset, limit,以及 hasMore.增量 offset 通过 limit 以获取下一页。

execute_dax 用于控制结果大小的参数:

参数类型说明
query_summarystr (可选)用户请求的简短描述——记录到本地查询历史中,以实现可审计性和跨会话重用。
result_namestr (可选)CSV文件名中使用的短标签,例如。 "gmv by market 2024"dax_result_gmv_by_market_2024_20260305_143022.csv最多40个字符。
max_rowsint (可选)通过以下方式施加硬帽 TOPN 在Power BI发动机级别。可用于快速采样,而无需重写DAX。

输出目录 默认为 ~/powerbi_output.用覆盖 POWERBI_OUTPUT_DIR 在您的MCP客户的 env 块。CSV文件和查询历史日志不会自动清理——手动管理目录或添加保留策略。

______________________________________________________________________

局限性

  • 只读。 不支持创建、修改和删除Power BI工件。
  • execute_dax 限制:每次查询100000行或1000000个值(Power BI API硬上限)。
  • 速率限制:每位用户每分钟120个DAX查询请求。
  • list_tables, list_measures,以及 list_columns 使用DAX INFO.VIEW.* 这些函数需要启用XMLA读取访问的导入或DirectQuery模型。
  • CSV文件写入者 execute_dax 不会自动清理。

______________________________________________________________________

安全

- macOS --钥匙扣 - 视窗 --DPAPI加密文件 - Linux --LibSecret(侏儒钥匙圈/KWallet);如果不可用,则回退到加密文件

  • 缓存文件被写入 ~/.powerbi_mcp_token_cache.bin 并且被覆盖 .gitignore.
  • 服务器从不记录访问令牌。
  • 所有数据访问都由用户自己的Power BI权限(委派的OAuth 2.0——没有服务主体,没有客户端机密)控制。

______________________________________________________________________

贡献

贡献.md 关于项目结构、开发环境设置、架构说明以及如何添加新工具。

目录标签

目录标签

数据分析本地处理PythonClaude本地部署PowerBIDAX查询LLM集成

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

12

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP