Velog GraphQL API를 노출하는 stdio 기반 MCP 서버 (Claude Code/Desktop용)
Server has 5 tools with explicit schemas and descriptions. Naming follows verb_noun convention (velog_whoami, velog_list_posts, velog_get_post, velog_write_post, velog_edit_post). Descriptions are present and actionable (avg ~100 chars). Schemas use Zod with type constraints. However, parameter descriptions are sparse or missing for several fields (e.g., 'tag' in velog_list_posts has no description; 'meta' object lacks field documentation). Output schemas are not documented, callers must infer structure from GraphQL queries. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. No tool annotations (readOnlyHint/destructiveHint). Write tools (velog_write_post, velog_edit_post) lack confirmation/dry-run patterns despite modifying state.
Edit an existing Velog post. Requires VELOG_ACCESS_TOKEN. All required fields must be re-sent (use velog_get_post first if needed).
Fetch a single post. Provide either `id`, or both `username` and `url_slug`.
List posts. Filter by username and/or tag. Use `cursor` (last seen post id) for pagination.
Show the authenticated Velog user (requires VELOG_ACCESS_TOKEN). Use this to verify the token is valid.
Publish (or save as draft) a new Velog post. Requires VELOG_ACCESS_TOKEN.
Output schemas not documented. Callers cannot infer response structure; must reverse-engineer from GraphQL queries. LLMs cannot plan downstream tool calls without knowing what fields are returned.
Parameter descriptions missing or incomplete. 'tag' in velog_list_posts has no description. 'meta' object in write/edit tools lacks field documentation. LLMs cannot infer what these parameters control.
Write tools (velog_write_post, velog_edit_post) lack confirmation or dry-run patterns. Agents can publish posts without preview or confirmation, risking accidental publication of incomplete content.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Clients cannot distinguish safe read-only tools from destructive ones. velog_write_post and velog_edit_post should be marked destructive.
Error handling provides no recovery guidance. Errors are raw GraphQL messages or HTTP status codes. LLMs cannot determine if errors are retryable, user-fixable, or fatal.