Model Context Protocol
Model Context Protocol(MCP)を実装し、DrupalサイトをMCPサーバーとして機能させることで、ClaudeなどのAIアプリケーションがDrupalのコンテンツやツールと連携できるようにします。
mcp
インストール
composer require 'drupal/mcp:^1.2'
概要
Model Context Protocol(MCP)モジュールは、DrupalサイトをMCP準拠のサーバーに変換し、Claude Desktop、Claude Code、Cursor IDEなどのAI搭載アプリケーションとのシームレスな統合を可能にします。MCPはAnthropicによるオープンプロトコルで、大規模言語モデル(LLM)がデータソースや実行可能なツールを使用してコンテキストを動的に拡張できるようにします。
このモジュールは、Drupalコンテンツをリソースとして、Drupal機能をツールとしてAIアプリケーションに公開する基盤レイヤーを提供します。開発者が追加のリソースやツールを公開するカスタムMCPプラグインを作成できるプラグインベースのアーキテクチャが含まれています。
組み込みプラグインは、サイト情報、コンテンツ検索、JSON:API統合、Drushコマンド(開発用)、およびAIモジュールの関数呼び出しとエージェント機能との統合へのアクセスを提供します。このモジュールはトークンベース認証、Basic認証、OAuthを含む複数の認証方式をサポートしています。
Features
- Drupal向けModel Context Protocol(MCP)仕様バージョン2025-03-26を実装
- 自動プラグイン検出による拡張可能なMCP機能のプラグインベースアーキテクチャ
- 複数の組み込みMCPプラグイン:General(サイト情報/ステータス)、Content(検索/リソース)、JSON:API、Drush Commands、AI Function Calling、AI Agent Calling、およびTool API統合
- トークンベース認証、Basic認証、OAuthをサポートする設定可能な認証
- プラグインレベルと個別ツールレベルの両方でのロールベースアクセス制御
- HTTPトランスポート(直接エンドポイント)とSTDIOトランスポート(Dockerコンテナ経由)の両方をサポート
- Claude Desktop、Claude Code、Cursor IDE向けの接続設定例
- ツールの動作に関するヒント(読み取り専用、冪等、破壊的、オープンワールド)のためのツールアノテーションサポート
- LLM最適化のためにデフォルトの説明を上書きするカスタムツール説明
- 新しいMCPプラグインのスキャフォールディングのためのDrush generatorコマンド
- jsonrpcモジュールによるJSON-RPC 2.0プロトコル準拠
- ブルートフォース攻撃を防ぐための認証のFlood保護
- テキスト、JSON、またはTwigテンプレートを使用してコーディングなしでツールを作成するためのMCP Studioサブモジュール
Use Cases
AI搭載コンテンツ管理
Claude DesktopまたはCursor IDEをDrupalサイトに接続して、AI支援のコンテンツ管理を有効にします。AIはMCPツールとリソースを通じてコンテンツを検索し、記事を読み、サイト構造を理解できます。
開発の自動化
Drush Commandsプラグインを使用して(適切なセキュリティ考慮のもと)、開発中にAIアシスタントがキャッシュのクリア、アップデートの実行、コードの生成などのDrushコマンドを実行できるようにします。
カスタムAIワークフロー
サイト固有の機能をツールとして公開するカスタムMCPプラグインを作成します。例えば、商品在庫システム、ユーザー管理機能、またはカスタムビジネスロジックをMCPツールとして公開します。
コンテンツ検索と取得
JSON:APIプラグインを使用して、AIアプリケーションが高度なフィルタリング、ソート、リレーションシップインクルードを使用してコンテンツを検索・取得できるようにし、サイトコンテンツに基づくコンテキストに応じたAIレスポンスを可能にします。
AIエージェント統合
AIモジュールエコシステムを使用する際に、AIエージェントをMCPツールとして公開し、ClaudeなどのAIアプリケーションがDrupalでホストされているAIエージェントをトリガーして対話できるようにします。
迅速なツールプロトタイピング
MCP Studioサブモジュールを使用して、コードを書かずにMCPツールを素早く作成・テストします。入力スキーマ、出力テンプレート(TWIGサポート付き)を定義し、適切なプラグインとして実装する前にツールをテストします。
Tips
- より複雑なプラグインを有効にする前に、まずGeneral MCPプラグインを有効にして基本的な接続をテストしてください。
- 接続情報ページ(/admin/config/mcp/connection)を使用して、MCPクライアント用のすぐに使える設定スニペットを取得してください。
- 開発時は、適切なプラグインとして実装する前に、MCP Studioサブモジュールを使用してツールを素早くプロトタイプしてください。
- Drush Commandsプラグインを使用する際は、必要な特定のコマンドのみを有効にし、本番環境ではプラグインを無効にしてください。
- 異なるユーザーが異なるツールにアクセスする必要がある場合、ツールレベルのロール制限を使用してきめ細かなアクセス制御を提供してください。
- カスタムツール説明を使用して、特定のツールの使用方法についてLLMにより多くのコンテキストや例を提供できます。
- JSON:API SchemaとJSON:APIプラグインは、LLMがクエリ前にスキーマを理解できるため、コンテンツ取得に最適なエクスペリエンスを提供します。
Technical Details
Admin Pages 4
/admin/config/mcp
MCPサーバーの認証設定を構成します。このページでは認証を有効にし、利用可能な認証方式を設定できます。
/admin/config/mcp/plugins
利用可能なすべてのMCPプラグインを表示・管理します。このページではプラグインの一覧とそのステータス(有効/無効/要件未達成)が表示され、個別のプラグイン設定にアクセスできます。
/admin/config/mcp/plugins/{plugin}/settings
個別のMCPプラグイン設定を構成します。プラグインの有効化/無効化、許可されたロールの設定、カスタムプラグインオプションの設定、個別のツール設定の管理が含まれます。
/admin/config/mcp/connection
MCPサーバーの接続情報と、Claude Desktop、Claude Code、Cursorを含む様々なMCPクライアント向けの設定例を表示します。簡単に設定できるようコピーボタンが含まれています。
権限 2
Drush Commands 1
drush generate mcp:plugin
getTools()とexecuteTool()メソッドを含むプラグインクラスのスキャフォールドコード付きで新しいMCPプラグインを生成します。
Troubleshooting 5
モジュールはFlood保護を実装しています。Floodウィンドウの有効期限が切れるまで待つか(user.flood設定で構成)、データベースからFloodエントリをクリアしてください。
プラグインの要件を確認してください。例えば、ContentプラグインはNodeモジュールを、JSON:APIプラグインはJSON:APIモジュールを、AIプラグインはそれぞれのAIモジュールがインストールされ設定されている必要があります。
プラグインが有効で、プラグイン設定で特定のツールが有効になっていること、認証されたユーザーが適切なロール権限を持っていることを確認してください。
STDIOトランスポート設定が正しいことを確認し、Dockerが実行されていること、DockerコンテナからDrupalサイトにアクセスできることを確認してください(ローカル開発には--network=hostを使用)。
プラグインレベルとツールレベルの両方のロール設定を確認してください。認証されたユーザーが「MCPサーバーを使用」権限と適切なロールを持っていることを確認してください。
Security Notes 7
- Drush Commandsプラグインは、Drushコマンドの強力な性質のため、開発環境でのみ有効にすべきです。
- MCPツールへの不正アクセスを防ぐため、本番環境では常に認証を有効にしてください。
- 認証トークンをハードコードするのではなく、Keyモジュールを使用して安全に保存してください。
- 最小権限の原則に従い、プラグインとツールへのアクセスをロールで確認・制限してください。
- モジュールはブルートフォース攻撃を防ぐために認証のFlood保護を実装しています。
- トークン認証は単一のユーザーコンテキストを使用します。より良い監査証跡のために、個別のユーザーアカウントを持つBasic認証の使用を検討してください。
- MCPを通じてコンテンツを公開する際は注意してください - AIアプリケーションにアクセス可能にすべきデータを検討してください。