Claude Media
ClaudeとContentfulを連携する方法 — エントリ・コンテンツタイプ・環境の操作範囲

ClaudeとContentfulを連携する方法 — エントリ・コンテンツタイプ・環境の操作範囲

Contentful MCPコネクタでClaudeが触れるエントリ・コンテンツタイプ・環境の範囲と、接続手順、権限を3層で絞る方法をまとめます。

ClaudeとContentfulの連携とは — 何が操作できるか

Contentful MCPコネクタは、ヘッドレスCMSのContentfulに保存したコンテンツをClaudeの会話から読み書きできるようにするConnectorです。開発元はContentful Inc.で、Connectorsディレクトリではクリエイティブ・開発者ツール・生産性・営業とマーケティングの4カテゴリに載っています。Anthropic verifiedの表示があり、追加時期は2026年7月、サインインが必須です。接続先は https://mcp.contentful.com/mcp です。

操作できる対象は、エントリ(コンテンツ本体)だけではありません。Contentfulの公式ドキュメントは、コンテンツモデルの管理、アセット、AI Actionsの呼び出しまで含めて、同じ仕組みで扱えると説明しています。読むだけのコネクタではなく、モデル定義や環境そのものを変えられるコネクタです。

  • エントリ: 検索・取得・作成・更新・公開・アーカイブ・削除
  • コンテンツタイプ: 一覧・取得・作成・更新・公開・削除、フィールド単位の無効化
  • 環境: 一覧・作成・削除
  • アセット、リリース、ロケール、タグ、タクソノミー、AI Actions

このため、記事の下書きを整える程度の使い方と、コンテンツモデルを組み替える使い方では、必要な権限がまるで違います。どこまで許すかを先に決めておくのが、連携の出発点です。

何ができるか — ツールを領域別に見る

Contentfulの公式ドキュメントは、ツールを12の領域に分けて載せています。ディレクトリの掲載ページには「70 tools」と表示されており、ここでは公式ドキュメントの領域表から、読み取り系と書き込み・削除系に分けて抜粋します。

領域読み取り系の例書き込み・破壊系の例
エントリ読み取り系の例search_entries get_entry semantic_search書き込み・破壊系の例create_entry publish_entry archive_entry delete_entry
コンテンツタイプ読み取り系の例list_content_types get_content_type書き込み・破壊系の例create_content_type delete_content_type delete_content_type_field
環境読み取り系の例list_environments get_space書き込み・破壊系の例create_environment delete_environment
アセット読み取り系の例list_assets get_asset書き込み・破壊系の例upload_asset archive_asset delete_asset
AI Actions読み取り系の例get_ai_action list_ai_actions書き込み・破壊系の例create_ai_action invoke_ai_action delete_ai_action

エントリの領域には、履歴を見る get_entry_snapshot と、参照先をたどる resolve_entry_references もあります。リリースの領域には、複数のエントリとアセットをまとめて公開できる publish_release や、公開を予約する schedule_publish_release が含まれます。

注意したいのは、公開系のツールです。publish_entry は、下書きを公開状態にするためのツールです。書き込みを許可するときは、公開まで許すかどうかを別に判断できます。

接続の手順 — 3つの入口

Claudeのアプリから接続する

ClaudeのウェブアプリとClaude Desktopでは、ディレクトリのContentful MCPを選んで接続します。手順の骨格はほかのコネクタと同じで、Connectorsの追加方法にまとめています。Team・Enterpriseプランでは、先にOwnerまたはPrimary Ownerが組織単位でコネクタを有効にする必要があります。有効にしても利用者に権限が付くわけではなく、各自がContentfulで認証します。

Contentful側の前提が一つあります。Contentful MCPアプリを、使いたい環境にインストールしておくことです。アプリ単体では何も動かず、リモートサーバーも、アプリが入っていない環境では使えません。管理者がテナント設定の画面を完了すると、アプリは自動で入ります。

Claude Codeから接続する

Claude Codeでは、リモートサーバーをHTTPトランスポートで登録します。

claude mcp add --transport http \
  contentful https://mcp.contentful.com/mcp

登録後にClaude Code内で /mcp を開くと、ブラウザが立ち上がります。Contentfulにサインインし、Claudeに触らせるスペースと環境を選び、OAuthを完了する流れです。EU地域の組織は、エンドポイントを https://mcp.eu.contentful.com/mcp に置き換えます。リージョンは接続先のURLで決まり、セッション中に切り替える機能はありません。

