MCP server for VeloCMS — draft, publish, and manage your blog (posts, media, comments, members) from Claude Code, Claude Desktop, Cursor, or any MCP client.
VeloCMS MCP server demonstrates solid definition quality with 19 well-structured tools covering blog/CMS operations. All tools have clear verb-noun naming (list_posts, create_post, delete_media, etc.) and descriptions ranging 50-150 chars. Input schemas are comprehensive with proper Zod validation, enums for constrained values (status, tier), and pagination support. However, output schemas are not explicitly documented in the source, only inferred from type imports. Error handling is minimal; no recovery guidance or actionable error messages visible. Tool descriptions lack dependency hints (e.g., 'call list_posts first to get post IDs'). Destructive operations (delete_post, delete_media, delete_comment) lack confirmation/dry-run patterns.
Approve a comment (set status to approved). PATCH /api/v1/comments/{id}
Create a new post. POST /api/v1/posts
Delete a comment. DELETE /api/v1/comments/{id}
Delete a media file. DELETE /api/v1/media/{id}
Delete a post. DELETE /api/v1/posts/{id}
Get a single comment by ID. GET /api/v1/comments/{id}
Get a single media file by ID. GET /api/v1/media/{id}
Get a single member by ID. GET /api/v1/members/{id}
Output schemas not documented in source code. Type imports (PostFull, PaginatedList, etc.) exist but no explicit schema definitions visible for LLM consumption. Agents cannot plan downstream calls without knowing response structure.
Destructive operations (delete_post, delete_media, delete_comment) lack confirmation or dry-run patterns. No recovery guidance in error messages. Agents can permanently delete content without safeguards.
Tool descriptions lack dependency hints and multi-step guidance. E.g., create_post does not mention that slug auto-generation requires title, or that publish_post is preferred over status=published for clarity. Agents must infer composition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Get a single post by ID. GET /api/v1/posts/{id}
Get site settings. GET /api/v1/settings
List comments with optional filtering by status and post ID. GET /api/v1/comments
List media files with pagination. GET /api/v1/media
List members with optional filtering by tier and status. GET /api/v1/members
List posts with optional filtering by status and pagination. GET /api/v1/posts
Publish a post (set status to published). PATCH /api/v1/posts/{id}
Reject a comment (set status to spam). PATCH /api/v1/comments/{id}
Unpublish a post (set status to draft). PATCH /api/v1/posts/{id}
Update an existing post. PATCH /api/v1/posts/{id}
Update site settings. PATCH /api/v1/settings
No error handling guidance visible in source. Handlers do not return actionable error messages (e.g., 'Post not found. Try list_posts() to find valid IDs.'). Raw API errors will confuse agents.
API key and site URL are environment variables (VELOCMS_API_KEY, VELOCMS_SITE_URL) but no documentation visible on how agents should be configured with these secrets. Risk of exposure if credentials leak into logs.