Microsoft Fabric MCPをClaude Codeに追加する手順と権限の線引き
Microsoft公式のFabric MCPサーバーをClaude Codeに登録する手順です。4つのツール群、必要な権限、削除系ツールを止める設定までまとめます。
Microsoft Fabric MCPサーバーは、Fabricの公開APIの仕様とアイテム定義をClaude Codeに渡し、さらにワークスペースやOneLakeを認証付きで操作させるためのサーバーです。ローカルで動く標準入出力(stdio)型で、npx か .NETツールで起動します。
READMEの設定例は mcp.json 形式です。Claude Codeでは claude mcp add か .mcp.json に置き換えます。この記事では、その置き換えと、ツールごとの権限、書き込み系ツールの止め方を順に示します。
何ができるサーバーか — 4つのツール群
READMEによると、サーバーは core、docs、onelake、datafactory の4つのツール群を持ちます。働き方は大きく2つに分かれます。
docsは同梱の仕様書を読むだけで、稼働中のFabric環境には接続しませんcore、onelake、datafactoryは設定した身元(identity)でFabric APIを呼びます
つまり、コードを書かせるだけなら docs で足ります。環境の中身を見たり変えたりする段階で、初めて権限の話が出てきます。
| ツール群 | 主な用途 | 例 | 環境への書き込み |
|---|---|---|---|
docs | 主な用途APIの仕様・スキーマ・ベストプラクティスの参照 | 例docs_item-api-spec | 環境への書き込みなし |
core | 主な用途容量・ワークスペース・アイテムの管理 | 例core_list-workspaces | 環境への書き込みあり(作成・更新・削除) |
onelake | 主な用途ファイル、テーブル、ショートカット、データアクセスロール | 例onelake_upload-file | 環境への書き込みあり |
datafactory | 主な用途パイプラインとDataflow Gen2 | 例datafactory_run-pipeline | 環境への書き込みあり |
docs のツールは6つです。アイテム種別の一覧、アイテムごとのOpenAPI仕様、プラットフォームAPIの仕様、アイテム定義のJSONスキーマ、ベストプラクティス、リクエスト例を返します。
Claude Codeへの登録手順
起動方法は3つあります。READMEのとおり、前提はそれぞれ違います。
| 方法 | 前提 | 起動コマンド |
|---|---|---|
| npm | 前提Node.js LTS 22.0.0以降 | 起動コマンドnpx -y @microsoft/fabric-mcp@latest server start --mode all |
| .NETツール | 前提.NET 10 SDK以降 | 起動コマンドfabmcp server start --mode all |
| Docker | 前提Linuxコンテナ | 起動コマンドmcr.microsoft.com/fabric/fabric-mcp:latest |
READMEの例はどれも --mode all です。ほかのモード値は、このREADMEの範囲では例が出ていません。
npxで登録する
標準入出力型なので、--transport stdio を指定し、-- のあとにサーバーの起動コマンドを置きます。
claude mcp add fabric-mcp-server --transport stdio -- \
npx -y @microsoft/fabric-mcp@latest server start --mode all-- の前にあるのがClaude Code側のオプションで、後ろは丸ごとサーバーの起動コマンドとして渡されます。--scope を省くと、登録はそのプロジェクトだけで有効なlocalスコープ(~/.claude.json に保存)になります。
.NETツールで登録する
npx を使わない場合は、先にツールをグローバルに入れます。
dotnet tool install --global Microsoft.Fabric.Mcp \
--source https://api.nuget.org/v3/index.json
claude mcp add fabric-mcp-server --transport stdio -- \
fabmcp server start --mode allREADMEは、.NETのグローバルツールのディレクトリがMCPクライアントから見えるPATHに入っている必要があるとしています。fabmcp が見つからないと、サーバーは起動しません。
チームで共有するなら .mcp.json
プロジェクトに置いて共有する場合は --scope project を付けるか、次の内容を .mcp.json に書きます。READMEの例ではルートのキーが mcpServers なので、そのまま使えます。
{
"mcpServers": {
"fabric-mcp-server": {
"command": "npx",
"args": [
"-y",
"@microsoft/fabric-mcp@latest",
"server",
"start",
"--mode",
"all"
]
}
}
}.mcp.json のサーバーは、初回に承認するまで Pending approval の状態で止まります。claude mcp get fabric-mcp-server で接続状態を確かめ、承認待ちならClaude Codeを対話で開いて承認します。
@latest は起動のたびに新しい版を取りに行く指定です。再現性が要るチームでは、READMEが案内するとおり @microsoft/fabric-mcp@<version> の形でバージョンを固定します。
Dockerで登録する場合の注意
Docker版は、ホストの az login を引き継ぎません。サービスプリンシパルの資格情報を環境変数ファイルに書き、--env-file で渡す必要があります。
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
AZURE_TOKEN_CREDENTIALS=EnvironmentCredentialREADMEはこのファイルをリポジトリの外に置き、mcp.json にシークレットを書かないよう求めています。-i で標準入力を開けたままにし、TTYは割り当てません。イメージ名のあとに server start を重ねて書くと二重になるため、渡すのは --mode all だけです。
認証と権限 — サーバーは「あなたの権限」で動く
stdioで起動した場合、サーバーはホストの資格情報プロバイダーを使います。ツールが権限を増やすことはありません。
READMEに載っている、ツールごとの必要権限を表にします。委任(ユーザー代理)で呼ぶ場合は、ワークスペースのロールに加えてAPIのスコープも要ります。
| ツール | 必要なロール | 委任時のスコープ |
|---|---|---|
core_list-capacities / core_get-capacity | 必要なロール容量の管理者か共同作成者 | 委任時のスコープCapacity.Read.All など |
core_get-workspace / core_list-items | 必要なロールワークスペースの閲覧者以上 | 委任時のスコープWorkspace.Read.All など |
core_create-item | 必要なロール共同作成者以上 | 委任時のスコープItem.ReadWrite.All など |
core_update-workspace | 必要なロールワークスペースの管理者 | 委任時のスコープWorkspace.ReadWrite.All |
core_delete-item(完全削除) | 必要なロールワークスペースの管理者 | 委任時のスコープItem.ReadWrite.All など |
core_search-catalog | 必要なロールカタログで見える範囲 | 委任時のスコープCatalog.Read.All |
最後の行には注意点があります。カタログ検索で見つかったことは、アイテムの中身を読める権限を意味しません。READMEも、カタログの探索はコンテンツへのアクセスを与えないと書いています。
サービスプリンシパルやマネージドIDで動かす場合は、Fabricのテナント設定でサービスプリンシパルのAPI利用を許可しておく必要があります。権限不足や機能の無効化では、HTTP 403が返ります。
OneLakeとData Factoryまで触らせる範囲
onelake ツール群は、READMEの表で4つの領域に分かれています。
- データ操作: ワークスペース・アイテムの一覧、ファイルのアップロード、ダウンロード、削除、ディレクトリの作成と削除、テーブルAPI(名前空間とテーブル定義)の参照
- データアクセスロール: 一覧、取得、作成または更新、削除
- ショートカット: OneLake、ADLS Gen2、Amazon S3、Azure Blob、GCS、S3互換、Dataverse、OneDrive/SharePointへの作成と、削除、キャッシュのリセット
- 設定: 診断ログの構成と、不変性ポリシー(保持日数)の変更
datafactory ツール群は7つです。パイプラインとDataflow Gen2の一覧・作成、パイプラインの取得と実行、そしてDataflowに対するM(Power Query)クエリの実行を扱います。
ここで、Claudeに任せる範囲を段階で決めておくと運用が楽になります。
Claudeに渡すツールの範囲を3段階で考える
調べるだけ
docs 全部と、core_list-*、core_get-*、core_search-catalog、onelake_list-*。仕様の確認とインベントリの把握まで。
作る
core_create-item、core_create-workspace、onelake_upload-file、datafactory_create-pipeline。開発用ワークスペースに限って許可する段階。
消す・実行する
core_delete-workspace、core_delete-item、onelake_delete-*、datafactory_run-pipeline。人が毎回確認する段階。
削除系ツールをClaude Code側で止める
READMEのSecurity節は、core_create-workspace、core_update-item、core_delete-workspace、core_assign-workspace-to-capacity の4つについて、引数と権限を確かめてから呼ぶよう求めています。特に core_delete-workspace は、ワークスペースと配下のアイテムをまとめて消します。復元や保持期間についての約束は、READMEにはありません。
core_delete-item の hard-delete を true にすると完全削除になり、元に戻せません。省略すると、ソフトデリートに対応する種別だけがその扱いになり、復旧できる保証もありません。
サーバー側の保護とは別に、Claude Code側の権限設定でも二重に止められます。ツール名は mcp__<サーバー名>__<ツール名> の形です。プロジェクトの .claude/settings.json に、次のように書きます。
{
"permissions": {
"deny": [
"mcp__fabric-mcp-server__core_delete-workspace",
"mcp__fabric-mcp-server__core_delete-item",
"mcp__fabric-mcp-server__onelake_delete-file",
"mcp__fabric-mcp-server__onelake_delete-directory",
"mcp__fabric-mcp-server__onelake_delete-data-access-role"
]
}
}これは例示です。実際の名前は、Claude Code上で /mcp を開いてツールを選ぶと表示される完全名で確認してください。サーバー名を fabric-mcp-server 以外にしたなら、その名前に合わせます。
READMEには、読み取り専用モードで隠れるツールが複数あると書かれています。core_update-workspace や core_delete-workspace がそうです。ただし、そのモードを有効にする起動引数は、このREADMEに記載がありません。起動引数に頼れない以上、deny ルールが現実的な止め方になります。
最初に試すプロンプトと、ページングの癖
接続できたら、まず書き込みの無いプロンプトで動作を確かめます。READMEが例に挙げているのは次のようなものです。
What Fabric item types are available?(使える種別の確認)- 「Search the OneLake catalog for items related to 'sales revenue'」
- 「List my Fabric workspaces where I am an Admin or Member」
- 「Show me best practices for handling API throttling in Fabric」
日本語で指示しても構いませんが、ワークスペースもアイテムも「名前」では指定できません。core_get-workspace や core_list-items など多くのツールは、UUIDだけを受け付けます。名前から探すときは、先に core_search-catalog か core_list-workspaces でIDを引かせます。
一覧は1ページずつしか返らない
core_list-capacities、core_list-items、core_list-workspaces、core_search-catalog は、どれも1回の呼び出しで1ページだけを返します。全件を自動で取りに行くことはありません。続きは、返ってきた continuationToken を一字も変えずに次の呼び出しへ渡します。
- カタログ検索では、トークンと
searchやfilterを同時に指定すると、サーバーがローカルで拒否します(HTTP 400) - ワークスペースの一覧では、2ページ目以降でも同じ
rolesとendpointの指定を繰り返します - 空の配列が返っても、次のページがあることがあります
大規模なテナントで「全部数えて」と頼むと、Claudeが何度も呼び直します。CLAUDE.mdに一文あると安定します。
## Fabric MCP の使い方
- ワークスペースとアイテムは名前でなくUUIDで指定する。IDが無いときは core_search-catalog で探す
- 一覧系は1ページずつ返る。continuationToken は加工せずそのまま次の呼び出しに渡す
- core_create-* / core_update-* は、対象が開発用ワークスペースのときだけ実行する
- delete 系は実行せず、対象のUUIDと理由を報告して止まる作成系は「待たない」のが既定
core_create-item は、既定では1回のPOSTだけを送り、完了済みのメタデータか「受理した」という受領票を返します。sync の既定値は false です。
sync を true にすると、202のあとにサーバーが待ちます。待ち時間の既定は120秒で、上限は600秒です。超える値は丸められず、作成を送る前に拒否されます。
待ちを打ち切っても、Fabric側の処理は止まりません。READMEは、作成要求を自動で再送しないと明記しています。受領票だけが返った場合は、core_get-operation-state で状態を1回ずつ確かめ、Succeeded になってから core_get-operation-result を呼びます。ここで同じアイテムをもう一度作らせないことが大切です。
つまずきやすい点
| 症状・状況 | 原因として考えられること | 確かめ方 |
|---|---|---|
fabmcp が起動しない | 原因として考えられること.NETのツールディレクトリがPATHに無い | 確かめ方MCPクライアントから見えるPATHを確認する |
npx で起動に失敗する | 原因として考えられることNode.jsが22.0.0未満 | 確かめ方node --version |
| Dockerだと認証に失敗する | 原因として考えられることホストの az login を引き継がない | 確かめ方環境変数ファイルの資格情報を確認する |
| 403が返る | 原因として考えられること権限不足か、テナント・容量の設定 | 確かめ方ワークスペースのロールと容量の設定を見る |
| 429が返る | 原因として考えられることスロットリング | 確かめ方返された Retry-After を待つ(自動再試行なし) |
| 3xxで失敗する | 原因として考えられることCoreのクライアントはリダイレクトを追わない | 確かめ方仕様どおりで、失敗として返る |
VS Code拡張でFabric MCPを使っていた場合、設定の fabricMcp.enabledServices に publicapis が残っていると、古い値が残ったままになります。READMEは docs に置き換えるか、リストを空にするよう案内しています。保存済みの設定は自動では移行されません。
Power BI MCPやAzure MCPとの使い分け
Fabricを触るMCPサーバーは1つではありません。目的で選ぶと混乱しません。
- セマンティックモデルのメジャーやDAXを書き換えたい: Power BI MCPサーバーのガイド
- Azureのリソース(サブスクリプション側)を操作したい: Azure MCPサーバーの導入手順
- Fabric自体のワークスペース、OneLake、パイプラインを扱いたい: この記事のFabric MCPサーバー
READMEによれば、core_list-capacities は「Fabricの容量」を返すもので、Azureのサブスクリプション一覧ではなく、subscription の引数もありません。容量のSKUやリージョンを知りたいときの呼び先はこちらです。
サーバーを増やす前に、どの種類があるかを見渡したい場合は、おすすめMCPサーバー10選が出発点になります。Google Cloud側の同種の例は、gcloud MCPサーバーの追加手順にあります。
データ収集について
READMEは、このソフトウェアが利用状況の情報を収集してMicrosoftに送る場合があると述べています。停止の方法は、リポジトリ内の別の文書で説明されているとのことです。社内ポリシーで外部送信が問題になる環境では、導入前にそこを読んでおきます。
まとめ
Fabric MCPサーバーの登録自体は、claude mcp add の1行で終わります。むしろ時間をかけるべきは、どのツール群まで渡すかの線引きです。
最初は、書き込みの無い docs と list/get 系だけで使い始めるのが無難です。ワークスペース削除と完全削除に当たるツールは、deny ルールで止めておくと、プロンプトの書き方に頼らずに済みます。