ローカルサーバーで動かす

もう一つの選択肢が、オープンソースのローカルサーバーです。npx -y @contentful/mcp-server で起動し、接続先を4つの環境変数で渡します。OAuthは使わず、すべての呼び出しがトークン所有者の権限で走ります。

環境変数役割
CONTENTFUL_MANAGEMENT_ACCESS_TOKEN役割Contentful Management APIの個人アクセストークン
SPACE_ID役割操作するスペースのID
ENVIRONMENT_ID役割操作する環境のID(公式の例は master)
CONTENTFUL_HOST役割Management APIのホスト(グローバルは api.contentful.com、EUのAPIは api.eu.contentful.com)

Claude Codeには、.mcp.json に次の形で登録できます。値はプレースホルダーです。

{
  "mcpServers": {
    "contentful-local": {
      "command": "npx",
      "args": ["-y", "@contentful/mcp-server"],
      "env": {
        "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<YOUR_CMA_PAT>",
        "SPACE_ID": "<YOUR_SPACE_ID>",
        "ENVIRONMENT_ID": "master",
        "CONTENTFUL_HOST": "api.contentful.com"
      }
    }
  }
}

リモートとの違いを表にまとめます。

観点リモートローカル
認証リモートOAuth 2.1、利用者ごとのIDローカル個人アクセストークン
権限の絞り込みリモート利用者の権限に加え、環境ごとの許可リストローカルトークンの権限のみ
向く場面リモート日常利用、管理者がツールを絞りたい組織ローカルローカル開発、CI、OAuthが使えない環境

ローカルにはMCPアプリによる許可リストがありません。絞り込みはトークンの権限で行うことになり、公式も最小権限のトークンを勧めています。

権限は3層で絞る

Contentful連携の安全性は、三つの層の重なりで決まります。上の層ほど、Claudeの側から手が出せません。

層誰が設定するか何を制御するか
Contentfulの利用者権限誰が設定するかContentfulの管理者何を制御するか接続した本人が元々できること
Contentful MCPアプリ誰が設定するかスペースの管理者何を制御するか環境ごとに、ツールの領域を読み取り専用か読み書きかで許可
Claudeのツール権限誰が設定するか組織のOwnerと利用者本人何を制御するかツールごとに、常に許可・承認を求める・ブロック

Contentful MCPアプリの許可リスト

アプリの設定画面では、環境ごとに領域(エントリ、アセット、コンテンツタイプ、環境、AI Actionsなど)を選び、それぞれを読み取り専用か読み書きかに設定します。許可されていないツールは、クライアントが直接呼んでも拒否されます。同じ環境に接続する全員が同じ許可リストを共有しつつ、各自のContentful権限は別に効きます。

マーケティング担当の監査には読み取り専用、エージェント型のパイプラインを組む開発者には書き込み付き、という切り分けが、ディレクトリの掲載ページでも例として挙がっています。

Claude側のツール権限

ClaudeのTeam・Enterpriseプランでは、Ownerがコネクタのツールを読み取り系と書き込み・削除系に分類して確認し、それぞれを「Always allow」「Needs approval」「Blocked」に設定できます。設定は組織全体に効き、個人は上書きできません。Claudeで書き込みを許しても、Contentful側で本人に権限がなければ変更は通りません。この設定は権限を足すのでなく、絞るためのものです。

Claude Codeでは、組織が ask にしたツールは呼び出しのたびに承認を求められ、blocked のツールはそもそもClaudeに見えなくなります。個人の設定側では、拒否ルールと確認ルールをツール名のパターンで書けます。claude mcp add で登録した名前が contentful なら、ツール名は mcp__contentful__ に続く形になります。

{
  "permissions": {
    "deny": [
      "mcp__contentful__delete_*"
    ],
    "ask": [
      "mcp__contentful__publish_*",
      "mcp__contentful__create_environment",
      "mcp__contentful__create_content_type"
    ]
  }
}

これは設定の一例です。削除系をまとめて拒否し、公開・環境作成・モデル作成は毎回確認に回す構成にしています。ディレクトリ経由で取得したコネクタは、名前が mcp__claude_ai_<サーバー名>__<ツール名> の形になるので、規則の書き出しもこの形に合わせます。ルールの照合は、実際に /mcp で見えるツール名で確かめるのが確実です。

