directus
Version: 1.1.0
Script: scripts/directus-mcp-server.mjs
Environment Variables
Collections
list-collections
List all custom Directus collections (excludes system tables starting withdirectus_).
Parameters: None
Returns: Array of collection objects with name and note fields.
Example:
get-collection-schema
Get field schema for a Directus collection. Parameters:collection(string, required): Collection name
field, type, note, and required properties.
Example:
Items CRUD
read-items
Read items from a Directus collection with optional filtering, sorting, and pagination. Parameters:collection(string, required): Collection namefilter(object, optional): Filter object (e.g.{"status":{"_eq":"active"}})fields(string, optional): Comma-separated field nameslimit(number, optional): Max items (default 100)offset(number, optional): Items to skipsort(string, optional): Sort field (-field for desc)
read-item
Read a single item by ID from a Directus collection. Parameters:collection(string, required): Collection nameid(string, required): Item ID (UUID)fields(string, optional): Comma-separated field names
create-item
Create a new item in a Directus collection. Parameters:collection(string, required): Collection nameitem(object, required): Item data as a JSON object
- Includes tier-based rate limiting and quota checks
- Validates user subscription tier and feature access
- Checks usage limits for the current billing cycle
- Throws
tier_limiterrors if quota exceeded
update-item
Update an existing item in a Directus collection. Parameters:collection(string, required): Collection nameid(string, required): Item ID (UUID)item(object, required): Fields to update as a JSON object
delete-item
Delete an item from a Directus collection. Parameters:collection(string, required): Collection nameid(string, required): Item ID (UUID)
search-items
Full-text search across items in a collection. Parameters:collection(string, required): Collection namequery(string, required): Search queryfields(string, optional): Fields to returnlimit(number, optional): Max results
Users
get-me
Get the current authenticated Directus user (admin) with full profile fields. Parameters:fields(string, optional): Comma-separated fields (default:*,role.name)
list-users
List Directus users with optional filtering (admin operation). Parameters:filter(object, optional): Filter object (e.g.{"role":{"name":{"_eq":"Creator"}}})fields(string, optional): Comma-separated fields (default:id,email,display_name,role.name,status,primary_platform,subscription_tier)limit(number, optional): Max results (default 50)offset(number, optional): Items to skip
get-user
Get a single Directus user by ID. Parameters:id(string, required): User UUIDfields(string, optional): Comma-separated fields (default:*,role.name)
update-user
Update a Directus user by ID (admin operation). Useupdate-me for self-updates.
Parameters:
id(string, required): User UUIDdata(object, required): Fields to update as a JSON object
create-user
Create a new Directus user (admin operation). Parameters:data(object, required): User fields as a JSON object — minimum:email,password,role(UUID)
Files
list-files
List files stored in Directus with optional filtering. Parameters:filter(object, optional): Filter object (e.g.{"folder":{"_eq":"uuid"}})fields(string, optional): Fields to return (default:id,filename_download,title,type,filesize,uploaded_on,folder)limit(number, optional): Max results (default 50)offset(number, optional): Items to skip
get-file
Get metadata for a single file by ID. Returns download URL and metadata. Parameters:id(string, required): File UUID
asset_url field for downloading.
Example:
Flows
list-flows
List all Directus Flows available for triggering. Returns id, name, status, trigger. Parameters: None Returns: Array of flow objects. Example Response:trigger-flow
Trigger a Directus Flow by UUID. Uselist-flows to discover available flows.
Known flows:
591a8845- genie-memory-sync7506f825- genie-taxonomy-tag50a4dc14- genie-post-createa4f083fa- genie-message-generate
flow_uuid(string, required): Flow UUIDpayload(object, optional): Optional JSON payload object
Rate Limiting & Quotas
Thecreate-item tool includes tier-based rate limiting when creating media_jobs items:
- Feature Access Check: Validates if the operation is available on the user’s subscription tier
- Quota Check: Counts usage in the current billing cycle and enforces limits
- Error Handling: Throws descriptive
tier_limit:errors when limits are exceeded
rateLimiter.js utility and query the user_usage_counts collection.
Tier limits example:
- Starter: 3 AI-assisted posts, 0 clip operations
- Creator: 30 AI-assisted posts, 10 clip operations
- Pro: 150 AI-assisted posts, 50 clip operations
- Studio: Unlimited operations
