Claude Media
Microsoft Fabric MCPをClaude Codeに追加する手順と権限の線引き

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 all

READMEは、.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=EnvironmentCredential

READMEはこのファイルをリポジトリの外に置き、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つではありません。目的で選ぶと混乱しません。

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 ルールで止めておくと、プロンプトの書き方に頼らずに済みます。

この記事を共有:XはてブLinkedIn