mcpField
P
Power Bi Analyst Mcp

Power Bi Analyst Mcp

ローカル
github.com/mbrummerstedtデータ・分析1428 週間前に更新

Power Bi Analyst Mcp について

Power BI Analyst MCPは、分析担当者などがMCPクライアント経由でPower BIのセマンティックモデルを調べ、DAXクエリを実行するためのサーバーです。大きな結果はローカルCSVに保存して必要に応じて読み取り、クエリ履歴をセッション間で再利用できます。

主な機能

  1. 01Power BIアプリ、データセット、テーブル、メジャーの一覧表示
  2. 02セマンティックモデルへのDAXクエリ実行
  3. 03大きな結果のローカルCSV保存
  4. 04保存済みクエリ結果のページ読み込み
  5. 05クエリ履歴の記録と検索

活用シーン

  1. 01ライブDAXクエリによる業務上の質問への回答
  2. 02一括返却に大きすぎる結果の分析
  3. 03過去のセッションで使ったDAXパターンの再利用
  4. 04セマンティックモデルのメジャーの文書化

MCP 対応

Power BIの認証、モデル探索、DAXクエリ、結果のページ読み込み、クエリ履歴のツールをMCPクライアントに公開します。ローカルで動作し、大きな結果とクエリ履歴を端末に保存します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"powerbi-analyst": {
"command": "uvx",
"args": [
"powerbi-analyst-mcp"
],
"env": {
"POWERBI_CLIENT_ID": "<POWERBI_CLIENT_ID>",
"POWERBI_TENANT_ID": "<POWERBI_TENANT_ID>"
}
}
}
}
起動コマンドuvx powerbi-analyst-mcp
設定が必要な環境変数
POWERBI_CLIENT_IDAzure AD application (client) ID
POWERBI_TENANT_IDAzure AD directory (tenant) ID

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipowerbi-analyst-mcp0.1.1

ツール

12

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Power BI アナリスト MCP

PyPI Python Tests License: MIT

powerbi-analyst-mcp MCP server

Claude に Power BI データを分析させましょう。コンテキストウィンドウのクラッシュを防ぎ、回答を得られます。

Claude(または任意の MCP クライアント)を Power BI のセマンティックモデルに接続します。テーブルやメジャーを調べ、DAX クエリを実行し、実データを扱えます。数万行に及ぶデータセットでも対応できます。大量のクエリ結果は自動的にローカルファイルへ保存され、必要に応じてエージェントにページ単位で渡されるため、どれだけデータを取得しても AI セッションを高速かつ集中した状態に保てます。

すべての処理はお使いのマシン上で実行されます。データがサードパーティの中継サーバーを経由することはありません。


できるようになること

分析におけるボトルネックは、これまで本当の意味でデータアクセスではありませんでした。Power BI で、すでに誰もがデータにアクセスできるからです。ボトルネックは、データを意思決定につなげるために必要な、専門的で時間のかかる作業である「解釈」です。このサーバーは、その解釈を LLM に担わせます。

モデル全体にわたる複合的な推論 人間のアナリストは、クエリを一つ実行し、結果を読み、仮説を立て、別のクエリを実行します。この作業は順番に進めるため、何時間もかかります。エージェントなら、先の結果を踏まえながら、クエリを連続して20件実行し、そのすべてを総合して、筋道の通った結論を数分で提示できます。「EMEA で利益率が低下している要因は何ですか?」と尋ねると、Claude がメジャーを調べ、市場を掘り下げ、時系列の傾向を確認し、外れ値を特定して説明します。各手順を指示する必要はありません。

誰もが使える自然言語分析 どの関係者もデータについて質問し、DAX が何かを知らなくても、チケットを申請しなくても、回答を待たなくても、ライブ DAX に裏付けられた実際の答えを得られます。これまでは訓練を受けたアナリストが必要だった解釈の工程を、必要なときに実行できます。

プロアクティブな異常検知 主要なメジャーを対象に、スケジュールに従って Claude を実行できます。データをクエリして過去の期間と比較し、予想範囲を外れた値があれば、平易な言葉で通知します。問題を把握するために誰かがダッシュボードを開く前に検知できます。

自己文書化するセマンティックモデル 「このデータセット内のすべてのメジャーを一覧表示し、それぞれの計算内容を説明してください。」Claude がスキーマを調べてデータ辞書を作成します。オンボーディングやガバナンス、モデルに実際に何が含まれているかを把握したい人に役立ちます。

