/ ディレクトリ / プレイグラウンド / Webiny MCP
● 公式 webiny 🔑 自分のキーが必要

Webiny MCP

作者 webiny · webiny/webiny-js

ClaudeからWebinyヘッドレスCMSを操作 — コンテンツモデルの生成、エントリの一括編集、管理UIを操作せずにページをスキャフォールド。

WebinyはAWS上のサーバーレスヘッドレスCMSで、そのMCPサーバーはGraphQL管理APIをエージェントツールとして公開します。ClaudeにWebiny GraphQLを手書きで教える代わりに、コンテンツモデル・エントリ・Page Builderページ・ファイルマネージャー・APWパブリッシングワークフロー向けの型付きツールを利用できます。これらはすべてあなた自身のauth tokenで動作します。

なぜ使うのか

主な機能

ライブデモ

実際の動作

webiny-mcp.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "webiny-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@webiny/mcp-server",
        "--api-url",
        "https://your-project.cloudfront.net/cms/manage/en-US",
        "--token",
        "${WEBINY_TOKEN}"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "webiny-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@webiny/mcp-server",
        "--api-url",
        "https://your-project.cloudfront.net/cms/manage/en-US",
        "--token",
        "${WEBINY_TOKEN}"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "webiny-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@webiny/mcp-server",
        "--api-url",
        "https://your-project.cloudfront.net/cms/manage/en-US",
        "--token",
        "${WEBINY_TOKEN}"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "webiny-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@webiny/mcp-server",
        "--api-url",
        "https://your-project.cloudfront.net/cms/manage/en-US",
        "--token",
        "${WEBINY_TOKEN}"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "webiny-mcp",
      "command": "npx",
      "args": [
        "-y",
        "@webiny/mcp-server",
        "--api-url",
        "https://your-project.cloudfront.net/cms/manage/en-US",
        "--token",
        "${WEBINY_TOKEN}"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "webiny-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@webiny/mcp-server",
          "--api-url",
          "https://your-project.cloudfront.net/cms/manage/en-US",
          "--token",
          "${WEBINY_TOKEN}"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add webiny-mcp -- npx -y @webiny/mcp-server --api-url https://your-project.cloudfront.net/cms/manage/en-US --token ${WEBINY_TOKEN}

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Webiny MCP

説明文から新しいコンテンツモデルをスキャフォールドする

👤 Webiny開発者/コンテンツエンジニア ⏱ ~25 min intermediate

使うタイミング: PMが「このフィールドを持つCase Studiesセクションが必要」と言ってきた。ClaudeにWebinyのモデルへ変換させたい場合。

前提条件
  • Webinyプロジェクトの稼働npx create-webiny-project でAWSへデプロイ
  • Personal access token — 管理画面 → Settings → Personal Access Tokens で作成
フロー
  1. MCPを接続
    Add Webiny MCP using the manage API URL for dev environment. Verify it can list existing models.✓ コピーしました
    → list_modelsが少なくともビルトインモデルを返す
  2. モデルをスキャフォールド
    Create a CaseStudy content model with fields: title (text, required), client (text), summary (rich text), heroImage (file ref), publishedAt (datetime), tags (text, multi). Singular Case Study, plural Case Studies.✓ コピーしました
    → create_content_modelが1回呼び出される;フィールドIDが一貫してcamelCaseになる
  3. サンプルエントリをシード
    Now add 3 placeholder entries so the editorial team has something to look at.✓ コピーしました
    → create_entryで3つのエントリが現実的なプレースホルダーコンテンツで作成される

結果: 管理UIをクリックする代わりに数分で編集チームが使えるモデル+サンプルデータが完成。

注意点
  • フィールドIDに誤ってスペースが入る — Webinyはスペースを拒否する;MCPは正規化するが常にコミット前にプレビューすること
  • URLのロケールが間違っている — URLに /en-US/ が含まれる — デフォルトロケールと一致させること
組み合わせ: filesystem

200件のCase Studyのタイポを一括修正する

👤 コンテンツオペレーション担当 ⏱ ~30 min intermediate

使うタイミング: 法務が古いエントリの社名誤りを指摘した;200回クリックしたくない場合。

フロー
  1. 影響するエントリを検索
    Webiny: search CaseStudy entries containing 'Acme Corp' in summary. List IDs.✓ コピーしました
    → search_entriesが一致するIDをすべて返す
  2. ドライランで置換
    For each, propose the new summary replacing 'Acme Corp' with 'Acme Inc.' Show me 3 examples first.✓ コピーしました
    → 書き込み前に3件の差分が表示される
  3. 適用
    Looks right. Apply the change to all matching entries and republish.✓ コピーしました
    → 各エントリにupdate_entry + publish_entryが呼び出され、進捗カウントが表示される

結果: 1回の会話で数百件のエントリが修正・再公開される。監査証跡あり。

注意点
  • 自動公開でレビューがスキップされる — 下書き+APWワークフローを使用 — 本番への一括編集は自動公開しないこと

ブリーフからPage Builderのランディングページを生成する

👤 マーケティング開発者 ⏱ ~20 min intermediate

使うタイミング: コピーがあり、ブロックをドラッグせずにWebinyのPage Builderへ組み込みたい場合。

前提条件
  • 既存のブロックテンプレート — 少なくともHero・Features・CTAブロックが定義されていること
フロー
  1. ページを構成
    Create a Page Builder page titled 'Q2 Launch' using Hero + 3 Features + CTA blocks. Fill content from /briefs/q2.md.✓ コピーしました
    → create_pageが下書きURLを返す
  2. プレビューして公開
    Open the draft URL. Once approved, publish it.✓ コピーしました
    → publish_pageが成功;ページが公開される

結果: マーケティングのランディングページが約10分で組み立てられて公開される。

注意点
  • ブロックスキーマのズレ — まずlist_block_templatesを実行して利用可能なバリアントを確認する
組み合わせ: filesystem

組み合わせ

他のMCPと組み合わせて10倍の力を

webiny-mcp + filesystem

ローカルのMarkdownブリーフを読み込み、Webinyのページコンテンツとしてプッシュする

Read /briefs/q2.md, then create a Webiny Page using Hero + Features + CTA with content from the brief.✓ コピーしました
webiny-mcp + github

ClaudeがモデルをデザインしたらモデルVariantのPRを開く

Webiny: create CaseStudy model. GitHub: open a PR adding the model to the seed config.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_content_models (none) ディスカバリ 1 GraphQL call
create_content_model name, fields[] 新しいセクションのスキャフォールド 1 call
search_entries model, query, filter? 影響するアイテムを検索 1 call
create_entry model, data 単一アイテムの書き込み 1 call
update_entry id, data 既存アイテムの編集 1 call
publish_entry id 下書きを公開状態に昇格 1 call
list_block_templates (none) ページ構成の前 1 call
create_page title, blocks[] Page Builderの作成 1 call

コストと制限

運用コスト

APIクォータ
AWSアカウントの制限に依存(Lambdaの同時実行数・DynamoDBスループット)
呼び出しあたりのトークン
エントリサイズに応じて200〜3000
金額
WebinyはOSS無料;AWSの課金が適用される
ヒント
一括操作はファンアウトする — コストのスパイクを防ぎたい場合はLambdaの同時実行数上限を設定する

セキュリティ

権限、シークレット、影響範囲

最小スコープ: personal-access-token with content read/write
認証情報の保管: tokenは環境変数に保存;管理UIからローテーション
データ送信先: 自分のAWS CloudFront/API Gatewayエンドポイントのみ
絶対に付与しない: delete-environment tenant-admin

トラブルシューティング

よくあるエラーと対処法

401 Unauthorized

tokenの期限切れまたは環境が間違っている。管理画面で新しいPATを生成する

確認: curl -H 'Authorization: Bearer $TOKEN' $URL
Field validation failed

フィールド型は正確に一致させること — text vs rich-text vs long-text。list_content_modelsでスキーマを確認

Lambda timeout on bulk operation

50件ずつのバッチで処理;MCPは書き込みの自動ページネーションを行わない

代替案

Webiny MCP 他との比較

代替案代わりに使う場面トレードオフ
Strapi MCPWebinyではなくStrapiを使用している場合異なるCMS;異なるデプロイ方式(コンテナ vs サーバーレス)
Contentful MCP自己ホストではなくSaaS CMSを使用する場合ベンダーロックイン;OSSではない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る