devflows-mcp
Provides tools to interact with a Camunda-compatible process engine (CIB seven), enabling management of BPMN process definitions, starting release processes, querying run state, and approving user tasks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@devflows-mcpstart a dry run release for version 0.3.0"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cibseven-devflows
Run your developer workflows as BPMN processes on a local CIB seven engine, and drive them from AI coding agents such as Claude Code through an MCP server.
Version 0.1.0 ships one workflow: the release ritual of a repository. Run the quality gates,
ask a human, tag, publish. This repository cut its own v0.1.0 by running that process on itself.
Why
Cutting a release is a process with a human decision in the middle of it. Normally that process lives in someone's head and in a terminal scrollback. Nothing records that the gates ran, that a person approved, or what was published.
A process engine is exactly the right tool for that shape of problem. CIB seven keeps the state, keeps the history, and knows how to wait for a human. Your machine still does the work, and an AI agent can start a run and watch it, but it cannot skip the approval, because the approval is a step in the process rather than a promise in a prompt.
Related MCP server: jt-mcp-server
Architecture
flowchart LR
agent["Claude Code<br/>(any MCP client)"] -- stdio --> mcpserver["devflows-mcp"]
mcpserver -- REST --> engine["CIB seven engine<br/>Docker, H2, localhost:8080"]
human["You, in the web UI"] -- approve --> engine
engine -- fetchAndLock --> worker["devflows-worker"]
worker -- shell --> repo["your repository<br/>pytest, ruff, git, gh"]The engine never runs a shell command and never touches your repository. It hands out work; the worker on your machine polls for it and does it. That is the standard Camunda 7 external task pattern, and it is what makes it safe to let a process drive a developer machine.
The release process
flowchart LR
start((start)) --> gates["Run gates<br/><i>devflows.gates</i>"]
gates --> q1{Gates passed?}
q1 -- no --> failed((Gates failed))
q1 -- yes --> approve["Approve release<br/><i>user task</i>"]
approve --> q2{Approved?}
q2 -- stop --> rejected((Release rejected))
q2 -- ship --> tag["Tag<br/><i>devflows.tag</i>"]
tag --> publish["Publish<br/><i>devflows.publish</i>"]
publish --> released((Released))The three rectangles with a topic name are external tasks. "Approve release" is a BPMN user task,
so it waits, it survives an engine restart, and it can be answered either in the web UI or through
the approve_gate MCP tool.
dry_run=true runs the gates for real and changes nothing else: no tag, no push, no release.
Quickstart
docker compose -f engine/docker-compose.yml up -duv syncuv run pytest -m "not integration" && uv run ruff check .Deploy the process (once per engine):
curl -s -X POST http://localhost:8080/engine-rest/deployment/create -F "deployment-name=cibseven-devflows" -F "release.bpmn=@processes/release.bpmn"Start the worker and leave it running in its own terminal:
uv run devflows-workerStart a dry release of this repository. Replace repo_path with this repository's absolute path.
Use forward slashes even on Windows (C:/Users/you/repos/cibseven-devflows): they work, and they
save you from fighting your shell over backslash escaping.
curl -s -X POST http://localhost:8080/engine-rest/process-definition/key/devflows-release/start -H "Content-Type: application/json" -d '{"variables":{"repo_path":{"value":"ABSOLUTE/PATH/TO/cibseven-devflows","type":"String"},"version":{"value":"0.2.0","type":"String"},"dry_run":{"value":true,"type":"Boolean"}}}'Then approve it at http://localhost:8080/webapp/#/seven/auth/tasks as demo / demo:
filter My Group Tasks, claim Approve release, tick approve, submit.
In practice you start runs through the MCP server instead of curl. See docs/DEMO.md for the full walkthrough.
devflows.yaml
Each repository describes its own release in a devflows.yaml at its root:
gates:
- name: tests
run: uv run pytest -q
- name: lint
run: uv run ruff check .
tag:
format: "v{version}"
publish:
run: gh release create v{version} --generate-notesKey | Meaning |
| Ordered list of quality gates. Each needs a |
| How the tag name is built. |
| The shell command that publishes the release. |
Unknown top-level keys are ignored, so a newer version of devflows can add steps without breaking an older file.
The MCP tools
devflows-mcp speaks MCP over stdio and works from any MCP client.
Tool | Arguments | Returns |
| — | Whether the engine answers, its version, its engine names |
|
| Deployment id and the deployed process definition keys |
| — | Deployed process definitions with key, version and id |
|
| Process instance id and a link to it in the web UI |
|
| State, current activity, open tasks, the gate report, all variables |
|
| The gates that repository would run. Does not touch the engine |
|
| Confirmation that the approval task was completed |
Every tool returns a dictionary with an ok flag, and an error string when ok is false.
No tool raises, because the caller is a language model that has to explain the failure to a person.
Using it from Claude Code
plugin/ is a Claude Code plugin around the same server:
plugin/.mcp.jsonstartsdevflows-mcpwithuv run.plugin/skills/release-with-devflows/SKILL.mdtells the agent when to use the engine and in what order to call the tools, including the rule that it must stop and ask before approving.plugin/commands/release.mdprovides/devflows:release <version> [--real].
To wire the server into any other MCP client directly:
{
"mcpServers": {
"cibseven-devflows": {
"command": "uv",
"args": ["run", "devflows-mcp"]
}
}
}Configuration
Variable | Default | Used by |
|
| worker, MCP server |
|
| worker |
|
| worker |
|
| worker |
| found next to the package | MCP server |
Security
Two things about this project are deliberate, and both assume it runs on your own machine:
The engine has no authentication. The REST API on
localhost:8080accepts anything that can reach it. Do not expose that port to a network you do not control.The worker runs shell commands. They come from the
devflows.yamlof the repository you asked it to release, they run as you, in that repository, and they are the same commands you would type. Only point it at repositories you trust.
There is no cloud service, no telemetry and no account beyond the GitHub credentials gh already
has.
Repository layout
Directory | What is in it |
| Docker Compose for a local CIB seven 2.2.0 engine |
|
|
|
|
|
|
|
|
| The Claude Code plugin |
| Unit tests, plus |
| The demo script, and the design and plan documents |
Requirements
Docker Desktop, for the engine
Python 3.12 and uv
git, andghauthenticated, for the tag and publish stepsCamunda Modeler 5.x if you want to edit the BPMN diagram (optional). Open
processes/release.bpmnas a Camunda 7 diagram.
License
Apache License 2.0. See LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI coding environments to enforce engineering governance through MCP tools and resources for init, check, route, and review workflows.262MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.25MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents and external systems to programmatically trigger and monitor Jenkins jobs, retrieve build status and logs via MCP standards.
- AlicenseNot gradedqualityAmaintenanceExposes a governed, provenance-grounded autonomous delivery pipeline as an MCP server, enabling AI coding assistants like Claude Code or Codex to initiate requirements-to-PR workflows with human approval gates and full audit.7MIT
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/0langa/cibseven-devflows'
If you have feedback or need assistance with the MCP directory API, please join our Discord server