PR #244 merged: feat: expose dockerfile application creation
Closes #235
What
Adds a create_dockerfile action to the application tool, wiring the previously-unreachable createApplicationDockerfile client method (src/lib/coolify-client.ts). Validation mirrors create_dockerimage's style exactly: project_uuid, server_uuid, dockerfile required, with a clear Error: ... required message.
Scope narrowed from the original ask — dockerfile only
#235 asked for both create_dockerfile and create_dockercompose. This PR ships only the dockerfile half, deliberately. While verifying param shapes against current coollabsio/coolify main (fetched openapi.yaml + cross-checked routes/api.php / ApplicationsController.php; no live instance touched), I found:
POST /applications/dockerfile— present and unchanged. Required:project_uuid,server_uuid,dockerfile(upstream's spec formally listsenvironment_name/environment_uuidtoo, but its own description says "at least one of" — same non-enforced pattern this repo already uses for the othercreate_*actions, so I matched that precedent). Client types match upstream.POST /applications/dockercomposeno longer exists upstream. Deprecated in7c0cb2f5(Jan 2026), removed entirely in6ee75cfain favour ofPOST /services, and the removal shipped inv4.1.0— so acreate_dockercomposeaction would 404 on every current Coolify release. Shipping a dead tool action is worse than not exposing it, so it's dropped from this PR.
The compose half of #235 is therefore impossible upstream; keeping Closes #235 since dockerfile was the actionable half and the removal is now documented (the valuable part).
What happened to the compose surface instead
CoolifyClient#createApplicationDockerComposeis left in place but marked@deprecatedwith a pointer to the upstream removal and tocreateService(deleting it is out of scope; the client-vs-spec drift work in #247 may flag it — noting here rather than touching #247's allowlist from this branch).CLAUDE.md's "Coolify API Gotchas" documents the removal: compose apps are created via theservicetool /POST /services; do not wire the deprecated client method up as a tool action.README.mdpoints compose users at theservicetool.
Changes
src/lib/mcp-server.ts— newcreate_dockerfileaction + optionaldockerfilezod field.src/lib/coolify-client.ts—@deprecatedJSDoc oncreateApplicationDockerCompose(no behaviour change).src/__tests__/mcp-server.test.ts— happy-path + required-param-error tests forcreate_dockerfile, plus the client method-existence check per repo convention.README.md/CLAUDE.md— as above.
Not touched: package.json version, CHANGELOG.md, docs/coolify-openapi.yaml (#236 covers the spec refresh separately).
Test plan
Rebased onto current origin/main (post #240/#242/#248). All checked by real exit codes:
-
npm test— exit 0, 369 passed -
npm run lint— exit 0 (4 pre-existingno-explicit-anywarnings, unrelated) -
npx prettier --check .— exit 0 -
npm run build— exit 0
🤖 Generated with Claude Code