An MCP server for your Strapi CMS that provides access to content types and entries through the MCP protocol
Strapi MCP has 11 tools with visible definitions in src/index.ts. All tools have verb_noun naming (list_, get_, create_, update_, delete_, publish_, unpublish_, upload_). Descriptions are present and non-trivial (ranging 50-150 chars), meeting baseline minimums. However, critical gaps emerge: (1) Parameter descriptions are sparse or missing for complex objects like 'data' and 'filters', LLMs cannot infer what fields to pass; (2) No output schemas are documented, agents cannot know what fields to expect from responses; (3) Error handling provides no recovery guidance, errors are returned but lack actionable next steps; (4) Security concerns: file paths in upload_media_from_path expose path traversal risk without documented validation. (5) The 'filters' parameter on list_entries references 'Strapi filter syntax' but does not document that syntax, forcing agents to guess at format. Naming is consistent and action-oriented (good), but schema and error documentation severely lag production standards.
Create a new entry in a Strapi content type
Delete an entry from a Strapi content type
Get detailed information about a specific content type in Strapi
Get a specific entry from a content type in Strapi
List all content types available in Strapi
List entries of a specific content type in Strapi
Publish a draft entry in Strapi
No output schemas documented for any tool. Tools return data but agents cannot know field structure, types, or what to extract for downstream calls. Violates pattern:tool and pattern:response-shaper.
Parameter 'data' in create_entry and update_entry has type 'object' with no schema or field documentation. LLMs cannot determine what fields or structure to pass. Violates pattern:tool-description and pattern:constrained-input.
Parameter 'filters' on list_entries references 'Strapi filter syntax' but does not define what that syntax is. LLMs must guess the format (JSON? query string? special operators?). Violates pattern:tool-description.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 27 | - | v1 |
Unpublish a published entry in Strapi
Update an existing entry in a Strapi content type
Upload a media file to Strapi (base64 encoded, max 1MB)
Upload a media file to Strapi from a file path (max 10MB)
No error handling guidance. Tools return errors but do not tell LLMs what to do next (retry? ask user? use alternative tool?). Violates pattern:recovery-guide and pattern:error-classification.
upload_media_from_path accepts a file path parameter with no validation. Risk of path traversal attacks if LLM constructs malicious paths. Violates pattern:tool-gateway and pattern:secret-injection.
No pagination guidance in tool descriptions. list_entries accepts 'limit' and 'offset' but does not state max limit or advise agents on pagination strategy. Violates pattern:paginated-result.
No distinction between required and optional parameters clearly marked in tool descriptions. LLMs may omit optional params expecting defaults, but if defaults differ from expectations, silent failures occur. Violates pattern:tool-description.
delete_entry has no confirmation mechanism. Agents can invoke permanent deletion without a dry-run or approval step. Violates pattern:confirmation-request.
Parameter descriptions are generic or incomplete. E.g., 'The data for the new entry' does not explain what fields are required, allowed, or their types. Violates pattern:tool-description.