mcpField
C
Contentful MCP Server

Contentful MCP Server

ローカル
github.com/ivo-tobyビジネス・マーケティング6241 週間前に更新

Contentful MCP Server について

Contentful MCP Server は、Contentful Content Management API に接続するコミュニティ開発の MCP サーバーです。エントリ、アセット、コメント、スペース、環境、コンテンツタイプを管理できます。一覧操作は1リクエストあたり最大3件を返し、コンテキストの肥大化を抑えます。

主な機能

  1. 01エントリとアセットの完全な作成・取得・更新・削除
  2. 02スレッド形式のプレーンテキストとリッチテキストのコメント
  3. 03一括公開、非公開化、検証
  4. 043件ずつ返すページング付きの一覧取得
  5. 05stdio と StreamableHTTP の2種類のトランスポート
  6. 06環境変数によるスペースと環境の範囲指定

活用シーン

  1. 01エントリの一括移行や更新
  2. 02AI アシスタントからのコンテンツコメントの確認と返信
  3. 03エージェントの操作対象を特定のスペースと環境に限定

MCP 対応

MCP サーバーとして動作し、エントリ、アセット、コメント、コンテンツタイプなどの Contentful 管理ツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Contentful MCP サーバー

Contentful MCP サーバー

お知らせ

これはコミュニティ主導のサーバーです!Contentful は公式サーバーを公開しています。こちらからご覧いただけます:こちら

smithery badge

Contentful の Content Management API と連携し、包括的なコンテンツ管理機能を提供する MCP サーバーの実装です。

  • ご注意ください。コードに関心がなく、Claude Desktop(または MCP サーバーを利用できる他のツール)でこの MCP を使いたいだけの場合は、このリポジトリをクローンする必要はありません。Claude Desktop で設定するだけで利用できます。インストール方法については、「Claude Desktop での使用」のセクションをご覧ください。

contentful-mcp MCP サーバー

機能

  • コンテンツ管理:エントリーとアセットに対する完全な CRUD 操作
  • コメント管理:エントリーへのコメントの作成、取得、管理に対応しており、プレーンテキスト形式とリッチテキスト形式の両方、およびスレッド形式の会話をサポート
  • スペース管理:スペースと環境の作成、更新、管理
  • コンテンツタイプ:コンテンツタイプの定義を管理
  • ローカライズ:複数のロケールをサポート
  • 公開:コンテンツの公開ワークフローを制御
  • 一括操作:複数のエントリーとアセットに対する一括公開、公開解除、検証を実行
  • スマートページネーション:コンテキストウィンドウのオーバーフローを防ぐため、一覧取得操作ではリクエストごとに最大 3 件を返し、組み込みのページネーションをサポート

ページネーション

LLM のコンテキストウィンドウのオーバーフローを防ぐため、一覧取得操作(search_entries や list_assets など)では、リクエストごとに最大 3 件に制限されています。各レスポンスには以下が含まれます。

  • 利用可能なアイテムの総数
  • 現在のページのアイテム(最大 3 件)
  • 残りのアイテム数
  • 次のページの skip 値
  • さらにアイテムを取得するよう LLM に促すメッセージ

このページネーションシステムにより、LLM はコンテキストウィンドウの制限を守りながら、大規模なデータセットを効率的に処理できます。

一括操作

一括操作機能を使用すると、複数のコンテンツアイテムを同時に効率よく管理できます。

  • 非同期処理:操作は非同期で実行され、ステータスの更新が提供されます
  • 効率的なコンテンツ管理:1 回の API 呼び出しで複数のエントリーまたはアセットを処理
  • ステータス追跡:成功数と失敗数を確認して進捗を監視
  • リソースの最適化:API 呼び出しを減らし、バッチ操作のパフォーマンスを向上

これらの一括操作ツールは、コンテンツの移行、一括更新、バッチ公開のワークフローに最適です。

ツール

エントリー管理
  • search_entries:クエリパラメーターを使用してエントリーを検索
  • create_entry:新しいエントリーを作成
  • get_entry:既存のエントリーを取得
  • update_entry:エントリーのフィールドを更新
  • delete_entry:エントリーを削除
  • publish_entry:エントリーを公開
  • unpublish_entry:エントリーの公開を解除
コメント管理
  • get_comments:ステータス(active、resolved、all)で絞り込んで、エントリーのコメントを取得
  • create_comment:プレーンテキスト形式とリッチテキスト形式の両方に対応した、新しいエントリーコメントを作成します。既存のコメントへの返信として親コメント ID を指定することで、スレッド形式の会話をサポートします
  • get_single_comment:ID を指定して、エントリーの特定のコメントを取得
  • delete_comment:エントリーから特定のコメントを削除
  • update_comment:本文の内容やステータスの変更によって、既存のコメントを更新
スレッド形式のコメント

