Страпи MCP
MCP-сервер для Strapi CMS, обеспечивающий доступ к типам контента и записям через протокол контекста модели.
Обзор
Этот сервер MCP интегрируется с любым экземпляром Strapi CMS и обеспечивает:
Доступ к типам контента Strapi как к ресурсам
Инструменты для создания и обновления типов контента в Strapi
Инструменты для управления записями контента (создание, чтение, обновление, удаление)
Поддержка Strapi в режиме разработки
Related MCP server: Ledger MCP Server
Настраивать
Переменные среды
Для хранения учетных данных рекомендуется использовать файл .env в корне проекта.
STRAPI_URL: URL-адрес вашего экземпляра Strapi (по умолчанию:http://localhost:1337)STRAPI_ADMIN_EMAIL: адрес электронной почты администратора Strapi (рекомендуется для полной функциональности, особенно доступа к схеме).STRAPI_ADMIN_PASSWORD: пароль для администратора Strapi (рекомендуется).STRAPI_API_TOKEN: (Необязательный резерв) API-токен. Может использоваться, если не предоставлены учетные данные администратора, но может иметь ограниченные разрешения.STRAPI_DEV_MODE: установите значение"true", чтобы включить функции режима разработки (по умолчанию —false).
Пример файла
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Важно: добавьте .env в файл .gitignore , чтобы избежать передачи учетных данных.
Установка
npm install strapi-mcpБег
Рекомендуемый метод (с использованием конфигурации Cursor MCP):
Для пользователей Cursor настройте сервер strapi-mcp в файле ~/.cursor/mcp.json :
"strapi-mcp": {
"command": "node",
"args": ["/path/to/strapi-mcp/build/index.js"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}Курсор будет автоматически управлять жизненным циклом сервера при использовании инструментов 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
Добавлен инструмент позволяет создавать новые типы контента с помощью API Content-Type Builder (требуются учетные данные администратора).
Приоритетные учетные данные администратора: обновленная логика для предпочтения адреса электронной почты и пароля администратора для получения типов контента и схем, что повышает надежность.
Обновленная документация: уточнены методы аутентификации и рекомендуемые процедуры выполнения.
0.1.5
Улучшенное обнаружение типа контента с помощью нескольких резервных методов
Добавлена более надежная обработка ошибок и ведение журнала.
Улучшенный вывод схемы для типов контента
0.1.4
Улучшенная обработка ошибок с более конкретными кодами ошибок
Добавлены коды ошибок
ResourceNotFoundиAccessDenied.Улучшенные сообщения об ошибках для распространенных ошибок API
0.1.3
Первоначальный публичный релиз
Лицензия
Массачусетский технологический институт
Strapi-mcp MCP-сервер
MCP-сервер для вашей Strapi CMS
Это MCP-сервер на основе TypeScript, который интегрируется с Strapi CMS. Он обеспечивает доступ к типам контента и записям Strapi через протокол MCP, позволяя вам:
Доступ к типам контента Strapi как к ресурсам
Создание, чтение, обновление и удаление записей контента
Управляйте контентом Strapi с помощью инструментов MCP
Функции
Ресурсы
Список и доступ к типам контента через
strapi://content-type/Каждый тип контента представляет свои записи в формате JSON.
Тип MIME приложения/JSON для доступа к структурированному контенту
Инструменты
list_content_types— список всех доступных типов контента в Strapiget_entries— получение записей для определенного типа контента с дополнительной фильтрацией, разбиением на страницы, сортировкой и заполнением связейget_entry— Получить конкретную запись по идентификаторуcreate_entry— создать новую запись для типа контентаupdate_entry— обновить существующую записьdelete_entry- Удалить записьupload_media— загрузить медиа-файл на Strapiget_content_type_schema— получить схему (поля, типы, отношения) для определенного типа контента.connect_relation— подключение связанных записей к полю связи записи.disconnect_relation— Отключить связанные записи от поля связи записи.create_content_type— создание нового типа контента с помощью API Content-Type Builder (требуются права администратора).publish_entry— Опубликовать определенную запись.unpublish_entry— Отменить публикацию определенной записи.list_components— список всех доступных компонентов в Strapi.get_component_schema— Получить схему для определенного компонента.create_component— Создать новый компонент.update_component— обновить существующий компонент.
Расширенные функции
Фильтрация, разбиение на страницы и сортировка
Инструмент 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— Получить статью с идентификатором 1strapi://content-type/api::article.article?filters={"title":{"$contains":"hello"}}- Получить отфильтрованные статьи
Публикация и отмена публикации контента
Инструменты publish_entry и unpublish_entry обеспечивают контроль над жизненным циклом контента:
{
"contentType": "api::article.article",
"id": "1"
}Эти инструменты используют пути API администратора для действий публикации/отмены публикации, а также возможность прямого обновления поля publishedAt если разрешения администратора недоступны.
Управление компонентами
Компонентами Strapi можно управлять с помощью следующих инструментов:
list_components: Получить все доступные компонентыget_component_schema: Просмотр структуры определенного компонентаcreate_component: Создать новый компонент с указанными полямиupdate_component: Изменить существующий компонент
Пример создания компонента:
{
"componentData": {
"displayName": "Security Settings",
"category": "security",
"icon": "shield",
"attributes": {
"enableTwoFactor": {
"type": "boolean",
"default": false
},
"passwordExpiration": {
"type": "integer",
"min": 0
}
}
}
}Разработка
Установите зависимости:
npm installСборка сервера:
npm run buildДля разработки с автоматической пересборкой:
npm run watchУстановка
Подробные пошаговые инструкции по развертыванию и тестированию этого сервера MCP см. в файле DEPLOYMENT.md .
Быстрая настройка:
Соберите сервер:
npm run buildНастройте свой экземпляр Strapi и получите токен 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(необязательно): URL-адрес вашего экземпляра Strapi (по умолчанию http://localhost:1337 )STRAPI_ADMIN_EMAIL&STRAPI_ADMIN_PASSWORD(рекомендуется): Учетные данные для пользователя-администратора Strapi. Требуется для полной функциональности, например, для извлечения схем типов контента.STRAPI_API_TOKEN(необязательный резерв): Ваш токен API Strapi. Может использоваться, если не предоставлены учетные данные администратора, но функциональность может быть ограничена в зависимости от разрешений токена.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"
}
}
}
)Доступ к ресурсам