Directus Content MCP について
Directus Content MCP は、Directus ユーザーが LLM からプロジェクトのデータを扱えるようにする MCP サーバーです。コンテンツ編集者やデータアナリストを対象とし、フィールドやコレクションの削除などの破壊的な操作を意図的に制限しています。
主な機能
- 01Directus コレクションのアイテムの読み取りと書き込み
- 02コレクションのスキーマとフィールド定義の参照
- 03ファイルのメタデータ管理と URL からのインポート
- 04自動化フローの実行とコメントの管理
- 05フィールドやコレクションの削除など高リスクな操作の制限
活用シーン
- 01LLM を使ったブログ記事の下書きとコンテンツ更新
- 02コレクションのクエリとレポート生成
- 03説明やタグを付けたメディアアセットの整理
MCP 対応
本プロジェクトは MCP サーバーとして、アイテム、ファイル、フィールド、フロー、コメントに関する Directus のツールと、プロンプトの取得やシステムプロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Directus Content MCP Server
Model Context Protocol(MCP)は、AI ツールや LLM が Directus のようなアプリケーションやサービスとやり取りするための標準です。
Directus Content MCP Server は、Directus ユーザーが LLM 内で自身のデータを操作するためのインターフェースです。次のような用途に適しています。
- コンテンツ編集者:Directus プロジェクト内でカスタムページを作成したり、ブログ記事を執筆したり、コンテンツを更新したり、アセットを整理したりできます。
- データアナリスト:自然言語を使ってコレクションを検索し、レポートを作成し、傾向を分析し、Directus のデータから知見を抽出できます。
フィールドやコレクションの削除によるデータ損失など、深刻な結果につながる破壊的な操作は意図的に制限しています。
今後のリリースでは、ローカル/開発環境の Directus プロジェクトを扱う開発者向けのツールをさらに提供する予定です。また、データ損失をさらに防止するため、別パッケージとして提供する可能性もあります。
インストール
前提条件
- 既存の Directus プロジェクト
既存の Directus プロジェクトがない場合は、Directus Cloud で無料トライアルを開始できます:https://directus.cloud/register
または
以下のターミナルコマンドを使って、サンプルの Directus インスタンスをローカルで起動できます。
npx directus-template-cli@latest init
ステップ 1. Directus の認証情報を取得する
メールアドレスとパスワードを使うか、静的トークンを生成して、MCP を Directus インスタンスに接続できます。
静的アクセストークンを取得するには:
- Directus インスタンスにログインします
- ユーザーディレクトリに移動し、自分のユーザープロフィールを選択します
- Token フィールドまでスクロールします
- トークンを生成してコピーします
- ユーザーを保存します(保存し忘れると、無効なトークンを示すエラーが表示されるので注意してください!)
ステップ 2. AI ツールで MCP を設定する
Claude Desktop
-
Claude Desktop を開き、設定に移動します。
-
Developer タブで Edit Config をクリックし、設定ファイルを開きます。
-
次の設定を追加します。
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_TOKEN": "your-directus-token>" } } } }メールアドレスとパスワードを使う場合は、こちらを使用してください
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_USER_EMAIL": "[email protected]", "DIRECTUS_USER_PASSWORD": "your-password" } } } }プレースホルダーの値を URL と認証情報に置き換えてください。
-
設定ファイルを保存し、Claude desktop を再起動します。
-
新しいチャット画面に、Directus MCP server のアイコンが表示されます。
Cursor
-
Cursor を開き、まだ存在しない場合はプロジェクトの ルートに .cursor ディレクトリを作成します。
-
まだ存在しない場合は
.cursor/mcp.jsonファイルを作成して開きます。 -
次の設定を追加します。
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_TOKEN": "your-directus-token>" } } } }メールアドレスとパスワードを使う場合は、こちらを使用してください
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_USER_EMAIL": "[email protected]", "DIRECTUS_USER_PASSWORD": "your-password" } } } }プレースホルダーの値を URL と認証情報に置き換えてください。
-
設定ファイルを保存します。
-
Cursor を開き、Settings/MCP に移動します。サーバーへの接続に成功すると、緑色の有効ステータスが表示されます。
ツール
MCP サーバーは、Directus インスタンスとやり取りするために以下のツールを提供します。
| ツール | 説明 | 使用例 |
|---|---|---|
| system-prompt | LLM アシスタントに役割に関するコンテキストを提供します | セッション開始時にシステムのコンテキストを理解する |
| users-me | 現在のユーザー情報を取得します | 権限の確認、応答のパーソナライズ |
| read-collections | すべてのコレクションのスキーマを取得します | データベース構造の確認、リレーションの把握 |
| read-items | 任意のコレクションからアイテムを取得します | コンテンツの取得、データの検索、情報の表示 |
| create-item | コレクションに新しいアイテムを作成します | 新しいコンテンツ、レコード、エントリーの追加 |
| update-item | 既存のアイテムを変更します | コンテンツの編集、ステータスの更新、情報の修正 |
| delete-item | コレクションからアイテムを削除します | 古くなったコンテンツの整理 |
| read-files | ファイルのメタデータまたは生のコンテンツにアクセスします | 画像、ドキュメント、メディアアセットの検索 |
| import-file | URL からファイルをインポートします | Directus インスタンスへの外部メディアの追加 |
| update-files | ファイルのメタデータを更新します | メディアの整理、説明の追加、タグ付け |
| read-fields | コレクションのフィールド定義を取得します | データ構造、フィールドの型、検証の理解 |
| read-field | 特定のフィールド情報を取得します | フィールド設定の詳細確認 |
| create-field | コレクションに新しいフィールドを追加します | データモデルの拡張 |
| update-field | 既存のフィールドを変更します | フィールド設定、インターフェースオプションの変更 |
| read-flows | 利用可能な自動化フローを一覧表示します | 自動化の機会の発見 |
| trigger-flow | 自動化フローを実行します | 一括操作、公開、ステータスの変更 |
| read-comments | アイテムのコメントを表示します | フィードバックの取得、ディスカッションスレッドの表示 |
| upsert-comment | コメントを追加または更新します | フィードバックの提供、決定事項の記録 |
| markdown-tool | Markdown と HTML を相互に変換します | WYSIWYG フィールド用のコンテンツの書式設定 |
| get-prompts | 利用可能なプロンプトを一覧表示します | 事前設定されたプロンプトテンプレートの確認 |
| get-prompt | 保存済みのプロンプトを実行します | 一貫性のある AI とのやり取りに向けたプロンプトテンプレートの使用 |
システムプロンプト
MCP サーバーには、適切なツールの使用を促し、LLM のためのガイドラインを提供するシステムプロンプトが用意されています。
MCP_SYSTEM_PROMPT 変数を設定することで、環境設定内のデフォルトのシステムプロンプトを上書きできます。
必要に応じて、システムプロンプトを完全に無効にすることもできます。
MCP_SYSTEM_PROMPT_ENABLED を false に設定してください。
プロンプトの設定
MCP サーバーは、Directus コレクションに保存された動的なプロンプトをサポートしています。プロンプトは MCP クライアントで広くサポートされていませんが、Claude Desktop ではサポートされています。
以下を設定できます。
DIRECTUS_PROMPTS_COLLECTION_ENABLED:「true」に設定すると、プロンプト機能が有効になりますDIRECTUS_PROMPTS_COLLECTION:プロンプトを含むコレクションの名前DIRECTUS_PROMPTS_NAME_FIELD:プロンプト名のフィールド名(デフォルト:「name」)DIRECTUS_PROMPTS_DESCRIPTION_FIELD:プロンプトの説明のフィールド名(デフォルト:「description」)DIRECTUS_PROMPTS_SYSTEM_PROMPT_FIELD:システムプロンプトのテキストのフィールド名(デフォルト:「system_prompt」)DIRECTUS_PROMPTS_MESSAGES_FIELD:メッセージ配列のフィールド名(デフォルト:「messages」)
Mustache テンプレート
システムプロンプトとメッセージの内容の両方で、{{ variable_name }} 構文を使った Mustache テンプレートを使用できます。
- 二重の波括弧を使って、プロンプト内に変数を定義します:
Hello, {{ name }}! - プロンプトを呼び出す際に、
argumentsパラメーターで変数の値を指定します - MCP サーバーが、すべての変数を指定された値に自動的に置き換えます
ローカル/開発環境へのインストール
- リポジトリをクローンします
pnpm install && pnpm buildを実行してサーバーをビルドします- 上記と同様に Claude Desktop または Cursor を設定します。ただし、代わりに
distファイルを指定します。 pnpm devを使って変更を監視し、サーバーを再ビルドします
{
"mcpServers": {
"directus": {
"command": "node",
"args": ["/path/to/directus-mcp-server/dist/index.js"]
}
}
}
すべての設定を含む、ローカル開発用の Claude Desktop 設定例
{
"mcpServers": {
"directus": {
"command": "node",
"args": [
"/path/to/directus-mcp-server/dist/index.js"
],
"env": {
"DIRECTUS_URL": "DIRECTUS_URL",
"DIRECTUS_TOKEN": "DIRECTUS_TOKEN",
"MCP_SYSTEM_PROMPT_ENABLED": "true",
"MCP_SYSTEM_PROMPT": "You're a content editor working at Directus.\nYou're a master at copywriting and creating messaging that resonates with technical audiences.\nYou'll be given details about a Directus instance and the schema within it. You'll be asked to update content and other helpful tasks. **Rules** \n - If you're updating HTML / WYSWIG fields inside the CMS - DO NOT ADD extra styling, classes, or markup outside the standard HTML elements. If you're not 95% sure what values should go into a certain field, stop and ask the user. Before deleting anything, confirm with the user and prompt them for an explicit DELETE confirmation via text.",
"DIRECTUS_PROMPTS_COLLECTION_ENABLED": "true",
"DIRECTUS_PROMPTS_COLLECTION": "ai_prompts"
}
}
}
}
設定例
トークンを使った基本設定
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your_directus_token"
}
}
}
}
メールアドレス/パスワード認証を使った設定
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_USER_EMAIL": "[email protected]",
"DIRECTUS_USER_PASSWORD": "your_password"
}
}
}
}
カスタムシステムプロンプトとツール制限を使った高度な設定
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your_directus_token",
"DISABLE_TOOLS": ["delete-item", "update-field"],
"MCP_SYSTEM_PROMPT_ENABLED": "true",
"MCP_SYSTEM_PROMPT": "You are an assistant specialized in managing content for our marketing website.",
"DIRECTUS_PROMPTS_COLLECTION_ENABLED": "true",
"DIRECTUS_PROMPTS_COLLECTION": "ai_prompts",
"DIRECTUS_PROMPTS_NAME_FIELD": "name",
"DIRECTUS_PROMPTS_DESCRIPTION_FIELD": "description",
"DIRECTUS_PROMPTS_SYSTEM_PROMPT_FIELD": "system_prompt",
"DIRECTUS_PROMPTS_MESSAGES_FIELD": "messages"
}
}
}
}
❤️ コントリビューション
コミュニティからのコントリビューションを歓迎します。PR を提出する前に、提案する変更について話し合うため、まず issue を作成してください。
🙏 謝辞
これは、あのすごい伝説の @rijkvanzanten による実験として始まりました 🙌
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。