Skip to main content
Glama

@staminna/directus-mcp-server

MCP-сервер для Directus 12 — элементы, коллекции, файлы, потоки, пользователи и инструменты схемы. TypeScript, полностью типизирован.

npm version License: MIT CI

Покрытие тестами

Операторы

Ветви

Функции

Строки

Statements

Branches

Functions

Lines

Бейджи покрытия генерируются из 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

Переменные окружения

Переменная

Обязательна

Описание

DIRECTUS_URL

Да

URL вашего экземпляра Directus (например, http://localhost:8065)

DIRECTUS_TOKEN

Да

Статический API-токен с соответствующими правами

DIRECTUS_PROMPTS_COLLECTION_ENABLED

Нет

Включить коллекцию AI-промптов (true/false)

DIRECTUS_PROMPTS_COLLECTION

Нет

Название коллекции для AI-промптов (по умолчанию: ai_prompts)

DIRECTUS_RESOURCES_ENABLED

Нет

Включить функцию ресурсов (true/false)

DIRECTUS_RESOURCES_EXCLUDE_SYSTEM

Нет

Исключить системные коллекции из ресурсов (true/false)

NODE_ENV

Нет

Режим окружения (development/production)

DIRECTUS_TIMEOUT

Нет

Таймаут запроса в мс (по умолчанию: 30000)

DIRECTUS_RETRIES

Нет

Количество повторов при сетевых ошибках, 5xx и 429 (по умолчанию: 3)

DIRECTUS_RETRY_DELAY

Нет

Базовая задержка backoff в мс (по умолчанию: 1000)

DIRECTUS_MAX_RETRY_DELAY

Нет

Максимальная задержка backoff в мс (по умолчанию: 10000)

DIRECTUS_IMPORT_MAX_FILE_SIZE

Нет

Верхний предел размера импорта на стороне клиента в байтах, аналогичный Directus IMPORT_MAX_FILE_SIZE (по умолчанию: 50 MB)

LOG_LEVEL

Нет

DEBUG/INFO/WARN/ERROR (по умолчанию: INFO). Журналы выводятся в stderr; stdout зарезервирован для MCP

TLS / клиентские сертификаты

Задайте эти переменные, когда экземпляр Directus использует частный центр сертификации (CA) или требует клиентский сертификат. Каждая из переменных CA/CERT/KEY/PFX принимает либо путь к файлу, либо само содержимое PEM/DER.

Переменная

Описание

DIRECTUS_HTTPS_CA

Центр сертификации

DIRECTUS_HTTPS_CERT

Клиентский сертификат

DIRECTUS_HTTPS_KEY

Приватный ключ клиента

DIRECTUS_HTTPS_PFX

Пакет PKCS#12 (альтернатива сертификату/ключу)

DIRECTUS_HTTPS_PASSPHRASE

Парольная фраза для ключа или PFX

DIRECTUS_HTTPS_REJECT_UNAUTHORIZED

false для приёма самоподписанных сертификатов

DIRECTUS_HTTPS_SERVERNAME

Переопределение имени сервера 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

  1. Откройте настройки Cursor: Cmd+, (macOS) или Ctrl+, (Windows/Linux)

  2. Найдите «MCP» или перейдите в Features → MCP Servers

  3. Нажмите «Edit in settings.json»

  4. Добавьте следующую конфигурацию:

{
  "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"
      }
    }
  }
}
  1. Сохраните файл и перезапустите Cursor


🌊 Windsurf

  1. Откройте настройки Windsurf: Cmd+, (macOS) или Ctrl+, (Windows/Linux)

  2. Найдите «MCP Servers»

  3. Нажмите «Edit in settings.json»

  4. Добавьте следующую конфигурацию:

{
  "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"
      }
    }
  }
}
  1. Сохраните файл

  2. Полностью закройте Windsurf (Cmd+Q или Ctrl+Q)

  3. Снова откройте Windsurf и подождите ~10 секунд, пока MCP инициализируется


