MCP server providing access to ImageKit functionalities for image management, including file upload, retrieval, deletion, and folder operations.
ImageKit MCP has 7 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, output schemas are undocumented, tools return free-text strings or unstructured dicts, forcing LLMs to parse responses. Error handling is minimal (generic try-catch with string messages). No parameter validation, no enum constraints, no pagination support. Naming is clear (verb_noun pattern: upload_file, delete_file, get_file_details), but descriptions lack actionable context (e.g., 'Upload a new file' doesn't explain when to use it vs alternatives). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 4 destructive tools. Composition is reasonable, tools are single-purpose, but output chaining is broken: upload_file returns 'file id: {upload.file_id}' as a string, not a structured field, so downstream tools cannot reliably extract it.
Create a new folder in ImageKit.io
Delete a file from ImageKit.io
Delete multiple files from ImageKit.io
Delete a folder in ImageKit.io
Get details of a file from ImageKit.io
Move a folder in ImageKit.io
Upload a new file on Imagekit.io
Output schemas undocumented. All tools return free-text strings or unstructured dicts (e.g., get_file_details returns a dict with no schema declaration). LLMs cannot reliably extract fields for downstream tool calls. upload_file embeds file_id in a string ('file id: {upload.file_id}') instead of a structured field, breaking tool chaining.
Destructive tools (delete_file, delete_files, delete_folder) lack confirmation/dry-run support and have no tool annotations (destructiveHint). Agents can permanently delete files without safeguards. No error guidance for recovery.
Parameter descriptions lack actionable constraints. 'folder_path' in upload_file has no format guidance (e.g., 'must start with /', no trailing slash). 'tags' array has no length/item limits. LLMs cannot validate inputs before calling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling is generic. All tools catch exceptions and return 'Error <action>: {str(e)}'. No categorization (retryable vs fatal), no recovery guidance, no invalid-value hints. LLMs cannot self-correct or decide next steps.
Tool descriptions are too brief (40-60 chars) and lack context. 'Delete a file from ImageKit.io' doesn't explain when to use delete_file vs delete_files, or that deletion is permanent. No dependency hints (e.g., 'Requires file_id from upload_file').