コメントはスレッド機能に対応しており、会話を整理し、512 文字の制限を回避できます。

  • コメントへの返信:create_comment の parent パラメーターを使って、既存のコメントに返信します
  • スレッド形式の会話:特定のコメントに返信して、会話ツリーを構築します
  • 長い議論:スレッド形式の返信を作成してメッセージを続けることで、512 文字の制限を回避します
  • 会話のコンテキスト:関連するコメントをスレッドにまとめ、議論のコンテキストを維持します

使用例:

  1. メインのコメントを作成します:entryId、body、status を指定して create_comment を実行します
  2. そのコメントに返信します:entryId、body、status、parent(返信先コメントの ID)を指定して create_comment を実行します
  3. スレッドを続けます:スレッド内の任意のコメントの ID を parent に指定して返信します
一括操作
  • bulk_publish:複数のエントリーとアセットを一度の操作で公開します。エンティティ(エントリーとアセット)の配列を受け取り、一括処理で公開します。
  • bulk_unpublish:複数のエントリーとアセットを一度の操作で非公開にします。bulk_publish と同様ですが、コンテンツを配信 API から削除します。
  • bulk_validate:コンテンツの整合性、参照、必須フィールドについて、複数のエントリーを検証します。コンテンツを変更せずに検証結果を返します。
アセット管理
  • list_assets:ページネーションを使ってアセットを一覧表示します(1 ページあたり 3 件)
  • upload_asset:メタデータを指定して新しいアセットをアップロードします
  • get_asset:アセットの詳細と情報を取得します
  • update_asset:アセットのメタデータとファイルを更新します
  • delete_asset:スペースからアセットを削除します
  • publish_asset:アセットを配信 API に公開します
  • unpublish_asset:アセットを配信 API から非公開にします
スペースと環境の管理
  • list_spaces:利用可能なスペースを一覧表示します
  • get_space:スペースの詳細を取得します
  • list_environments:スペース内の環境を一覧表示します
  • create_environment:新しい環境を作成します
  • delete_environment:環境を削除します
コンテンツタイプ管理
  • list_content_types:利用可能なコンテンツタイプを一覧表示します
  • get_content_type:コンテンツタイプの詳細を取得します
  • create_content_type:新しいコンテンツタイプを作成します
  • update_content_type:コンテンツタイプを更新します
  • delete_content_type:コンテンツタイプを削除します
  • publish_content_type:コンテンツタイプを公開します

開発ツール

MCP Inspector

このプロジェクトには、開発とデバッグに役立つ MCP Inspector ツールが含まれています。

  • インスペクトモード:npm run inspect を実行してインスペクターを起動します。http://localhost:5173 にアクセスするとインスペクターを開けます
  • ウォッチモード:npm run inspect:watch を使うと、ファイルが変更されたときにインスペクターが自動的に再起動します
  • ビジュアルインターフェース:インスペクターには、MCP ツールをテストおよびデバッグするためのウェブインターフェースが用意されています
  • リアルタイムテスト:ツールを試し、応答をすぐに確認できます
  • 一括操作のテスト:一括操作をテストおよび監視し、進捗と結果を視覚的に確認できます

このプロジェクトには、変更のたびに MCP サーバーを再ビルドして再読み込みする npm run dev コマンドもあります。

設定

前提条件
  1. Contentful で Contentful アカウントを作成します
  2. アカウント設定から Content Management API トークンを生成します
環境変数

