MCP server for managing a Dev.to (Forem) account — browse, read, publish, and edit articles. Also includes the original standalone publish.js CLI.
Server has 7 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~100 chars). All tools have input schemas with Zod validation and type definitions. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or when to use them. Output schemas are undocumented; LLMs cannot predict response structure. Error handling is minimal (generic 'Error: {message}' responses). No tool annotations (readOnlyHint/destructiveHint). Composition is sound (single responsibility per tool), but parameter documentation falls short of production baseline (94% of A+ tools have full param descriptions; this server ~40%).
Create a new article, either as a public post or a private draft.
Fetch a single article's full content by its numeric id.
Get the threaded comments for an article.
List the authenticated account's own articles.
Get the authenticated account's profile info.
Browse the public Dev.to feed, optionally filtered by tag, author, or top-of-period.
Parameter descriptions are missing or minimal. 'page', 'perPage', 'id', 'articleId', 'state' lack guidance on format, constraints, or when to use them. LLMs cannot infer whether 'id' accepts numeric or string, or what 'state' enum values mean.
Output schemas are not documented. Tools return JSON but LLMs have no schema to predict response structure (fields, types, nesting). This forces LLMs to guess and risks parsing errors.
Error handling is generic. All errors return 'Error: {message}' with no recovery guidance. LLMs cannot determine if an error is retryable, user-fixable, or fatal. No actionable error messages (e.g., 'Invalid status: got X, must be one of Y').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Edit an existing article you own. Only the fields you provide are changed.
No tool annotations. Destructive tools (devto_create_article, devto_update_article) lack destructiveHint. Read-only tools lack readOnlyHint. LLMs cannot distinguish safe from risky operations without explicit hints.
devto_get_profile has empty inputSchema ({}). While valid, the description should clarify that no parameters are needed and what the response contains (user profile fields).