Review: Build MCP server wrapping recraft-sdk
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/ -vBlast 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.