Review: Build MCP server wrapping recraft-sdk

review-1973-2026-08-01 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Feature Flag -- "none" (appropriate for an MCP server, no UI surface)
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:logo-branding label -- present on board item
  • [ ] story note MISSING -- [SCOPE] "logo-branding" not found in project-platform-playbook user-stories section. Only "playbook-docs" exists. Create user story entry on project-platform-playbook.
  • [x] arch:mcp label -- MCP server component
  • [x] arch note verified -- arch-mcp note exists in pal-e-docs (Architecture: MCP Server)
  • [x] Forgejo issue -- ldraney/recraft-mcp#1, open

File Targets

All 6 file targets are files to CREATE (greenfield project). The recraft-mcp repo exists but is empty (only README.md).
  • [x] src/recraft_mcp/__init__.py -- to create, repo exists
  • [x] src/recraft_mcp/server.py -- to create, repo exists
  • [x] tests/test_server.py -- to create, repo exists
  • [x] pyproject.toml -- to create, repo exists
  • [x] .woodpecker.yml -- to create, repo exists
  • [x] CLAUDE.md -- to create, repo exists
  • [x] ~/secrets/recraft/credentials.env -- verified, exists (81 bytes)
  • [x] ~/recraft-sdk/openapi.json -- verified, exists (33k, API spec available)

Repo Placement

OK -- Forgejo issue filed on ldraney/recraft-mcp, all file targets are in ldraney/recraft-mcp. Single repo, no cross-repo work needed.

Dependencies

  • depends:recraft-sdk -- Board item #1971 ("Build pytest SDK proving the Recraft API") is in backlog. recraft-sdk repo exists locally but has NOT been built yet (no src/, no pyproject.toml, only openapi.json). This is a true blocking dependency -- the issue body explicitly states "This ticket depends on recraft-sdk being built and published first." The dependency is correctly documented on both the board label and the issue body.
  • minio-mcp (#1972) -- Sibling ticket, not a dependency. Both are part of story:logo-branding. minio-sdk already exists and is built.

Acceptance Criteria

5 AC items, all specific and verifiable by an agent:
  • [x] "MCP server exposes tools: generate_vector, generate_raster, vectorize, upscale, remove_background, list_styles" -- concrete tool list, agent can verify registration
  • [x] "Server runs via stdio transport" -- standard MCP pattern, testable
  • [x] "Tests verify tool registration and basic generation against live Recraft API" -- clear test scope
  • [x] "Registered in ~/.mcp.json and usable in Claude Code sessions" -- verifiable
  • [x] "Woodpecker CI pipeline runs on push" -- verifiable
Test commands provided: RECRAFT_API_KEY=... pytest tests/ -v

Blast Radius

Low. This is a new MCP server addition -- no existing servers are modified. The ~/.mcp.json registration is additive (new "recraft" entry alongside 11 existing servers). No downstream consumers exist yet. The companion minio-mcp is independent and does not share code.

Decomposition Assessment

  • 6 file targets in 1 repo -- under the >3 files across >2 repos threshold
  • 5 acceptance criteria -- at threshold, not over (>5 requires decomposition)
  • Greenfield project with well-established MCP server patterns (11 existing servers as reference)
  • Estimated agent work: ~5 minutes -- at threshold but acceptable given single-repo greenfield nature
No decomposition needed.

Recommendation

  • [SCOPE] Create user story entry "logo-branding" on project-platform-playbook user-stories section. The story:logo-branding label is used by 3 board items (#1971, #1972, #1973) but no corresponding user story exists on the project page.