安全な使い方の順番

公式の注意書きは、リモートサーバーでは可能なら人間の確認を有効にし、MCPアプリでは読み取り専用から始めて、その後で書き込みを開けるよう勧めています。この順番をそのまま運用の手順にできます。

  1. 最初の環境は読み取り専用で許可し、search_entries などでClaudeに現状を読ませる
  2. 下書き作成が必要になったら、エントリの領域だけ読み書きに広げる
  3. コンテンツタイプと環境の領域は、モデルを変える作業の間だけ書き込みにし、終わったら戻す
  4. 接続時に選ぶ環境は、本番にあたるものだけを最初から入れない

環境は接続のたびに選び直します。すでにアプリが入っている環境でも、新しい接続ごとに設定画面で対象を選ぶ必要があり、選び直してもアプリが再設定されることはありません。作業用の環境だけを選んだセッションなら、Claudeの手が届く範囲もそこまでです。

コンテンツモデルの変更は、エントリの編集と性質が違います。フィールドの削除や環境の削除は、エントリの編集より影響が広い操作です。Claudeに任せるなら、変更前に get_content_type の結果を保存させ、変更後に同じツールで差分を読ませる手順を挟めます。

よくあるつまずき

  • ツールが「not allowed」で拒否される: 領域がMCPアプリの許可リストに入っていません。アプリの設定を直し、接続をやり直します
  • Failed to fetch app installation: Forbidden: 環境エイリアスを指定している可能性があります。エイリアスは未対応なので、実体の環境IDで接続します
  • 認証が通らない・ブラウザが開かない: クライアントに古いトークンが残っていることがあります。サーバー登録を一度削除して、OAuthを最初からやり直します
  • EU組織で呼び出しが失敗する: 全クライアントの設定を mcp.eu.contentful.com に揃えます
  • セッションに対象がない: 接続のたびにスペースと環境の選択が要ります。飛ばすと、操作対象が空のままになります
  • ClaudeのAPIキーやゲートウェイ経由で使っている: ディレクトリのコネクタは、Claude Codeがclaude.aiのサブスクリプションログインで取得する仕組みです。APIキー認証などが有効だと読み込まれないので、その場合は claude mcp add で直接登録します

画像・ファイルの取り込みは2段階

アセットのアップロードは、通常のツール呼び出しだけでは完結しません。ツール呼び出しはJSONなので、バイナリを直接は送れないためです。create_upload_session で短命のセッションを作り、返ってきたURLにファイルをPUTし、upload_asset でハンドルを渡してアセットを作ります。セッションは作成から1時間で失効し、一度しか使えません。返されたURLは認証なしで受け付けるため、ハンドルは秘密として扱う必要があります。ChatGPTから接続する場合だけは、会話に添付したファイルを渡して upload_asset を直接呼べます。

環境ごとの制限はContentful側、組織の共通ルールはClaude側に置く

Contentful連携は、他のコネクタと比べて「何を触れるか」の幅が広い部類です。たとえばMixpanelも書き込みができるコネクタですが、扱うのは分析側のメタデータでした。Contentfulでは、コンテンツそのものに加えて、コンテンツタイプという設計図や環境まで対象に入ります。

だからこそ、最初から読み書きを全開にする使い方は勧めにくく、許可リストで絞る設計が本体になります。管理者にとって効くのは、Contentful側のMCPアプリで環境単位に絞れる点です。Claude側のツール権限は、コネクタ単位で組織全体に効く設定です。この二つは役割が違うので、環境ごとの絞り込みはContentful側、組織の共通ルールはClaude側と分担できます。

設定を変えた記録をどこまで追えるかは、コネクタ権限と監査ログで扱っています。ほかのコネクタで起きた権限まわりの失敗例は権限設定のよくある失敗にあります。

まとめ

Contentful MCPコネクタは、エントリの編集からコンテンツタイプの作成、環境の作成・削除、AI Actionsまで、CMSの管理操作を会話に載せるものです。接続はClaudeのアプリでもClaude Codeでもできますが、環境ごとの許可を握るのはContentful MCPアプリです。まず読み取り専用で始め、書き込みは領域と期間を限って開ける。この順番なら、コンテンツを増やす作業と、モデルを変える作業を混ぜずに運用できます。

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