ClaudeにDataverse MCPをつなぐ — 削除系ツールを止める設定
Power PlatformのDataverseをClaude DesktopとClaude Codeから読み書きする手順です。管理者側の許可、15個のツール、delete系を止める権限設定をまとめます。
Microsoft Dataverse(Power Appsの業務データを持つデータ基盤)は、MCPサーバーとして外部のAIクライアントに公開できます。Claude DesktopとClaude Codeは、その接続先として手順が用意されています。つなげば、テーブルの確認、レコードの検索、追加、更新を会話から実行できます。
先に押さえたいのは、接続の前にPower Platform管理センターでの許可が要ることと、ツールにテーブルやレコードを消すものが含まれることです。この記事では、管理者側の準備、Claudeへの登録、15個のツールの使い分け、削除系を止める設定の順に説明します。
接続の全体像とつなぐ前の準備
DataverseのMCPサーバーは、環境ごとに次の形式のリモートURLを持ちます。
https://{組織名}.crm.dynamics.com/api/mcpClaudeから使う方法は2通りです。ローカルプロキシ(@microsoft/dataverseというnpmパッケージ)を経由する方法と、Microsoft Entraにカスタムアプリを登録してリモートURLへ直接つなぐ方法があります。Microsoftのページは、ローカルプロキシをローカルMCPサーバーを動かせる大半のクライアント向けの方法として案内しています。
ローカルプロキシとリモート直結の違い
ローカルプロキシ
Node.js 18以降が必要です。@microsoft/dataverseが認証と通信を代行します。テナント管理者の同意が1回要ります。
リモートエンドポイント直結
Microsoft Entra IDでアプリ登録できる権限が必要です。API権限にmcp.toolsを付け、クライアントIDを許可リストへ追加します。
どちらを選んでも、環境側でMCPを許可する作業は避けられません。既定で有効なのはMicrosoft Copilot Studioのクライアントだけで、Claudeなどの非Microsoftクライアントは管理者が個別に有効化します。
管理者が行う許可設定
作業にはPower Platform管理者のロールが要ります。手順は次のとおりです。
環境でDataverse MCPを許可する
- 1
環境の設定を開く
Power Platform管理センターで「管理 > 環境」から対象の環境を選び、「設定」を開きます。
- 2
MCPの全体スイッチを確認する
「製品 > 機能」にある「Dataverse Model Context Protocol」で、MCPクライアントの接続を許可する設定がオンになっていることを確かめます。
- 3
クライアントを有効化する
「詳細設定」を開き、使うクライアントの「Is Enabled」を「Yes」にして保存します。ローカルプロキシなら、アプリID
0c412cc3-0dd6-449b-987f-05b053db9457のDataverse CLIクライアントが対象です。
一覧にDataverse CLIが出ないときは、任意の名前でクライアントを新規に作り、同じアプリIDを指定して有効化できます。
ローカルプロキシを使う場合は、テナント管理者の同意も1回必要です。管理者が次のURLをブラウザーで開き、テナントIDを置き換えて承認します。
https://login.microsoftonline.com/{テナントID}/adminconsent?client_id=0c412cc3-0dd6-449b-987f-05b053db9457この許可は、/api/mcpのエージェント向け入口にだけかかります。名前にMCPが付いたカスタムAPIは通常のDataverse APIなので、この設定では制限されません。
ClaudeにDataverse MCPを登録する
Claude Codeに追加する
Claude Codeでは、claude mcp addでローカルプロキシを標準入出力(stdio)のサーバーとして登録します。組織のURLを自分の環境のものに置き換えてください。
claude mcp add dataverse -t stdio -- \
npx -y @microsoft/dataverse mcp https://yourorg.crm.dynamics.com登録後にClaude Codeを再起動すると、Dataverse環境へのサインインを求められます。ツール一覧にサーバー名が出れば接続できています。動作確認には、テーブル一覧を見せる、accountテーブルを説明する、accountが何件あるかを聞く、といった短い質問が向いています。ほかのMCPサーバーも入れている場合は、プロンプトに「Dataverseで」と入れると、どのサーバーを使うかが伝わります。
サーバー名はdataverseにしました。この名前は、後で権限ルールを書くときにそのまま使います。名前を変えたら、ルール側も合わせてください。
Claude Desktopに追加する
Claude Desktopでは「File > Settings > Developer」から「Edit Config」を選び、claude_desktop_config.jsonに次を足します。
{
"mcpServers": {
"dataverse": {
"command": "npx",
"args": ["-y", "@microsoft/dataverse", "mcp", "https://yourorg.crm.dynamics.com"]
}
}
}保存したらClaude Desktopを一度終了して開き直します。サインイン後、「Search and tools」にサーバー名が表示されます。サーバー名を選ぶとツール一覧が開き、ツールごとにオンとオフを切り替えられます。設定ファイルの置き場所や書き方の基本はClaude Desktop MCP設定ガイドにまとめています。
Entraアプリを自前で登録するリモート直結の場合は、クライアントごとの認証方式に従います。クライアントIDを管理センターの許可リストに入れ、接続先をhttps://<組織のURL>/api/mcpにします。
15個のツールで何ができるか
Dataverse MCPサーバーのツールは、現在15個あります。役割ごとに分けると次のようになります。
| 役割 | ツール | 内容 |
|---|---|---|
| 探す・調べる | ツールsearch_data | 内容構造化データと非構造化データの検索 |
ツールsearch | 内容テーブルスキーマとビジネススキルをキーワードで検索 | |
ツールdescribe | 内容検索結果のテーブル、レコード、スキーマ、スキル、アプリの詳細 | |
ツールread_query | 内容Dataverse SQLのSELECTを実行 | |
| レコードを書く | ツールcreate_record | 内容行を追加してGUIDを返す |
ツールupdate_record | 内容既存の行を更新 | |
ツールdelete_record | 内容行を削除(ユーザーの明示的な承認後のみ) | |
| テーブルを変える | ツールcreate_table | 内容指定したスキーマでテーブルを作成 |
ツールupdate_table | 内容既存テーブルのスキーマやメタデータを変更 | |
ツールdelete_table | 内容テーブルを削除(ユーザーの明示的な承認後のみ) | |
| スキル | ツールupsert_skill | 内容Dataverseのスキル(プレイブック)を追加・更新 |
ツールdelete_skill | 内容名前を指定してスキルを削除 | |
| ファイル | ツールinit_file_upload | 内容アップロード用のSAS URLを生成 |
ツールcommit_file_upload | 内容アップロードを確定 | |
ツールfile_download | 内容ダウンロード用のSAS URLを生成 |
search_dataはDataverse searchが環境で有効なときだけ一覧に出ます。見当たらないときは、ツール側の不具合ではなく環境の設定を疑ってください。
注意したいのは、read_queryがSQLのSELECT専用で、使える条件に制限があることです。ツールの説明に、対応するキーワードと非対応のキーワードが書かれています。Microsoftのサンプル指示も、SQLを組み立てる前にその説明を確認するよう促しています。
旧ツール名を使った設定は効かなくなる
ツール構成は変更されています。describe_table、list_tables、fetchは削除され、describeに置き換わりました。以前のsearchはデータ検索がsearch_dataへ改名され、いまのsearchはメタデータの検索を担当します。
クライアント側でツール名による許可リストや拒否リストを持っている場合は、見直しが必要です。古い名前のまま残した拒否ルールは、何も止めません。この記事の設定例が現行のツール名で書いてあるのは、そのためです。
削除系ツールをClaude側でも止める
ここからが運用上の要点です。delete_recordとdelete_tableは、ツールの説明で「ユーザーの明示的な承認後のみ」とされています。ただ、この承認をどこで取るかは、使う側の設定に左右されます。
実際、管理者向けページのサンプルエージェント指示には、次のような方針が含まれています。
- ユーザーに確認せず、各手順を自律的に実行する
- テーブルの削除とレコードの削除でも、確認を求めない
つまり、サンプル指示をそのままコピーしたエージェントは、削除ツールの「承認後のみ」という建前を、指示文の側で外してしまいます。サンプルは、Copilot StudioやVisual Studio Codeのエージェント向けとして載っているものです。Claudeに同じ文面を貼る必要はありません。貼るなら、確認を省く方針の部分は外しておくのが無難です。
権限ルールで削除を拒否する
Claude Codeでは、MCPツールを権限ルールで名指しできます。形式はmcp__<サーバー名>__<ツール名>です。拒否ルール(deny)に入れたツールは、Claudeのコンテキストから外れ、呼び出されません。
{
"permissions": {
"deny": [
"mcp__dataverse__delete_record",
"mcp__dataverse__delete_table",
"mcp__dataverse__delete_skill"
]
}
}これを.claude/settings.jsonに置けば、プロジェクトのメンバー全員に同じ制限をかけられます。書き込み系も毎回確認したい場合は、askにmcp__dataverse__create_record、mcp__dataverse__update_record、mcp__dataverse__update_tableを入れる構成が考えられます。ルールの全体像はClaude Codeの/permissionsコマンドで権限ルールとauto mode拒否を管理するで扱っています。
ルールの書き方で、2点だけ注意してください。
mcp__で始まるルールに括弧を付けると、設定ファイルの読み込み時に無視されます。ツールの引数で絞るルールは、MCPツールには書けません- サーバー名の部分は、
claude mcp addで付けた名前と一致させます。my.serverのようにドットや空白を含む名前は、ルール側では_に置き換わります
Claude Desktopには権限ルールの仕組みがありません。代わりに、先ほどのツール一覧画面でツールをオフにします。削除系の3つと、使わないupsert_skillをオフにしておけば、Claudeの側からは呼べなくなります。
Dataverse側の制御が最後の砦になる
Claudeの設定は、ユーザー自身が変えられます。本当に守りたいデータは、Dataverse側で守る必要があります。FAQには、Dataverse MCPサーバーはセキュリティロールと行レベルのセキュリティに従う、と書かれています。ユーザーが触れるのは、そのロールが許すテーブルとレコードだけです。MCP専用のアクセス制御を別に足す必要はない、というのがMicrosoftの説明です。
そのため、Claudeにつなぐアカウントには、本番の管理者ロールを割り当てない構成が安全です。削除権限を持たない専用のロールを用意すれば、denyルールを回避されても、Dataverseが削除を拒否します。
料金とライセンスの注意
2025年12月15日から、Copilot Studioの外で作られたAIエージェントがDataverse MCPのツールにアクセスすると、課金対象になりました。Claudeから使う場合もこの「外」にあたるため、課金の条件を事前に確認しておく必要があります。
- Dynamics 365 Premiumのライセンス(Sales Premiumなど)か、Microsoft 365 Copilotのユーザーサブスクリプションライセンスを持つ場合、Dynamics 365のデータへのアクセスは課金されません
search_dataは、テナントのグラウンディングと同じCopilotクレジットの料率で課金されますsearchを含む残りのツールは、テキスト・生成AIツール(基本)の10応答あたりの料率です
クレジットの単価は別ページに載っています。会話の中でread_queryを何十回も走らせる使い方をするなら、検証用の環境で課金額の出方を先に確かめておくと安心です。
つまずいたときの切り分け
認証が通らないときは、次の順に見ます。
サインインできないときの切り分け
- Q設定に書いた環境のURLは、Power Appsの「セッションの詳細」に出るインスタンスURLと同じか?答えがいいえのとき答えがはい
Power Appsで正しい環境を選び、歯車アイコンの「設定 > セッションの詳細」でURLを確認して、設定を直します。
- Q使っているクライアントは、管理センターで有効になっているか?答えがいいえのとき答えがはい
ローカルプロキシならDataverse CLI(アプリID
0c412cc3-0dd6-449b-987f-05b053db9457)の「Is Enabled」を「Yes」にします。 - Qテナント管理者の同意は済んでいるか?答えがいいえのとき
前述の管理者同意URLを、テナント管理者に開いてもらいます。
プロキシに
--log-level Debug --log-fileを付けて起動し、ログを残します。ログはOSの一時ディレクトリに書かれます。
ログを取る場合のコマンドは次のとおりです。
npx @microsoft/dataverse mcp https://yourorg.crm.dynamics.com \
--log-level Debug --log-fileツールがエラーを返したときは、プロンプトをより具体的に言い直して再実行するのが、Microsoftの案内する最初の対処です。それでも直らなければ、操作に必要なDataverseの権限が自分のロールにあるかを確かめます。
よくある質問
複数の環境に同時につなげるか
つなげます。環境ごとにMCPサーバーの設定は独立しているので、クライアントに環境ごとのエントリーを作り、それぞれ別のURLを指定します。Claude Codeならdataverse-devとdataverse-prodのように名前を分けると、権限ルールも環境別に書き分けられます。
開発中のツールを試せるか
プレビュー用のエンドポイント/api/mcp_previewがあります。ローカルプロキシでは--previewを付けて接続します。一般提供の/api/mcpとはツールの構成が異なり、プレビューのツールは予告なく変更や削除が入ります。使うには管理者がプレビュー機能の設定を有効にする必要があります。本番のデータがある環境では、避けたほうが無難です。
まとめ
接続そのものは、claude mcp add1行か設定ファイルへの数行で済みます。時間がかかるのは、管理者の許可と、どのツールをClaudeに触らせるかの線引きのほうです。参照系は広く開け、削除系はdenyで閉じ、権限の最終判断はDataverseのセキュリティロールに任せる。この3層で組むと、会話からの操作と業務データの安全を両立しやすくなります。
同じPower Platformでも、ソリューションの編集は別の道具になります。コマンドラインからの編集はClaude CodeでPower Platformのソリューションを編集する手順で扱っています。データ分析側のMCPならPower BI MCPサーバーをClaudeにつなぐが近い手順です。