この記事ではMCPに特化して解説します。MCP(Model Context Protocol)全般は MCPサーバーの作り方2026完全ガイド をご覧ください。

概要

Microsoft Power BI Modeling MCPは、Model Context Protocol(MCP)に準拠したサーバー実装だ。MCPはClaudeなどのAIアシスタントが外部ツールと安全かつ標準的に連携するためのオープンプロトコル。このサーバーにより、AIがPower BIのセマンティックモデルに対して直接読み書きできる環境が整った。従来はPower BI DesktopのUIを手動操作するか、DAX式を直接記述する必要があったモデリング作業を、自然言語での指示で進められるようになる。

データエンジニアが何時間もかけて構築していたテーブル設計やリレーションシップ定義が、会話型AIとのやり取りで自動生成される。データ分析基盤の構築工数削減を目指す企業にとって、実験する価値がある。

MCPプロトコルとPower BIの連携構造

MCPは2024年にAnthropicが策定したオープン標準で、AIとツールを接続するための統一インターフェースを定義する。従来のAPI統合がツールごとにカスタム実装を要したのに対し、MCPはクライアント(AI)とサーバー(ツール)の役割を明確に分離し、実装コストを大幅に削減する。

sequenceDiagram participant User as ユーザー participant Claude as Claude
(MCPクライアント) participant MCP as Power BI
Modeling MCP Server participant PBI as Power BI
(XMLAエンドポイント) User->>Claude: 「売上メジャーをSalesテーブルに追加して」 Claude->>MCP: create_measure(table="Sales", name="TotalSales", dax="SUM(Sales[Amount])") MCP->>PBI: XMLA書き込みリクエスト(TOM経由) PBI-->>MCP: 完了レスポンス MCP-->>Claude: 作成完了(メジャー定義の確認情報) Claude-->>User: 「TotalSalesメジャーを作成しました。DAX: SUM(Sales[Amount])」 User->>Claude: 「DAXの検証をお願いします」 Claude->>MCP: execute_dax_query(query="EVALUATE { [TotalSales] }") MCP->>PBI: DAXクエリ実行 PBI-->>MCP: クエリ結果 MCP-->>Claude: 結果データ Claude-->>User: 「検証完了。結果: 12,450,000」

このシーケンス図が示す通り、ユーザーは自然言語で指示するだけでよい。ClaudeがMCPサーバーの適切なツール呼び出しに変換し、Power BI側でモデルが更新される。

主な機能

自動生成と検証

  • モデルの自動生成:テーブル、列、メジャー、リレーションシップを自然言語から自動構築・更新
  • DAXメジャー作成:複雑な計算式を人間の説明から自動生成し、DAXクエリで検証
  • スキーマ検証:既存モデルの構造を解析し、矛盾や最適化ポイントを検出

一括操作とファイル連携

  • 大規模一括操作:テーブル名の一括変更やモデルリファクタリングなどの複数オブジェクト同時処理
  • モデリングベストプラクティスの適用:AIがモデルの構造と設計パターンを評価・改善
  • モデルのインポート/エクスポート:TMDL形式およびPower BIプロジェクトファイルでのファイルベース開発に対応

技術スタック

  • プロトコル:Model Context Protocol(MCP)
  • AI連携:Claude APIおよびMCP互換AIアシスタント
  • Power BI連携:XMLAエンドポイント、Tabular Object Model(TOM)、TMDL形式
  • 対応製品:Power BI Desktop、Microsoft Fabric セマンティックモデル

セットアップ手順

公式GitHubリポジトリから取得し、Claude Desktopの設定ファイルにMCPサーバーを登録する。

# リポジトリのクローン
git clone https://github.com/microsoft/powerbi-modeling-mcp
cd powerbi-modeling-mcp

# 依存パッケージのインストール
npm install

# ビルド
npm run build

Claude Desktop(claude_desktop_config.json)へのMCPサーバー登録設定は以下の通り。

{
  "mcpServers": {
    "powerbi-modeling": {
      "command": "node",
      "args": ["/path/to/powerbi-modeling-mcp/build/index.js"],
      "env": {
        "POWERBI_WORKSPACE_ID": "your-workspace-id",
        "POWERBI_DATASET_ID": "your-dataset-id",
        "AZURE_CLIENT_ID": "your-client-id",
        "AZURE_CLIENT_SECRET": "your-client-secret",
        "AZURE_TENANT_ID": "your-tenant-id"
      }
    }
  }
}

設定後にClaude Desktopを再起動すると、Power BIモデルへの直接操作が可能になる。認証はAzure Service Principal(サービスプリンシパル)を使用し、Power BIワークスペースへのXMLA書き込み権限が必要だ。

DAX自動生成の実例

自然言語から複雑なDAXメジャーを生成する例を示す。

