ストラピMCP
Strapi CMS 用の MCP サーバー。モデル コンテキスト プロトコルを通じてコンテンツ タイプとエントリへのアクセスを提供します。
概要
この MCP サーバーは、任意の Strapi CMS インスタンスと統合して、次の機能を提供します。
Strapiコンテンツタイプへのリソースとしてのアクセス
Strapiでコンテンツタイプを作成および更新するためのツール
コンテンツエントリを管理するためのツール(作成、読み取り、更新、削除)
開発モードでのStrapiのサポート
Related MCP server: Ledger MCP Server
設定
環境変数
資格情報を保存するには、プロジェクト ルート内の.envファイルを使用することをお勧めします。
STRAPI_URL: StrapiインスタンスのURL(デフォルト:http://localhost:1337)STRAPI_ADMIN_EMAIL: Strapi 管理者ユーザーのメール アドレス (完全な機能、特にスキーマ アクセスに推奨)。STRAPI_ADMIN_PASSWORD: Strapi 管理者ユーザーのパスワード (推奨)。STRAPI_API_TOKEN: (オプションのフォールバック) APIトークン。管理者の資格情報が提供されていない場合に使用できますが、権限が制限される場合があります。STRAPI_DEV_MODE: 開発モード機能を有効にするには"true"に設定します (デフォルトはfalse)。
.env
STRAPI_URL=http://localhost:1337
STRAPI_ADMIN_EMAIL=your_admin_email@example.com
STRAPI_ADMIN_PASSWORD=your_admin_password
# STRAPI_API_TOKEN=your_api_token_here # Optional**重要:**資格情報のコミットを回避するには、 .gitignoreファイルに.envを追加します。
インストール
npm install strapi-mcpランニング
推奨方法 (
プロジェクトがビルドされていることを確認してください( npm run build )。次に、Node.js v20.6.0+ で--env-fileフラグを指定してサーバーを実行します。
node --env-file=.env build/index.js代替案(環境変数を直接使用):
export STRAPI_URL=http://localhost:1337
export STRAPI_ADMIN_EMAIL=your_admin_email@example.com
export STRAPI_ADMIN_PASSWORD=your_admin_password
# export STRAPI_API_TOKEN=your-api-token # Optional fallback
export STRAPI_DEV_MODE=true # optional
# Run the globally installed package (if installed via npm install -g)
strapi-mcp
# Or run the local build directly
node build/index.js特徴
コンテンツの種類を一覧表示して読む
エントリを取得、作成、更新、削除する
メディアファイルをアップロードする
関係の接続と切断
コンテンツタイプスキーマを取得する
変更履歴
0.1.6
create_content_typeContent-Type Builder API 経由で新しいコンテンツ タイプを作成できるようになりました (管理者の資格情報が必要です)。**管理者の資格情報の優先順位:**コンテンツ タイプとスキーマを取得するために管理者のメール アドレスとパスワードを優先するようにロジックを更新し、信頼性を向上しました。
**更新されたドキュメント:**認証方法と推奨される実行手順を明確にしました。
0.1.5
複数のフォールバック方法によるコンテンツタイプの検出の改善
より堅牢なエラー処理とログ記録を追加しました
コンテンツタイプのスキーマ推論の強化
0.1.4
より具体的なエラーコードによるエラー処理の改善
ResourceNotFoundおよびAccessDeniedエラー コードを追加しました一般的な API エラーに対するエラー メッセージの改善
0.1.3
初回公開リリース
ライセンス
マサチューセッツ工科大学
Strapi-mcp MCP サーバー
Strapi CMS用のMCPサーバー
これは、Strapi CMSと統合されたTypeScriptベースのMCPサーバーです。MCPプロトコルを介してStrapiのコンテンツタイプとエントリにアクセスできるため、以下のことが可能になります。
Strapiコンテンツタイプをリソースとしてアクセスする
コンテンツエントリの作成、読み取り、更新、削除
MCPツールを通じてStrapiコンテンツを管理する
特徴
リソース
URI 経由でコンテンツ タイプを一覧表示してアクセスする
strapi://content-type/)各コンテンツタイプはエントリをJSONとして公開します
構造化コンテンツへのアクセスのためのアプリケーション/JSON MIME タイプ
ツール
list_content_types- Strapiで利用可能なすべてのコンテンツタイプを一覧表示しますget_entries- フィルタリング、ページ区切り、並べ替え、リレーションの設定など、特定のコンテンツタイプのエントリを取得します。get_entry- IDで特定のエントリを取得するcreate_entry- コンテンツタイプの新しいエントリを作成するupdate_entry- 既存のエントリを更新するdelete_entry- エントリを削除するupload_media- Strapiにメディアファイルをアップロードするget_content_type_schema- 特定のコンテンツ タイプのスキーマ (フィールド、タイプ、リレーション) を取得します。connect_relation- 関連エントリをエントリの関係フィールドに接続します。disconnect_relation- エントリの関係フィールドから関連エントリを切断します。create_content_type- コンテンツ タイプ ビルダー API を使用して新しいコンテンツ タイプを作成します (管理者権限が必要です)。
高度な機能
フィルタリング、ページネーション、ソート
get_entriesツールは、高度なクエリ オプションをサポートしています。
{
"contentType": "api::article.article",
"filters": {
"title": {
"$contains": "hello"
}
},
"pagination": {
"page": 1,
"pageSize": 10
},
"sort": ["title:asc", "createdAt:desc"],
"populate": ["author", "categories"]
}リソースURI
リソースにはさまざまな URI 形式でアクセスできます。
strapi://content-type/api::article.article- すべての記事を取得するstrapi://content-type/api::article.article/1- ID 1の記事を取得しますstrapi://content-type/api::article.article?filters={"title":{"$contains":"hello"}}- フィルタリングされた記事を取得する
発達
依存関係をインストールします:
npm installサーバーを構築します。
npm run build自動リビルドを使用した開発の場合:
npm run watchインストール
この MCP サーバーを展開およびテストする方法の詳細な手順については、 DEPLOYMENT.mdファイルを参照してください。
クイックセットアップ:
サーバーをビルドする:
npm run buildStrapiインスタンスを設定し、APIトークンを取得する
Claude Desktop にサーバー設定を追加します。
MacOS の場合: ~/Library/Application Support/Claude/claude_desktop_config.json Windows の場合: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"strapi-mcp": {
"command": "/path/to/strapi-mcp/build/index.js",
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "your-api-token-here",
"STRAPI_DEV_MODE": "false"
}
}
}
}環境変数
STRAPI_URL(オプション): StrapiインスタンスのURL (デフォルトはhttp://localhost:1337 )STRAPI_ADMIN_EMAIL&STRAPI_ADMIN_PASSWORD(推奨): Strapi管理者ユーザーの認証情報。コンテンツタイプスキーマの取得など、すべての機能を利用するために必要です。STRAPI_API_TOKEN(オプションのフォールバック):Strapi APIトークン。管理者の資格情報が提供されていない場合でも使用できますが、トークンの権限に基づいて機能が制限される場合があります。STRAPI_DEV_MODE(オプション): 開発モード機能を有効にするには「true」に設定します (デフォルトは false)
認証の優先順位
サーバーは、次の順序で認証方法を優先順位付けします。
管理者のメールアドレスとパスワード (
STRAPI_ADMIN_EMAIL、STRAPI_ADMIN_PASSWORD)APIトークン(
STRAPI_API_TOKEN)
最良の結果を得るには、管理者資格情報を使用することを強くお勧めします。
Strapi 資格の取得
**管理者の資格情報:**既存のスーパー管理者のメール アドレスとパスワードを使用するか、Strapi 管理パネル (設定 > 管理パネル > ユーザー) で専用の管理者ユーザーを作成します。
APIトークン: (オプションのフォールバック)
Strapi管理パネルにログイン
設定 > APIトークンに移動します
「新しいAPIトークンを作成」をクリックします
名前、説明、トークンの種類(「フルアクセス」が望ましい)を設定します
生成されたトークンをコピーして、MCP サーバー構成で使用します。
デバッグ
MCPサーバーはstdio経由で通信するため、デバッグが困難になる場合があります。パッケージスクリプトとして提供されているMCP Inspectorの使用をお勧めします。
npm run inspectorインスペクターは、ブラウザでデバッグ ツールにアクセスするための URL を提供します。
使用例
MCPサーバーの設定と実行が完了したら、Claudeと組み合わせてStrapi CMSと連携できるようになります。以下に例をいくつか示します。
コンテンツタイプのリスト
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "list_content_types",
arguments: {}
)エントリの取得
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "get_entries",
arguments: {
"contentType": "api::article.article",
"filters": {
"title": {
"$contains": "hello"
}
},
"pagination": {
"page": 1,
"pageSize": 10
},
"sort": ["title:asc"]
}
)エントリの作成
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "create_entry",
arguments: {
"contentType": "api::article.article",
"data": {
"title": "My New Article",
"content": "This is the content of my article.",
"publishedAt": "2023-01-01T00:00:00.000Z"
}
}
)メディアのアップロード
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "upload_media",
arguments: {
"fileData": "base64-encoded-data-here",
"fileName": "image.jpg",
"fileType": "image/jpeg"
}
)関係をつなぐ
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "connect_relation",
arguments: {
"contentType": "api::article.article",
"id": "1",
"relationField": "authors",
"relatedIds": [2, 3]
}
)関係の断絶
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "disconnect_relation",
arguments: {
"contentType": "api::article.article",
"id": "1",
"relationField": "authors",
"relatedIds": [3]
}
)コンテンツタイプの作成
use_mcp_tool(
server_name: "strapi-mcp-local",
tool_name: "create_content_type",
arguments: {
"displayName": "My New Product",
"singularName": "product",
"pluralName": "products",
"kind": "collectionType",
"description": "Represents products in the store",
"draftAndPublish": true,
"attributes": {
"name": { "type": "string", "required": true },
"description": { "type": "text" },
"price": { "type": "decimal", "required": true },
"stock": { "type": "integer" }
}
}
)コンテンツタイプの更新
use_mcp_tool(
server_name: "strapi-mcp-local",
tool_name: "update_content_type",
arguments: {
"contentType": "api::speaker.speaker",
"attributes": {
"isHighlightSpeaker": {
"type": "boolean",
"default": false
},
"newTextField": {
"type": "string"
}
}
}
)リソースへのアクセス