Directus MCP Server
@staminna/directus-mcp-server
MCP-сервер для Directus 12 — элементы, коллекции, файлы, потоки, пользователи и инструменты схемы. TypeScript, полностью типизирован.
Покрытие тестами
Операторы | Ветви | Функции | Строки |
Бейджи покрытия генерируются из coverage/coverage-summary.json командой npm run badges (внешний сервис не требуется). Сначала выполните npm run test:coverage.
Возможности
🔐 Полная аутентификация — аутентификация на основе токена с Directus
📦 Управление коллекциями — операции CRUD для коллекций и элементов
📁 Файловые операции — загрузка, скачивание и управление файлами
🔄 Управление потоками — создание, обновление, запуск и управление потоками Directus
👥 Управление пользователями — CRUD пользователей и управление ролями
🔍 Инструменты схемы — анализ и проверка схем коллекций
🩺 Диагностика — диагностика доступа к коллекциям и устранение неполадок
Related MCP server: Storyblok MCP Server
Установка
Через npm (рекомендуется)
npm install -g @staminna/directus-mcp-serverИз исходного кода
git clone https://github.com/staminna/mcp-server-claude.git
cd mcp-server-claude
npm install
npm run buildПеременные окружения
Переменная | Обязательна | Описание |
| Да | URL вашего экземпляра Directus (например, |
| Да | Статический API-токен с соответствующими правами |
| Нет | Включить коллекцию AI-промптов ( |
| Нет | Название коллекции для AI-промптов (по умолчанию: |
| Нет | Включить функцию ресурсов ( |
| Нет | Исключить системные коллекции из ресурсов ( |
| Нет | Режим окружения ( |
| Нет | Таймаут запроса в мс (по умолчанию: |
| Нет | Количество повторов при сетевых ошибках, 5xx и 429 (по умолчанию: |
| Нет | Базовая задержка backoff в мс (по умолчанию: |
| Нет | Максимальная задержка backoff в мс (по умолчанию: |
| Нет | Верхний предел размера импорта на стороне клиента в байтах, аналогичный Directus |
| Нет |
|
TLS / клиентские сертификаты
Задайте эти переменные, когда экземпляр Directus использует частный центр сертификации (CA) или требует клиентский сертификат. Каждая из переменных CA/CERT/KEY/PFX принимает либо путь к файлу, либо само содержимое PEM/DER.
Переменная | Описание |
| Центр сертификации |
| Клиентский сертификат |
| Приватный ключ клиента |
| Пакет PKCS#12 (альтернатива сертификату/ключу) |
| Парольная фраза для ключа или PFX |
|
|
| Переопределение имени сервера SNI |
Аутентификация — OAuth не требуется
Этот сервер использует статический токен доступа Directus (DIRECTUS_TOKEN) и работает через stdio-транспорт. OAuth не требуется по замыслу:
Спецификация MCP определяет авторизацию OAuth 2.1 только для транспортов на основе HTTP. Для stdio-серверов спецификация гласит, что реализации «SHOULD NOT» (не должны) использовать её и вместо этого должны получать учётные данные из окружения — именно так и поступает этот сервер.
Directus 12 полностью поддерживает статические токены доступа. Поддержка OAuth 2.1, добавленная в Directus (в середине 2026 года), относится к его собственному встроенному удалённому MCP-эндпоинту и является опциональной; в Directus 12 нет ломающих изменений для аутентификации по токену (см.
DIRECTUS_V12_BREAKING_CHANGES.md).OAuth становится актуальным, только если вы публикуете MCP-сервер удалённо через HTTP (Streamable HTTP/SSE). Будучи локальным stdio-подпроцессом Claude Desktop, Claude Code, Cursor и т.д., этот сервер требует только токен из окружения.
Создайте токен в Directus в разделе User Settings → Token (для продакшена используйте отдельного пользователя с ролью минимальных привилегий).
Использование с подпиской Claude (Max/Pro) — API-ключ не нужен
MCP-серверы сами по себе не расходуют токены Anthropic API; их расходуют только вызовы моделей AI-клиента. Если вы используете этот сервер в Claude Code или Claude Desktop с подпиской Claude Max (или Pro), использование моделей покрывается подпиской — вам не нужен ключ Anthropic API. Ключ API требуется только при программном использовании Claude через Claude API (например, удалённый MCP-коннектор).
Конфигурация IDE
🟣 Cursor
Откройте настройки Cursor:
Cmd+,(macOS) илиCtrl+,(Windows/Linux)Найдите «MCP» или перейдите в Features → MCP Servers
Нажмите «Edit in settings.json»
Добавьте следующую конфигурацию:
{
"mcpServers": {
"directus": {
"command": "npx",
"args": [
"-y",
"@staminna/directus-mcp-server"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}
}
}Или, если установлено локально:
{
"mcpServers": {
"directus": {
"command": "node",
"args": [
"/path/to/mcp-server-claude/dist/index.js"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}
}
}Сохраните файл и перезапустите Cursor
🌊 Windsurf
Откройте настройки Windsurf:
Cmd+,(macOS) илиCtrl+,(Windows/Linux)Найдите «MCP Servers»
Нажмите «Edit in settings.json»
Добавьте следующую конфигурацию:
{
"mcpServers": {
"directus": {
"command": "npx",
"args": [
"-y",
"@staminna/directus-mcp-server"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here",
"DIRECTUS_PROMPTS_COLLECTION_ENABLED": "true",
"DIRECTUS_PROMPTS_COLLECTION": "ai_prompts",
"DIRECTUS_RESOURCES_ENABLED": "true",
"DIRECTUS_RESOURCES_EXCLUDE_SYSTEM": "true",
"NODE_ENV": "production"
}
}
}
}Или, если установлено локально:
{
"mcpServers": {
"directus": {
"command": "node",
"args": [
"/path/to/mcp-server-claude/dist/index.js"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}
}
}Сохраните файл
Полностью закройте Windsurf (
Cmd+QилиCtrl+Q)Снова откройте Windsurf и подождите ~10 секунд, пока MCP инициализируется
🤖 Claude Desktop
Найдите файл конфигурации Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Создайте или отредактируйте файл конфигурации:
{
"mcpServers": {
"directus": {
"command": "npx",
"args": [
"-y",
"@staminna/directus-mcp-server"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}
}
}Или, если установлено локально:
{
"mcpServers": {
"directus": {
"command": "node",
"args": [
"/path/to/mcp-server-claude/dist/index.js"
],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}
}
}Сохраните файл и перезапустите Claude Desktop
🔮 Claude.ai (веб-версия с MCP)
Для веб-интерфейса Claude.ai с поддержкой MCP:
Перейдите в настройки Claude.ai
Найдите раздел конфигурации MCP
Добавьте новый MCP-сервер со следующими настройками:
{
"name": "directus",
"command": "npx",
"args": ["-y", "@staminna/directus-mcp-server"],
"env": {
"DIRECTUS_URL": "http://localhost:8065",
"DIRECTUS_TOKEN": "your-directus-token-here"
}
}Примечание: поддержка MCP в Claude.ai может требовать подписки Pro и определённых расширений браузера.
Доступные инструменты
Управление коллекциями
Инструмент | Описание |
| Список всех коллекций в Directus |
| Получить схему для конкретной коллекции |
| Получить элементы коллекции с фильтрацией |
| Создать новую коллекцию |
| Удалить коллекцию (требуется |
| Создать новый элемент в коллекции |
| Обновить существующий элемент, опционально в черновик |
| Удалить элементы по |
| Выполнить массовое создание, обновление, удаление |
Схема и поля
Tool | Description |
| Создать новое поле в коллекции |
| Обновить существующее поле |
| Удалить поле из коллекции |
| Создать связи (O2O, O2M, M2O, M2M, M2A) |
| Проанализировать схему с сопоставлением связей |
| Проверить схему и связи |
| Проанализировать связи между коллекциями |
| Прочитать полный или частичный снимок модели данных |
| Сравнить снимок с текущей схемой ( |
| Применить diff (требуется |
Управление потоками
Tool | Description |
| Получить все потоки с необязательной фильтрацией |
| Получить конкретный поток по ID |
| Создать новый поток автоматизации |
| Обновить существующий поток |
| Удалить поток |
| Запустить поток вручную |
| Получить операции потока |
Управление пользователями
Tool | Description |
| Получить всех пользователей с фильтрацией |
| Получить конкретного пользователя по ID |
Управление файлами
Tool | Description |
| Получить файлы с фильтрацией и пагинацией |
| Импортировать CSV/JSON в одну коллекцию или сразу в несколько |
Диагностика
Tool | Description |
| Диагностировать проблемы с доступом к коллекции |
| Обновить кэш коллекции |
| Проверить недавно созданные коллекции |
Поиск
Tool | Description |
| Найти инструменты, соответствующие описанию задачи |
Аннотации безопасности инструментов
Каждый инструмент снабжён аннотациями MCP, чтобы клиент мог отличить операции чтения от операций записи до вызова: 17 имеют readOnlyHint: true, 6 явно имеют destructiveHint: false (аддитивные — создают), а 11 имеют destructiveHint: true (удаления, перезаписывающие обновления, apply_schema, import_data, trigger_flow).
Обратите внимание, что destructiveHint по умолчанию равен true в спецификации MCP, поэтому аддитивные инструменты устанавливают его в false, а не опускают.
Безопасное удаление элементов
Начиная с Directus 12.3.0, delete_items никогда не прибегает к удалению всего:
ids: [...]удаляет указанные элементы.query: {...}удаляет всё, что соответствует запросу.Передача обоих параметров отклоняется.
Если не передано ни одного, ничего не удаляется и запрос не отправляется.
Чтобы удалить все элементы коллекции, запросите это явно:
{ "collection": "articles", "query": { "limit": -1 }, "confirm": true }Примеры использования
"List all collections in my Directus instance"
"Create a new collection called 'blog_posts' with title, content, and published fields"
"Get all items from the 'products' collection where status is 'published'"
"Create a new flow that triggers on item creation in the 'orders' collection"
"Analyze the schema of the 'users' collection including relationships"Устранение неполадок
MCP-сервер не подключается
Убедитесь, что Directus запущен: ваш экземпляр Directus должен быть доступен по настроенному URL
Проверьте права токена: API-токен должен иметь соответствующие права для операций, которые вы хотите выполнять
Перезапустите IDE: после изменения конфигурации MCP полностью перезапустите вашу IDE
Проверьте журналы: поищите ошибки, связанные с MCP, в консоли разработчика вашей IDE
Ошибки прав доступа
Убедитесь, что ваш Directus-токен имеет необходимые права:
Токен администратора для полного доступа
Или настройте права конкретной роли для коллекций, к которым вам нужен доступ
Тайм-аут подключения
Если вы используете удалённый экземпляр Directus:
Проверьте, что URL корректен и доступен
Проверьте настройки брандмауэра и сети
Убедитесь, что CORS правильно настроен в Directus
Разработка
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
# Run server
npm start
# Type check
npm run typecheck
# Lint
npm run lintТестирование
Проект включает наборы модульных, интеграционных и сквозных тестов (vitest). Пороги покрытия (95% операторов/строк/функций/веток) обязательны — при значениях ниже них тестовый прогон завершается неудачей.
# Unit + integration tests
npm test
# With coverage report (coverage/ — text, html, lcov, json-summary)
npm run test:coverage
# End-to-end: builds, then spawns the real server over stdio against a mock Directus
npm run test:e2e
# Everything
npm run test:all
# Refresh the README coverage badges from the last coverage run
npm run badgesЖивая проверка на реальном Directus
tests/live/demo.mjs прогоняет все 34 инструмента на реальном экземпляре через stdio. Он намеренно вынесен за пределы npm test — ему нужны учётные данные и доступный сервер, поэтому это ручная проверка, а не CI-проверка.
# Read-only + guard phases (touches nothing)
ENV_FILE=.env.mdbaudio npm run test:live
# Also create, mutate and drop a scratch mcp_demo_<stamp> collection
ENV_FILE=.env.mdbaudio npm run test:live -- --write
# Additionally exercise apply_schema, confined to that scratch collection
ENV_FILE=.env.mdbaudio npm run test:live -- --write --apply-schemaУчётные данные читаются из ENV_FILE (по умолчанию .env.mdbaudio), поэтому они никогда не проходят через историю оболочки. Результаты сообщаются по каждому инструменту как pass / refused-by-instance / fail, что отделяет «этот сервер сломан» от «этот экземпляр отказал». --apply-schema применяет diff в режиме merge, который даёт строго аддитивный diff, поэтому он может лишь заново создать временную коллекцию — он не может удалить ничего, что уже существовало. Очистка выполняется, даже если более ранний этап завершился неудачей.
Сквозной набор тестов использует официальный клиент MCP SDK (StdioClientTransport) для запуска dist/index.js как подпроцесса, общающегося с внутрипроцессным моком Directus на эфемерном порту — не требуется ни реальный экземпляр Directus, ни доступ к сети.
Участие в разработке
Вклад приветствуется! Пожалуйста, не стесняйтесь отправлять Pull Request.
Сделайте форк репозитория
Создайте ветку для вашей функции (
git checkout -b feature/amazing-feature)Зафиксируйте изменения (
git commit -m 'Add some amazing feature')Отправьте ветку в репозиторий (
git push origin feature/amazing-feature)Откройте Pull Request
Лицензия
MIT © Jorge Domingues Nunes
Ссылки
Maintenance
Related MCP Servers
- FlicenseBqualityFmaintenanceA Node.js server that enables AI Clients to interact with the Directus CMS API through the Model Context Protocol, allowing for management of collections, items, files, users, and system information.1824
- FlicenseNot gradedqualityNot gradedmaintenanceEnables comprehensive management of Storyblok CMS through natural language interactions. Supports story creation and publishing, asset management, component schema updates, release workflows, and content discovery across all major Storyblok APIs.10
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact directly with Strapi v5 CMS content through full CRUD operations, media uploads, and content type exploration using Strapi's Document Service API.2011MIT
- AlicenseAqualityCmaintenanceEnables comprehensive management of Directus instances through tools for schema manipulation, content CRUD operations, and dashboard management. It allows AI assistants to programmatically interact with collections, fields, relations, and workflow automation using the official Directus SDK.2040MIT
Related MCP Connectors
Manage Appwrite projects, databases, auth, storage, functions, and messaging; search Appwrite docs
AI-powered design and management for Webflow Sites
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/staminna/mcp-server-claude'
If you have feedback or need assistance with the MCP directory API, please join our Discord server