-- Claudeが自然言語「前年同月比の売上成長率を計算して」から生成したDAXの例
YoY Sales Growth % =
VAR CurrentSales = [Total Sales]
VAR PriorYearSales =
    CALCULATE(
        [Total Sales],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
RETURN
    DIVIDE(
        CurrentSales - PriorYearSales,
        PriorYearSales,
        BLANK()
    )

-- 生成後にMCPサーバーが自動でDAXクエリを実行し検証
-- EVALUATE { [YoY Sales Growth %] }

このようなタイムインテリジェンス関数を含む複雑なDAXも、自然言語から自動生成できる。ただし、ビジネスロジックが複雑な場合は必ず人間によるレビューが必要だ。AIが生成したDAXは構文的に正しくても、ビジネス要件と異なる計算ロジックになる場合がある。

競合ツールとの比較

ツール 操作方法 自動化度 習得コスト 適したユーザー
Power BI Desktop(UI) GUIドラッグ&ドロップ 手動 ビジネスユーザー
Tabular Editor コード+GUI 半自動 上級開発者
XMLA エンドポイント(直接) REST API 非常に高 開発者・エンジニア
Azure Data Studio クエリエディタ クエリのみ データベース管理者
Power BI Modeling MCP 自然言語 高(AI支援) 低〜中 アナリスト〜エンジニア

Power BI Desktop(UI操作)との差分:UI操作は手動の細粒度制御が可能だが、反復的なタスク自動化に向かない。テーブルを50個追加する作業がUI経由では数時間かかる場合でも、自然言語指示による一括生成で数分に短縮できる。

Tabular Editorとの位置づけ:Tabular Editorは上級者向けのメタデータエディタで、C#スクリプトによる高度な制御が可能だ。習得曲線が急で、DAX・TOMの深い知識が必要になる。MCPサーバーは自然言語インターフェースにより敷居を低くし、AIの推論能力で補完する点で異なる。

Azure Data Studioとの関係:Data Studioはクエリエディタが中心機能。本MCPはモデル層の構築と検証に特化するため、両者は補完関係にある。

実際のワークフロー例:スター スキーマの自動構築

実際のユースケースとして、生のトランザクションデータからスタースキーマを自動生成するシナリオを示す。

# Claudeへの自然言語指示の例(実際の会話ベース)

ユーザー:
「Salesというテーブルがあります。
 列は OrderDate, CustomerID, ProductID, Quantity, UnitPrice です。
 スタースキーマを構築して売上分析モデルを作ってください」

Claude(MCPを使って自動実行):
1. DimDate テーブル(DateKey, Year, Month, Quarter, WeekDay)を作成
2. DimCustomer テーブル(CustomerKey, CustomerID)を作成
3. DimProduct テーブル(ProductKey, ProductID)を作成
4. FactSales テーブルを作成し、各Dimテーブルとのリレーションシップを設定
5. TotalSales = SUM(FactSales[SalesAmount]) メジャーを作成
6. DAXクエリで検証実行

スタースキーマ構築のような反復的なパターン作業は、自動化の恩恵が最も大きい領域だ。10テーブル構成のモデルを手動で構築すると数時間かかる作業が、自然言語指示の往復で完結する可能性がある。

MCPサーバーが提供するツールをより深く理解するために、公式リポジトリのソースコードを確認することを推奨する。

// MCPサーバーが公開するツールの定義例(公式リポジトリ参照)
// tools/create-measure.ts(概念的な実装例)

const createMeasureTool = {
  name: "create_measure",
  description: "Power BIモデルに新しいDAXメジャーを追加する",
  inputSchema: {
    type: "object",
    properties: {
      tableName: {
        type: "string",
        description: "メジャーを追加するテーブル名"
      },
      measureName: {
        type: "string",
        description: "作成するメジャー名"
      },
      daxExpression: {
        type: "string",
        description: "DAX式(例:SUM(Sales[Amount]))"
      },
      formatString: {
        type: "string",
        description: "数値フォーマット(例:#,##0.00)",
        optional: true
      }
    },
    required: ["tableName", "measureName", "daxExpression"]
  }
};
// 実際の実装はGitHubリポジトリで確認してください

このツール定義がMCPの標準フォーマットに準拠しているため、Claude以外のMCP対応クライアントでも同じツールを呼び出せる。プロトコル標準化の恩恵が、ここに現れている。

こんな人に価値がある

  • ビジネスアナリスト:DAX記述の負担を軽減し、ビジネスロジック定義に集中できる
  • データエンジニア:Power BIの初期セットアップやスキーマ検証を自動化する必要がある
  • Power BI開発者:複数プロジェクト間でのモデル管理を効率化したい
  • エンタープライズIT部門:データ分析基盤の構築を規模化し、運用コストを削減したい

MCPプロトコルを活用した自動化エージェントとしては、Browser Useのようなウェブ操作エージェントとも組み合わせることで、レポートの自動更新から配信までのエンドツーエンドの自動化が構想できる。

注意点と現状の限界

パブリックプレビュー段階のため、本番環境での使用前に十分なテストが必須。以下の点に特に注意が必要だ。

XMLA書き込み権限のリスク管理:XMLA書き込みはモデル全体の変更が可能なため、テスト用ワークスペースで検証してから本番に適用する運用を推奨する。AIが意図しない変更を加えるリスクに備え、変更前のスナップショット取得も検討すべきだ。

DAX検証は必須:AIが生成したDAXは構文チェックはできるが、ビジネスロジックの正確性は保証しない。生成後の動作確認テストは省略できない。

複雑なビジネスロジック:複数テーブルにまたがる複雑な計算ロジックや、カスタムカレンダーを使うタイムインテリジェンスは、AIが誤った解釈をするリスクが高い。人間のレビューと段階的な検証が有効だ。

MCPプロトコルの全体像についてはClaude Code Auto Modeでも言及されており、AIツール間の連携標準として急速に普及が進んでいる。

参照ソース