🤖 Claude Desktop

  1. Найдите файл конфигурации Claude Desktop:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  2. Создайте или отредактируйте файл конфигурации:

{
  "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"
      }
    }
  }
}
  1. Сохраните файл и перезапустите Claude Desktop


🔮 Claude.ai (веб-версия с MCP)

Для веб-интерфейса Claude.ai с поддержкой MCP:

  1. Перейдите в настройки Claude.ai

  2. Найдите раздел конфигурации MCP

  3. Добавьте новый 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 и определённых расширений браузера.


Доступные инструменты

Управление коллекциями

Инструмент

Описание

list_collections

Список всех коллекций в Directus

get_collection_schema

Получить схему для конкретной коллекции

get_collection_items

Получить элементы коллекции с фильтрацией

create_collection

Создать новую коллекцию

delete_collection

Удалить коллекцию (требуется confirm)

create_item

Создать новый элемент в коллекции

update_item

Обновить существующий элемент, опционально в черновик version

delete_items

Удалить элементы по ids или по query (см. примечание ниже)

bulk_operations

Выполнить массовое создание, обновление, удаление

Схема и поля

Tool

Description

create_field

Создать новое поле в коллекции

update_field

Обновить существующее поле

delete_field

Удалить поле из коллекции

create_relationship

Создать связи (O2O, O2M, M2O, M2M, M2A)

analyze_collection_schema

Проанализировать схему с сопоставлением связей

validate_collection_schema

Проверить схему и связи

analyze_relationships

Проанализировать связи между коллекциями

get_schema_snapshot

Прочитать полный или частичный снимок модели данных

diff_schema

Сравнить снимок с текущей схемой (merge или mirror). Directus отклоняет тела запросов объёмом более ~96 КБ, поэтому для любой крупной модели данных передавайте частичный снимок из get_schema_snapshot с include_collections — см. DIRECTUS_V12_BREAKING_CHANGES.md

apply_schema

Применить diff (требуется confirm)

Управление потоками

Tool

Description

get_flows

Получить все потоки с необязательной фильтрацией

get_flow

Получить конкретный поток по ID

create_flow

Создать новый поток автоматизации

update_flow

Обновить существующий поток

delete_flow

Удалить поток

trigger_flow

Запустить поток вручную

get_operations

Получить операции потока

Управление пользователями

Tool

Description

get_users

Получить всех пользователей с фильтрацией

get_user

Получить конкретного пользователя по ID

Управление файлами

Tool

Description

get_files

Получить файлы с фильтрацией и пагинацией

import_data

Импортировать CSV/JSON в одну коллекцию или сразу в несколько

Диагностика

Tool

Description

diagnose_collection_access

Диагностировать проблемы с доступом к коллекции

refresh_collection_cache

Обновить кэш коллекции

validate_collection_creation

Проверить недавно созданные коллекции

Поиск

Tool

Description

search_tools

Найти инструменты, соответствующие описанию задачи

Аннотации безопасности инструментов

Каждый инструмент снабжён аннотациями 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-сервер не подключается

  1. Убедитесь, что Directus запущен: ваш экземпляр Directus должен быть доступен по настроенному URL

  2. Проверьте права токена: API-токен должен иметь соответствующие права для операций, которые вы хотите выполнять

  3. Перезапустите IDE: после изменения конфигурации MCP полностью перезапустите вашу IDE

  4. Проверьте журналы: поищите ошибки, связанные с 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.

  1. Сделайте форк репозитория

  2. Создайте ветку для вашей функции (git checkout -b feature/amazing-feature)

  3. Зафиксируйте изменения (git commit -m 'Add some amazing feature')

  4. Отправьте ветку в репозиторий (git push origin feature/amazing-feature)

  5. Откройте Pull Request


Лицензия

MIT © Jorge Domingues Nunes


Ссылки

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    20
    40
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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