大規模データセットを自動で処理 Power BI のクエリは、数万行を返すことがあります。そのすべてをインラインで返すと、LLM のコンテキストウィンドウの大半を消費し、セッションがクラッシュするおそれがあります。このサーバーは、大きな結果をローカル CSV に保存し、行数、列名、5行のプレビューを含む簡潔な概要をエージェントに渡します。その後、必要に応じてファイルをページ単位で読み込めます。データセット全体を取得しながら、AI セッションを軽量に保てます。

使うほど蓄積されるクエリ履歴 成功した DAX クエリはすべて、ユーザーの質問、生成された DAX、返された列、CSV の保存先とともに、ローカルの JSONL 監査ログに記録されます。次のセッションでは、エージェントがこの履歴を検索し、再利用可能な DAX パターン、以前に計算した結果ファイル、過去の分析から得たコンテキストなど、関連する過去の作業を見つけます。使うほど、より速く賢くなり、すべての数値の出所を示す監査ログも常に残ります。

データはお使いのマシン上に保管 クエリ、結果、トークンがクラウドリレーを経由することはありません。サーバーはローカルで実行され、Power BI ウェブアプリと同じ OAuth デバイスコードフローで認証し、OS 標準のセキュアストア(Keychain / DPAPI / LibSecret)にトークンを保存します。


Microsoft 公式 MCP サーバーとの比較

Microsoft は Power BI 用の MCP サーバーを2つ公開しています。このサーバーは、目的もアーキテクチャも、どちらとも異なります。

このサーバーMicrosoft Remote MCPMicrosoft Modeling MCP
目的既存のモデルをクエリして分析既存のモデルをクエリモデルの構築と変更
実行場所お使いのマシン上Microsoft のクラウドインフラストラクチャローカル(Power BI Desktop)
データ経路Power 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 を操作する必要はありません。


ツール

ツール機能
authenticateOAuth デバイスコードでサインインします。URL と 1 回限りのコードが返されます。完了するにはもう一度呼び出します
logoutキャッシュされたトークンを消去します(再認証が必要になります)
list_appsアクセスできる Power BI アプリをすべて一覧表示します。まずはこちらから。各アプリの workspaceId が返されます
list_datasetsワークスペース内のデータセット/セマンティックモデルを一覧表示します(list_apps の workspaceId を使用します)
get_dataset_infoデータセットのメタデータと直近 5 件の更新履歴
list_tablesデータセット内の表示可能なテーブルをすべて一覧表示します
list_measures名前、テーブル、説明、書式文字列を含むメジャー
list_columnsデータ型とキーのフラグを含む列
execute_daxDAX クエリを実行します。小さな結果はインラインで、大きな結果はローカル CSV で返します。query_summary を渡すと、今後参照できるようクエリが記録されます
read_query_result大きな CSV の結果をすべてコンテキストに読み込まずに、ページ単位で取得します
search_query_historyキーワード、データセット、期間を指定してローカルのクエリログを検索し、セッションをまたいで過去の DAX と結果を見つけます
delete_query_log_entryクエリログのエントリを削除します(例:アプローチが誤りだと判明した場合)

ユーザーガイド

前提条件
  • Python 3.10+
  • Power BI Pro、Premium Per User(PPU)、または Premium 容量のライセンス
  • Azure AD アプリの登録(無料、約 5 分。以下を参照)
ステップ 1 — Azure AD アプリを登録する

OAuth 2.0 では、どのアプリケーションがお客様に代わって処理を実行するのかを識別するためのクライアント IDが必要です。登録は無料で、クライアントシークレットは不要です。また、ここで使用する読み取り専用スコープ 2 つについて、Power BI 管理者の同意も必要ありません。

  1. portal.azure.com に移動し、→ Azure Active Directory → App registrations → New registration を選択します。

  2. 名前を入力します(例:PowerBI MCP)。アカウントの種類では Accounts in this organizational directory only(シングルテナント)を選択します。Register をクリックします。

  3. Authentication → Platform configurations で、Mobile and desktop applications を追加し、次のリダイレクト URI にチェックを入れます。

    https://login.microsoftonline.com/common/oauth2/nativeclient
    
  4. 引き続き Authentication → Advanced settings で、Allow public client flows を Yes に設定します。保存します。

  5. API permissions → Add a permission → Power BI Service で、次を追加します。

    • Dataset.Read.All
    • Workspace.Read.All

    テナントで管理者の同意が必要な場合は、管理者に同意を付与してもらってください。

  6. Overview ページで次の 2 つをコピーします。ステップ 2 で必要になります。

    • Application (client) ID
    • Directory (tenant) ID

注: execute_dax を使用するには、Power BI テナント設定の 「Dataset Execute Queries REST API」 を Power BI Admin Portal(Integration settings)で有効にする必要があります。


