updateItem
Modify an existing item in a Directus collection by specifying the item’s ID and updated data. Enables precise updates within the MCP server for CMS management.
Instructions
Update an existing item in a collection
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| data | Yes | Updated item data | |
| id | Yes | Item ID | |
| token | No | Authentication token (default from config) | |
| url | No | Directus API URL (default from config) |
Implementation Reference
- index.ts:651-671 (handler)The handler for the 'updateItem' tool. It extracts parameters, constructs the Directus API endpoint for updating an item, sends a PATCH request using axios, and returns the response as JSON text content.case "updateItem": { const token = toolArgs.token || CONFIG.DIRECTUS_ACCESS_TOKEN; const collection = toolArgs.collection as string; const id = toolArgs.id as string | number; const data = toolArgs.data as Record<string, any>; const response = await axios.patch( `${url}/items/${collection}/${id}`, data, { headers: buildHeaders(token) } ); return { content: [ { type: "text", text: JSON.stringify(response.data, null, 2) } ] }; }
- index.ts:170-199 (schema)The schema definition for the 'updateItem' tool, including name, description, and input schema as returned by the listTools handler.{ name: "updateItem", description: "Update an existing item in a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, id: { type: "string", description: "Item ID" }, data: { type: "object", description: "Updated item data" } }, required: ["collection", "id", "data"] } },
- index.ts:85-513 (registration)The listTools request handler where all tools, including 'updateItem', are registered by being listed in the tools array.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "getItems", description: "Get items from a collection in Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: ["collection"] } }, { name: "getItem", description: "Get a single item from a collection by ID", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, id: { type: "string", description: "Item ID" }, query: { type: "object", description: "Query parameters (optional)" } }, required: ["collection", "id"] } }, { name: "createItem", description: "Create a new item in a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, data: { type: "object", description: "Item data" } }, required: ["collection", "data"] } }, { name: "updateItem", description: "Update an existing item in a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, id: { type: "string", description: "Item ID" }, data: { type: "object", description: "Updated item data" } }, required: ["collection", "id", "data"] } }, { name: "deleteItem", description: "Delete an item from a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" }, id: { type: "string", description: "Item ID" } }, required: ["collection", "id"] } }, { name: "getSystemInfo", description: "Get system information from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, endpoint: { type: "string", description: "System endpoint (e.g. 'health', 'info', 'activity')" } }, required: ["endpoint"] } }, { name: "getCollections", description: "Get all collection schemas from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" } }, required: [] } }, { name: "login", description: "Login to Directus and get an access token", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, email: { type: "string", description: "User email (default from config)" }, password: { type: "string", description: "User password (default from config)" } }, required: [] } }, { name: "getActivity", description: "Get activity logs from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: [] } }, { name: "getFields", description: "Get fields for a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name" } }, required: ["collection"] } }, { name: "getRelations", description: "Get relations for a collection", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, collection: { type: "string", description: "Collection name (optional)" } }, required: [] } }, { name: "getFiles", description: "Get files from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: [] } }, { name: "uploadFile", description: "Upload a file to Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, fileUrl: { type: "string", description: "URL of the file to upload (either fileUrl or fileData must be provided)" }, fileData: { type: "string", description: "Base64 encoded file data (either fileUrl or fileData must be provided)" }, fileName: { type: "string", description: "Name of the file" }, mimeType: { type: "string", description: "MIME type of the file" }, storage: { type: "string", description: "Storage location (optional)" }, title: { type: "string", description: "File title (optional)" } }, required: ["fileName"] } }, { name: "getUsers", description: "Get users from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: [] } }, { name: "getCurrentUser", description: "Get the current user info", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" } }, required: [] } }, { name: "getRoles", description: "Get roles from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: [] } }, { name: "getPermissions", description: "Get permissions from Directus", inputSchema: { type: "object", properties: { url: { type: "string", description: "Directus API URL (default from config)" }, token: { type: "string", description: "Authentication token (default from config)" }, query: { type: "object", description: "Query parameters like filter, sort, limit, etc. (optional)" } }, required: [] } }, { name: "getConfig", description: "Get current configuration information (without secrets)", inputSchema: { type: "object", properties: {}, required: [] } } ] }; });