PowerBI MCP Server
PowerBI MCP Server
Microsoft Power BI を Azure AD API 経由で統合するためのフル機能の Model Context Protocol (MCP) サーバー。
🎯 機能
📖 READ 操作 (7 ツール):
get_workspaces- 利用可能なすべてのワークスペースの一覧の取得get_datasets- データセットの一覧の取得 (ワークスペースによるフィルタリング対応)get_reports- レポートの一覧の取得 (ワークスペースによるフィルタリング対応)get_dataset_tables- データセット内のテーブル構造の取得query_dataset- データセットへの DAX クエリの実行refresh_dataset- データセットの更新の開始get_refresh_history- データセットの更新履歴の取得
🏗️ WORKSPACE 管理 (3 ツール):
create_workspace- 新しいワークスペースの作成delete_workspace- ワークスペースの削除add_workspace_user- アクセス権を持つユーザーの追加
📊 DATASET 管理 (3 ツール):
create_dataset- テーブルとスキーマを持つデータセットの作成delete_dataset- データセットの削除update_dataset- データセット構成の更新
🗃️ TABLE 管理 (3 ツール):
create_table- データセット内のテーブルの作成delete_table- テーブルの削除update_table- テーブル構造の変更
📋 COLUMN 管理 (3 ツール):
add_column- データ型を持つ列の追加delete_column- 列の削除update_column- 列プロパティの変更
🧮 MEASURE 管理 (3 ツール):
create_measure- 計算メジャー (DAX) の作成delete_measure- メジャーの削除update_measure- DAX 式の更新
📈 REPORT 管理 (3 ツール):
create_report- 新しいレポートの作成delete_report- レポートの削除clone_report- レポートの複製
📥 DATA インポート (2 ツール):
add_table_rows- テーブルへのデータ追加clear_table_rows- テーブルデータのクリア
🌐 GATEWAY 管理 (2 ツール):
get_gateways- ゲートウェイの一覧の取得get_gateway_datasources- ゲートウェイのデータソースの取得
合計: PowerBI を完全に管理するための 28 のフル機能 MCP ツール!
サポートされている機能:
✅ PowerBI の完全管理: ワークスペースの作成からビジュアルの追加まで
✅ Azure AD による認証 (サービス プリンシパル)
✅ トークンの自動更新
✅ 包括的なエラーハンドリング とロギング
✅ 主要なすべてのエンティティに対する CRUD 操作
✅ DAX クエリの実行 と計算メジャー
✅ データのインポート とテーブル管理
✅ 外部データソースのためのゲートウェイ統合
✅ ワークスペースと権限の管理
📋 要件
Node.js 18+
TypeScript
Azure AD に登録されたアプリケーション
Power BI API の権限
🚀 インストール
1. クローンと依存関係のインストール
git clone <repository-url>
cd powerbi_mcp_server
npm install2. Azure AD アプリケーションの設定
Azure Portal → App registrations に移動します
新しいアプリケーションを作成するか、既存のものを使用します
"API permissions" セクションで以下を追加します:
Power BI Service の権限:
Dataset.Read.AllDataset.ReadWrite.AllReport.Read.AllWorkspace.Read.All
Microsoft Graph (オプション):
User.Read
"Certificates & secrets" セクションで新しいクライアント シークレットを作成します
Application (client) ID、Directory (tenant) ID、クライアント シークレットをコピーします
3. 環境変数の設定
.env.example を .env にコピーして入力します:
cp .env.example .env.env を編集します:
# Azure AD Configuration
AZURE_CLIENT_ID=your_application_client_id
AZURE_CLIENT_SECRET=your_client_secret
AZURE_TENANT_ID=your_tenant_id
# PowerBI API Configuration
POWERBI_API_URL=https://api.powerbi.com/v1.0/myorg
# Logging
LOG_LEVEL=info4. プロジェクトのビルド
npm run build🎮 使用方法
サーバーの起動
npm start
# или для development:
npm run devClaude Desktop との統合
Claude Desktop の設定ファイルに追加します:
{
"mcpServers": {
"powerbi": {
"command": "node",
"args": ["/path/to/powerbi_mcp_server/build/index.js"],
"env": {
"AZURE_CLIENT_ID": "your_client_id",
"AZURE_CLIENT_SECRET": "your_client_secret",
"AZURE_TENANT_ID": "your_tenant_id"
}
}
}
}MCP 互換クライアントでの使用
接続後、次のツールが利用可能です:
ワークスペースの取得
get_workspaces()データセットの取得
get_datasets(workspace_id?: string)DAX クエリの実行
query_dataset(
dataset_id: "your-dataset-id",
dax_query: "EVALUATE VALUES('Table'[Column])",
workspace_id?: "workspace-id"
)テーブル付きの新しいデータセットの作成
create_dataset(
name: "Sales Dataset",
tables: [{
name: "Sales",
columns: [
{ name: "Date", dataType: "Datetime" },
{ name: "Amount", dataType: "Double" },
{ name: "Product", dataType: "String" }
],
measures: [{
name: "Total Sales",
expression: "SUM(Sales[Amount])",
formatString: "Currency"
}]
}],
workspace_id?: "workspace-id"
)テーブルへのデータ追加
add_table_rows(
dataset_id: "dataset-id",
table_name: "Sales",
rows: [
["2024-01-01", 1000, "Product A"],
["2024-01-02", 1500, "Product B"]
],
workspace_id?: "workspace-id"
)📊 使用例
例 1: すべてのワークスペースの取得
// Tool call: get_workspaces
// Response:
{
"success": true,
"data": [
{
"id": "workspace-guid",
"name": "My Workspace",
"isReadOnly": false,
"isOnDedicatedCapacity": true
}
],
"count": 1
}例 2: DAX クエリ
// Tool call: query_dataset
{
"dataset_id": "dataset-guid",
"dax_query": "EVALUATE TOPN(10, 'Sales', 'Sales'[Amount], DESC)",
"workspace_id": "workspace-guid"
}
// Response:
{
"success": true,
"data": {
"tables": [
{
"rows": [
["Product A", 1000],
["Product B", 800]
]
}
]
}
}🔧 開発
プロジェクト構造
src/
├── auth.ts # Azure AD authentication
├── powerbi-client.ts # PowerBI REST API client
├── server.ts # MCP server implementation
├── types.ts # TypeScript interfaces
├── logger.ts # Logging configuration
└── index.ts # Entry point開発コマンド
npm run build # Сборка TypeScript
npm run dev # Development режим
npm start # Production запуск🛡️ セキュリティ
✅ 安全なトークンストレージと自動更新
✅ 認証情報やトークンは決してログに記録されません
✅ すべての入力パラメータの検証
✅ すべての API 呼び出しに HTTPS
✅ すべてのシナリオに対するエラーハンドリング
📝 ロギング
サーバーはロギングに Winston を使用します。ログレベルは LOG_LEVEL 変数で設定します:
error- エラーのみwarn- 警告とエラーinfo- 情報メッセージ (デフォルト)debug- 詳細なデバッグ情報
❗ トラブルシューティング
問題: "Authentication failed"
解決策: Azure AD の資格情報と権限が正しいことを確認してください
問題: "Dataset not found"
解決策: サービス プリンシパルがワークスペース/データセットにアクセスできることを確認してください
問題: "DAX query failed"
解決策: DAX クエリの構文とデータセットへのアクセス権限を確認してください
問題: "MCP connection failed"
解決策: サーバーが正しく起動され、stdio 経由でアクセス可能であることを確認してください
📖 参考リソース
📄 ライセンス
ISC License
🤝 プロジェクトへの貢献
pull request と issue の報告を歓迎します。変更を加える前に:
すべてのテストが通ることを確認してください
プロジェクトのコードスタイルに従ってください
必要に応じてドキュメントを更新してください
Model Context Protocol エコシステムのために作成されました 🚀
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Project portfolio management for PMOs. Alternative to Microsoft Project Online. OAuth + PAT.
*Updated June 17th 2025** Manage your Microsoft 365 services effortlessly. Create and manage distr…
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mavline/powerbi_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server