ステップ 2 — インストールして接続する

サーバーは PyPI で公開されています。実行する最も手軽な方法は uvx を使用することです。手動インストールや仮想環境は不要です。

Claude Desktop

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
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

ほとんどのユーザーに POWERBI_TENANT_ID の設定が必要です。 多くの組織では Azure AD テナントが 1 つです。ステップ 1 で確認した Directory (tenant) ID を設定してください。organizations(既定値)のままにすると、認証に失敗したり、誤ったテナントが対象になったりします。

Cursor

プロジェクト内に .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 install(代替方法)
pip install powerbi-analyst-mcp

次に、uvx のコマンドブロックを次の内容に置き換えます。

"command": "powerbi-analyst-mcp",
"args": []
Claude Desktop バンドル(.mcpb)— 組織全体への配布向け

.mcpb(MCP バンドル)は、Claude Desktop がドラッグ&ドロップでインストールする ZIP アーカイブです。設定を手動で編集する必要はありません。初回実行時にバンドルがすべての Python 依存関係を自動的にインストールします。必要な前提条件は Python 3.10 以降のみです。

bundle/ には 2 つのマニフェストがあります。

ファイル用途Git
manifest.template.json汎用 — インストール時に Claude の UI から認証情報を入力するようユーザーに求めますコミット済み
manifest.json組織固有 — サイレントデプロイ用に認証情報をハードコードしますGitignore 対象 — コミットしないでください

組織用バンドルのビルド:

# 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 を同僚と共有します。Claude Desktop → Settings → Developer にドラッグ&ドロップしてもらいます。macOS と Windows で動作します。

セキュリティ: bundle/manifest.json と dist/ はどちらも Gitignore 対象です。認証情報を含まないテンプレートのみコミットしてください。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=<workspaceId from app>   → returns dataset IDs
4. list_tables           workspace_id=<id>   dataset_id=<id>
5. list_measures         workspace_id=<id>   dataset_id=<id>   [table_name=<name>]
6. list_columns          workspace_id=<id>   dataset_id=<id>   [table_name=<name>]
7. search_query_history  [keyword="revenue"]  ← check if similar work exists from a prior session
8. execute_dax           workspace_id=<id>   dataset_id=<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=<savedTo>   [offset=0]   [limit=100]
                         ← page through large results without filling context

注: ワークスペース ID の確認には、必ず list_apps(list_workspaces ではなく)を使用してください。アプリ管理の組織では、データセットへのアクセスは Power BI アプリを通じて付与されます。list_workspaces のワークスペース ID を使うと、権限エラーが発生する場合があります。

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(任意)Power BI エンジンレベルで TOPN によって適用される上限です。DAX を書き換えずにすばやくサンプリングする場合に便利です。

出力ディレクトリのデフォルトは ~/powerbi_output です。MCP クライアントの env ブロックで POWERBI_OUTPUT_DIR を設定すると、上書きできます。CSV ファイルとクエリ履歴ログは自動的に削除されません。ディレクトリを手動で管理するか、保持ポリシーを追加してください。


制限事項

  • 読み取り専用です。 Power BI アーティファクトの作成、変更、削除には対応していません。
  • execute_dax の制限:1 クエリあたり 100,000 行または 1,000,000 個の値(Power BI API のハード上限)。
  • レート制限:ユーザーごとに 1 分あたり 120 件の DAX クエリリクエスト。
  • list_tables、list_measures、list_columns は DAX の INFO.VIEW.* 関数を使用します。この関数には、XMLA 読み取りアクセスが有効になっている Import または DirectQuery モデルが必要です。
  • execute_dax が書き込む CSV ファイルは自動的に削除されません。

セキュリティ

  • トークンは、msal-extensions を使用し、OS 標準のセキュアストレージに保存されます。
    • macOS — Keychain
    • Windows — DPAPI で暗号化されたファイル
    • Linux — LibSecret(gnome-keyring / KWallet)。利用できない場合は、暗号化されたファイルにフォールバックします。
  • キャッシュファイルは ~/.powerbi_mcp_token_cache.bin に書き込まれ、.gitignore の対象です。
  • サーバーがアクセストークンをログに記録することはありません。
  • すべてのデータアクセスには、ユーザー自身の Power BI 権限が適用されます(委任型 OAuth 2.0 — サービスプリンシパルもクライアントシークレットも使用しません)。

コントリビューション

プロジェクト構成、開発環境のセットアップ、アーキテクチャに関する説明、新しいツールの追加方法については、CONTRIBUTING.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。