Review: Build MCP server wrapping recraft-sdk (re-review)

review-1973-2026-08-01-r2 Review

review approved

Verdict: APPROVED

Re-review of board item #1973. Previous review (review-1973-2026-08-01) flagged one issue: missing logo-branding user story on project-platform-playbook. That issue has been fixed.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Feature Flag -- "none" (appropriate for 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
  • [x] story note verified -- found in project-platform-playbook user-stories section (role: Platform operator, goal: Generate and manage brand assets through Claude Code MCP tools)
  • [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. 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
  • Estimated agent work: ~5 minutes -- at threshold but acceptable given single-repo greenfield nature
No decomposition needed.

Recommendation

No action needed. Previous review's [SCOPE] recommendation (create user story entry "logo-branding" on project-platform-playbook) has been completed. All traceability legs verified.