update_drawing
Modify an existing Excalidraw drawing by specifying its ID and providing updated content. Ideal for refining or editing visual diagrams dynamically.
Instructions
Update an Excalidraw drawing by ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| id | Yes |
Implementation Reference
- src/operations/drawings.ts:102-128 (handler)Core handler function implementing the logic to update a drawing's content and metadata by ID.export async function updateDrawing(id: string, content: string): Promise<{ id: string, name: string }> { await ensureStorageDir(); // Get the drawing file path const filePath = path.join(STORAGE_DIR, `${id}.json`); const metadataPath = path.join(STORAGE_DIR, `${id}.meta.json`); try { // Check if the drawing exists await fs.access(filePath); // Read the metadata const metadataStr = await fs.readFile(metadataPath, 'utf-8'); const metadata = JSON.parse(metadataStr); // Update the drawing content await fs.writeFile(filePath, content, 'utf-8'); // Update the metadata metadata.updatedAt = new Date().toISOString(); await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8'); return { id, name: metadata.name }; } catch (error) { throw new ExcalidrawResourceNotFoundError(`Drawing with ID ${id} not found`); } }
- index.ts:129-135 (handler)MCP CallToolRequest handler case for update_drawing, validating input and calling the core updateDrawing function.case "update_drawing": { const args = drawings.UpdateDrawingSchema.parse(request.params.arguments); const result = await drawings.updateDrawing(args.id, args.content); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; }
- src/operations/drawings.ts:31-34 (schema)Zod schema defining input for update_drawing: id and content.export const UpdateDrawingSchema = z.object({ id: z.string().min(1), content: z.string().min(1), });
- index.ts:72-76 (registration)Tool registration in the ListTools response, including name, description, and schema.{ name: "update_drawing", description: "Update an Excalidraw drawing by ID", inputSchema: zodToJsonSchema(drawings.UpdateDrawingSchema), },