これらの変数は引数としても設定できます

  • CONTENTFUL_HOST / --host:Contentful Management API エンドポイント(デフォルト:https://api.contentful.com)
  • CONTENTFUL_MANAGEMENT_ACCESS_TOKEN / --management-token:Content Management API トークン
  • ENABLE_HTTP_SERVER / --http:HTTP/SSE モードを有効にするには "true" に設定します
  • HTTP_PORT / --port:HTTP サーバーのポート(デフォルト:3000)
  • HTTP_HOST / --http-host:HTTP サーバーのホスト(デフォルト:localhost)
  • DISABLE_AI_ACTIONS:起動時の AI Actions の取得を無効にするには "true" に設定します(この機能にアクセスできない場合に便利です)
スペースと環境のスコープ設定

spaceId と EnvironmentId のスコープを設定して、LLM が指定したスペース/環境 ID でのみ操作を実行するようにできます。 これは主に、特定のスペース内で動作するエージェントをサポートするためのものです。SPACE_ID と ENVIRONMENT_ID の環境変数が両方設定されている場合、 ツールはこれらの値が必要であることを通知せず、ハンドラーは環境変数を使用して CMA 操作を実行します。 また、スペースをまたいで利用するツールであるため、space-handler のツールにはアクセスできなくなります。 引数 --space-id と --environment-id を使って、SPACE_ID と ENVIRONMENT_ID を指定することもできます。

App Identity の使用

Management token を指定する代わりに、認証に App Identity を利用することもできます。 Contentful App をセットアップしてインストールし、MCP サーバーを呼び出す際に次のパラメーターを設定する必要があります。

  • --app-id = Apptoken を提供するアプリの ID
  • --private-key = アプリのユーザーインターフェースで作成した、app_id に紐づく秘密鍵
  • --space-id = アプリがインストールされている spaceId
  • --environment-id = アプリがインストールされている環境 ID(スペース内)。

これらの値を使用して、MCP サーバーは指定されたスペース/環境 ID でコンテンツを操作するための一時的な AppToken を要求します。これは、MCP クライアントとして動作するバックエンドシステム(チャットエージェントなど)でこの MCP サーバーを使用する場合に特に便利です。

Claude Desktop での使用

この MCP を使用するために、このリポジトリをクローンする必要はありません。claude_desktop_config.json に追加するだけです。

~/Library/Application Support/Claude/claude_desktop_config.json を追加または編集し、次の行を追加します。

{
  "mcpServers": {
    "contentful": {
      "command": "npx",
      "args": ["-y", "@ivotoby/contentful-management-mcp-server"],
      "env": {
        "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<Your CMA token>"
      }
    }
  }
}

MCPClient が環境変数の設定に対応していない場合は、次のように引数を使って管理トークンを設定することもできます。

{
  "mcpServers": {
    "contentful": {
      "command": "npx",
      "args": [
        "-y",
        "@ivotoby/contentful-management-mcp-server",
        "--management-token",
        "<your token>",
        "--host",
        "http://api.contentful.com"
      ]
    }
  }
}
Smithery 経由でのインストール

Smithery 経由で、Claude Desktop 用の Contentful Management Server を自動的にインストールするには、次のようにします。

npx -y @smithery/cli install @ivotoby/contentful-management-mcp-server --client claude
Claude desktop の開発と使用

貢献した内容に対して Claude がどのように動作するかをテストするには、次の手順を実行します。

  • npm run dev を実行すると、変更のたびに MCP サーバーを再ビルドするウォッチャーが起動します。
  • claude_desktop_config.json を更新して、プロジェクトを直接参照するようにします。例:
{
  "mcpServers": {
    "contentful": {
      "command": "node",
      "args": ["/Users/ivo/workspace/contentful-mcp/bin/mcp-server.js"],
      "env": {
        "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<Your CMA Token>"
      }
    }
  }
}

これにより、MCP サーバーの変更を Claude で直接テストできます。ただし、新しいツール/リソースを追加した場合は、Claude Desktop を再起動する必要があります。

トランスポートモード

MCP サーバーは、2 つのトランスポートモードに対応しています。

stdio トランスポート

デフォルトのトランスポートモードでは、標準入力/出力ストリームを使用して通信します。これは、Claude Desktop など、stdio トランスポートに対応する MCP クライアントとの統合に最適です。

stdio モードを使用するには、--http フラグを付けずにサーバーを実行します。

npx -y contentful-mcp --management-token YOUR_TOKEN
# or alternatively
npx -y @ivotoby/contentful-management-mcp-server --management-token YOUR_TOKEN
StreamableHTTP トランスポート

このサーバーは、MCP プロトコルで定義されている StreamableHTTP トランスポートにも対応しています。このモードは、ウェブベースの統合や、サーバーをスタンドアロンサービスとして実行する場合に便利です。

StreamableHTTP モードを使用するには、--http フラグを付けて実行します。

npx -y contentful-mcp --management-token YOUR_TOKEN --http --port 3000
# or alternatively
npx -y @ivotoby/contentful-management-mcp-server --management-token YOUR_TOKEN --http --port 3000
StreamableHTTP の詳細
  • 公式の MCP StreamableHTTP トランスポートを使用します。
  • 標準的な MCP プロトコル操作に対応しています。
  • 状態を維持するためのセッション管理を含みます。
  • initialize/notify パターンを適切に処理します。
  • 標準的な MCP クライアントと互換性があります。
  • 非推奨の SSE トランスポートを、最新の方式に置き換えます。

この実装は標準的な MCP プロトコル仕様に準拠しているため、特別な処理を加えることなく、あらゆる MCP クライアントがサーバーに接続できます。

エラー処理

サーバーでは、次のような状況に対する包括的なエラー処理を実装しています。

  • 認証の失敗
  • レート制限
  • 無効なリクエスト
  • ネットワークの問題
  • API 固有のエラー

MseeP で検証済み

ライセンス

MIT License

注意事項

この MCP サーバーを使用すると、Claude(または MCP リソースを利用できる他のエージェント)が、コンテンツ、スペース、コンテンツモデルを更新および削除できます。Claude に Contentful のスペースで何を許可するか、十分にご確認ください!

この MCP サーバーは、Contentful による公式サポートをまだ受けていません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。