Workflow MCP — Claude Code MCP server: workflows and setup
Run Claude-compatible JavaScript workflows as Codex jobs inside Docker. The standalone setup suits projects that can discard container state when a run ends.
claude mcp add --env OPENAI_API_KEY=<OPENAI_API_KEY> --env WORKFLOW_MCP_CONCURRENCY=<WORKFLOW_MCP_CONCURRENCY> --transport stdio standalone -- docker run -i --rm -e OPENAI_API_KEY -e WORKFLOW_MCP_CONCURRENCY docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855What Workflow MCP does
Workflow MCP exposes Claude-compatible JavaScript workflow definitions as Codex-backed jobs over MCP. Docker provides the runtime and process isolation. In the standalone setup, the container runs with --rm, so its state goes away when the container exits. Jobs that need state to survive a run require a different lifecycle.
The setup needs Docker plus values for OPENAI_API_KEY and WORKFLOW_MCP_CONCURRENCY. For Claude Code, the install command starts the image pinned by digest; the provided configurations also cover Codex, Cursor, GitHub Copilot, and Gemini CLI. With this container mode, task state does not persist after the container stops.
What it helps with
- run JavaScript workflows through Codex
- send an agent a workflow task over MCP
- execute a workflow inside Docker
- set workflow concurrency through an environment variable
Example prompts for the agent
- Run the JavaScript workflow on these inputs.
- Execute this workflow through Codex in Docker.
- Send this task to the MCP server and return the result.
How to install Workflow MCP
Platform CLI
claude mcp add --env OPENAI_API_KEY=<OPENAI_API_KEY> --env WORKFLOW_MCP_CONCURRENCY=<WORKFLOW_MCP_CONCURRENCY> --transport stdio standalone -- docker run -i --rm -e OPENAI_API_KEY -e WORKFLOW_MCP_CONCURRENCY docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855Replace <…> with your own values
Platform CLI
codex mcp add standalone --env OPENAI_API_KEY=<OPENAI_API_KEY> --env WORKFLOW_MCP_CONCURRENCY=<WORKFLOW_MCP_CONCURRENCY> -- docker run -i --rm -e OPENAI_API_KEY -e WORKFLOW_MCP_CONCURRENCY docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855Replace <…> with your own values
Config file
{
"mcpServers": {
"standalone": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPENAI_API_KEY",
"-e",
"WORKFLOW_MCP_CONCURRENCY",
"docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"WORKFLOW_MCP_CONCURRENCY": "<WORKFLOW_MCP_CONCURRENCY>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"standalone": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPENAI_API_KEY",
"-e",
"WORKFLOW_MCP_CONCURRENCY",
"docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"WORKFLOW_MCP_CONCURRENCY": "<WORKFLOW_MCP_CONCURRENCY>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e OPENAI_API_KEY=<OPENAI_API_KEY> -e WORKFLOW_MCP_CONCURRENCY=<WORKFLOW_MCP_CONCURRENCY> standalone docker run -i --rm -e OPENAI_API_KEY -e WORKFLOW_MCP_CONCURRENCY docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855Replace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Workflow MCP
How do I install Workflow MCP in Claude Code?
Add it with `claude mcp add --env OPENAI_API_KEY=<OPENAI_API_KEY> --env WORKFLOW_MCP_CONCURRENCY=<WORKFLOW_MCP_CONCURRENCY> --transport stdio standalone -- docker run -i --rm -e OPENAI_API_KEY -e WORKFLOW_MCP_CONCURRENCY docker.io/juliusolsson/workflow-mcp@sha256:4b6889f9e78d0208e6d1d343ba23d0c5d092b1a1513a73c9c85deb2d00ab5855`. Docker and values for both environment variables are needed.
What does Workflow MCP do?
It makes Claude-compatible JavaScript workflows available as Codex-backed MCP jobs, with Docker providing the runtime.
Does task state persist after the container exits?
In standalone mode, the container uses --rm, so its state is discarded when it exits.