Skip to main content
Glama
0langa

devflows-mcp

by 0langa

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.

One workflow so far: the release ritual of a repository. Run the quality gates, draft the release notes, decide whether a human even needs to look, tag, publish. This repository cuts its own releases 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.

Four things here are the reason this is a process and not a shell script:

  • The approval policy is data, not code. A DMN decision table decides whether a release needs a human at all. Change the rules without touching a line of Python.

  • An AI drafts the release notes, and a human owns them. The draft appears in the approval form, and whatever is approved is what gets published.

  • A failed publish undoes its own tag. BPMN compensation, so a broken release leaves nothing behind.

  • A forgotten approval ends itself. A boundary timer rejects a release nobody answered.

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 --> notes["Draft release notes<br/><i>devflows.notes</i>"]
    notes --> policy["Decide policy<br/><i>DMN release-policy</i>"]
    policy --> q2{Approval required?}
    q2 -- "policy says ship" --> tag
    q2 -- "ask a human" --> approve["Approve release<br/><i>user task</i>"]
    approve -. timer .-> expired((Approval expired))
    approve --> q3{Approved?}
    q3 -- stop --> rejected((Release rejected))
    q3 -- ship --> tag["Tag<br/><i>devflows.tag</i>"]
    tag --> publish["Publish<br/><i>devflows.publish</i>"]
    publish -. "publish failed" .-> undo["Delete the tag<br/><i>devflows.untag</i>"]
    undo --> pubfail((Publish failed))
    publish --> released((Released))

The rectangles with a topic name are external tasks. "Decide policy" is a business rule task that calls the DMN decision. "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.

The approval policy

processes/release-policy.dmn is a decision table with a FIRST hit policy:

release_kind

gates_passed

Approval required

Reason

any

false

true

Gates failed, a human has to look

patch

true

false

Patch release with green gates, approved by policy

any

any

true

Minor or major release, a human decides

release_kind comes from comparing the candidate version against the newest tag in the repository. With no previous tag it is major, so a first release always asks a human. Edit the table in Camunda Modeler and redeploy; no code changes.

On the auto-approved path approved is never set, because no human said yes. The history records approval_required=false and policy_reason instead.

Release notes

draft_notes collects the commits since the previous tag and asks the local claude CLI to write markdown release notes. The draft lands in the approval form as an editable field, and whatever is approved becomes the body of the GitHub Release.

If claude is not installed, or the call fails, the notes fall back to the plain commit list. notes_source records which happened. Nothing leaves your machine except through the CLI you already run, and this project holds no API key of its own.

When a step fails

Two different failures, handled two different ways.

A step that might work next time, such as a network blip or gh not being logged in, is reported to the engine as an external task failure with retries left. The worker backs off 5 s, 15 s, then 60 s, and only then does an incident appear.

A step that will not work next time, such as a publish that was refused, is reported as a BPMN error with the code PUBLISH_FAILED. An error boundary event catches it, throws compensation, and the undo_tag handler deletes the tag locally and on the remote. No incident is raised, because nothing is broken; the release simply did not happen.

What it looks like

The process stops and waits for a person. The approval carries the gate results and the drafted release notes, and it belongs to the camunda-admin group rather than to one named user, so whoever is around can pick it up.

The Approve release task in the CIB seven Tasklist, with the approval checkbox, an optional field to replace the drafted release notes, and a comment field

Afterwards the whole run is in the history: which gates ran, what the policy decided, who approved, what was tagged and where it was published.

A completed Release ritual instance in CIB seven, showing the BPMN diagram with the gates, the policy decision, the approval and its timer, and the tag step with its compensation handler

Quickstart

docker compose -f engine/docker-compose.yml up -d
uv sync
uv run pytest -m "not integration" && uv run ruff check .

Deploy the process and the decision table (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" -F "release-policy.dmn=@processes/release-policy.dmn"

Check that everything a release needs is in place:

uv run devflows-doctor

Start the worker and leave it running in its own terminal:

uv run devflows-worker

Start 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, or docs/DEMO.de.md auf Deutsch.

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} --notes-file {notes_file}

Key

Meaning

gates

Ordered list of quality gates. Each needs a name and a shell command in run. The first non-zero exit code ends the release.

tag.format

How the tag name is built. {version} is the only placeholder. Optional; defaults to v{version}.

publish.run

The shell command that publishes the release. Placeholders: {version}, and {notes_file} for the path of a file holding the approved release notes.

Use {notes_file} to publish the notes the human approved. Leave it out and use --generate-notes if you would rather GitHub wrote them.

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

engine_status

Whether the engine answers, its version, its engine names

deploy_process

bpmn_path (optional)

Deployment id and the deployed process definition keys

list_processes

Deployed process definitions with key, version and id

start_release

repo_path, version, dry_run (default true)

Process instance id and a link to it in the web UI

get_run

process_instance_id

State, current activity, open tasks, the gate report, all variables

list_gates

repo_path

The gates that repository would run. Does not touch the engine

approve_gate

task_id, approve, comment

Confirmation that the approval task was completed

list_runs

limit

Recent runs with their state, newest first

retry_run

process_instance_id

Gives a run stuck on an incident another attempt

cancel_run

process_instance_id, reason

Stops a run; the reason stays in the history

doctor

repo_path (optional)

Engine, process, decision and config in one call

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.json starts devflows-mcp with uv run.

  • plugin/skills/release-with-devflows/SKILL.md tells 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.md provides /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

DEVFLOWS_ENGINE_URL

http://localhost:8080/engine-rest

worker, MCP server

DEVFLOWS_WORKER_ID

devflows-worker-<hostname>

worker

DEVFLOWS_LOCK_MS

300000

worker

DEVFLOWS_POLL_MS

10000

worker

DEVFLOWS_BPMN_PATH

found next to the package

MCP server

Variables you can set when starting a run:

Variable

Default

Meaning

repo_path

Absolute path of the repository to release

version

Version without the tag prefix, for example 0.2.0

dry_run

When true, nothing is tagged or published

approval_timeout

PT24H

ISO 8601 duration before an unanswered approval expires

A short approval_timeout such as PT2M makes the timer easy to demonstrate.

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:8080 accepts 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.yaml of 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

engine/

Docker Compose for a local CIB seven 2.2.0 engine

processes/

release.bpmn, the release ritual, and release-policy.dmn, the approval policy

core/

devflows_core: engine REST client, config parsing, shell step runner

workers/

devflows_worker: the external task worker

mcp/

devflows_mcp: the stdio MCP server

plugin/

The Claude Code plugin

tests/

Unit tests, plus tests/integration/ which needs a live engine

docs/

The demo script, and the design and plan documents

Requirements

  • Docker Desktop, for the engine

  • Python 3.12 and uv

  • git, and gh authenticated, for the tag and publish steps

  • The claude CLI, optionally, for AI-drafted release notes

  • Camunda Modeler 5.x if you want to edit the diagrams (optional). Open processes/release.bpmn and processes/release-policy.dmn as Camunda 7 files.

License

Apache License 2.0. See LICENSE.

Available Tools

11 tools
approve_gateB

Approve or reject a waiting release. This is the human decision in the process.

ParametersJSON Schema
NameRequiredDescriptionDefault
approveYes
commentNo
task_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure, and it falls short. It does not reveal what side effects approving or rejecting might have (e.g., triggering a deployment, sending notifications, or whether the action is reversible). The only extra behavioral hint is that this is the 'human decision,' which is thin. For a mutation tool affecting a release, significantly more transparency is expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short and front-loaded with the action. The second sentence adds a modicum of context without unnecessary verbosity. However, the phrase 'in the process' is slightly vague and could be more informative without adding bulk, keeping it just shy of perfect conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool is relatively simple (3 flat parameters, no nested objects, and an output schema exists), the description omits any mention of prerequisites, side effects, or the consequence of choosing 'approve' versus 'reject.' For a tool that likely gates the rest of a pipeline, an agent would need more context to use it correctly, such as whether the release proceeds immediately or whether a comment is required in certain cases. It is adequate for very simple usages but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate by clarifying parameter usage, but it mentions none of the three parameters (task_id, approve, comment). While the parameter names are self-explanatory, the description adds no meaning beyond the schema, and this is a clear miss given the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Approve or reject') and the resource ('a waiting release'), which unambiguously identifies the tool's purpose. It adds a contextual clue ('the human decision in the process') that positions it as the manual approval step, distinguishing it from sibling tools like deploy_process or start_release, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a release is waiting for approval, but it does not provide explicit guidance on when to choose this tool over its siblings, nor does it mention any prerequisites or conditions. The phrase 'in the process' hints at a pipeline context, but there's no explicit when-not-to-use or alternative routing, so this is only implicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_runB

Stop a running release. The reason is kept in the engine history.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNocancelled through the devflows MCP server
process_instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the burden is on the description to disclose side effects. It does reveal that the reason is stored in engine history, which is useful. However, it does not explain whether the cancellation is irreversible, what happens to the underlying process, how long the operation takes, or what error conditions may occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, focused sentences: the first states the operating directly, and the second adds a meaningful side effect. Every word earns its place, and there is no filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple cancellation tool with two parameters and an output schema, the description is adequate for basic invocation—it identifies the action and one key behavioral effect. However, it omits practical caveats such as whether the run must be active, whether cancellation can be undone, and what happens to related resources, making it not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for its two parameters, and the description adds no extra parameter-level detail. 'process_instance_id' and 'reason' are named but never explained in context, so the agent receives no additional guidance beyond raw field names and the default value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and object—'Stop a running release'—which makes the tool's action unambiguous and distinguishes it from sibling tools like start_release and retry_run. However, the description refers to a 'release' while the tool name says 'run', and it does not explicitly name any sibling to distinguish from, so it stops short of full clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the agent needs to stop a running release, but it gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as retry_run or conditions like 'only works on active runs', leaving the selection logic to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_processC

Deploy the release process to the engine. Deploying it twice is harmless.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpmn_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states that deploying twice is harmless, which is a useful idempotency trait. However, it does not disclose side effects, required permissions, or what 'deploying' entails beyond the name, leaving significant behavioral context unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The primary action is stated first, followed by a single relevant caveat about idempotency. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description lacks key operational context for a deployment action: prerequisites, effects on existing processes, environment assumptions, and how the bpmn_path parameter influences the deployment. The idempotency note is the only behavioral extra.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter (bpmn_path) with 0% description coverage, and the description does not mention it at all. The optional nature and default null are not explained, leaving an agent without any understanding of why or how to use the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Deploy' and names a resource ('the release process') and destination ('the engine'), making the core action clear. It does not explicitly distinguish itself from siblings like start_release, but the artifact named ('release process') differentiates it enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no mention of when to use this tool versus alternatives such as start_release or list_processes. The only usage hint is the idempotency note, which implies it can be run repeatedly, but no explicit when/when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doctorC

Check whether a release can run: engine, process, decision, config.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Check' suggests a read-only diagnostic, but the description does not state whether it has side effects, whether it requires a release to be staged, what happens on failure, or how comprehensive its checks are.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. Key information—'check whether release can run'—is front-loaded, and the scoped areas are listed compactly. It is appropriately terse, though cryptically so.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of several similar operational siblings, the description should say how this diagnostic differs and what the agent needs to provide (like repo_path). Because the description lacks usage context and side-effect transparency, it feels incomplete for safe tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention repo_path at all. With a single optional parameter, the description needed to explain what the path refers to and how it affects the check, but it provides no parameter meaning beyond the bare schema title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Check whether a release can run', and indicates scope ('engine, process, decision, config'). This distinguishes it from operational siblings like start_release or cancel_run, though the domain-specific list is somewhat ambiguous without additional context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus alternatives such as start_release or get_run. The phrase 'whether a release can run' implies a pre-flight diagnostic, but this is left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

engine_statusA

Check that the local CIB seven engine is reachable and report its version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral disclosure burden. It communicates a read-only check and version report, but does not explicitly state that no state is modified, nor does it mention error behavior or connectivity caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, information-dense sentence covers the action, resource, and expected output without any filler words. It is well front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are no parameters and an output schema exists, the description sufficiently covers what the agent needs to invoke this tool correctly. It would benefit from a brief note about whether any environment context is required, but for a simple status check this is minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema leaves nothing unexplained. The description's reference to checking reachability and version provides enough semantic context for a parameterless invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific verb ('check') and resource ('local CIB seven engine'), and states the additional output of reporting its version. This distinguishes it from sibling tools like deploy_process or approve_gate, which target different actions and resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is clear enough to imply when this tool is appropriate: when an agent needs to verify engine reachability or discover its version. However, it does not explicitly state when not to use it or mention any alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_runB

Report the state, the current activity, the gate report and the variables of a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
process_instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions what it reports (state, activity, gate report, variables) but does not disclose whether it is read-only, requires specific permissions, or what happens if the run does not exist. It also does not mention any side effects or performance implications. For a read-type tool, this is a partial disclosure but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and lists the key content of the report. However, it is slightly terse and could benefit from a bit more detail on the scope, but for a simple tool it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are no annotations, the description must carry the full burden. It identifies the tool's purpose and output components but omits critical context such as whether this is a read-only operation, error conditions for missing/invalid process_instance_id, or when this tool should be used relative to siblings like 'list_processes' or 'engine_status'. An agent may not know if this requires a running process or if it returns historical data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage; the parameter 'process_instance_id' has no description. The tool description implies this is the run identifier, but does not explain format, source, or how to obtain it. With only one parameter and no schema documentation, the description should at least provide guidance on what constitutes a valid process_instance_id; it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports the state, current activity, gate report, and variables of a run. This distinctly separates it from siblings like list_processes (listing) or start_release (starting), and it specifies a precise resource ('a run') with a clear action (report). The verb 'report' is specific and the content is enumerated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used to fetch details about a run, but it does not explicitly state when to use it versus alternatives. It doesn't mention that it's for a specific run identified by process_instance_id, nor does it exclude scenarios like checking engine status or listing gates. The usage is implied but not formally guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_gatesB

List the gates a release of this repository would run. Does not touch the engine.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations provided, the description carries the full disclosure burden. It does disclose the single most important behavioral trait — that this tool has no effect on the engine state (read-only in effect), which is significant given the mutation-heavy sibling set. It does not go further (e.g., scope of repo_path, failure behavior), but the key side-effect signal is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The first identifies the resource and the non-executing nature; the second reinforces the no-side-effects constraint, which is load-bearing given the sibling mutations. Every word earns its place and the key constraint is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no description, and the no-engine-touch disclosure covers risk context. The main completeness gap is the undefined repo_path parameter, which an agent needs to resolve before calling. For a list-style tool this is otherwise fairly complete, but the undocumented parameter keeps it from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% — the only parameter, repo_path, has just a title 'Repo Path' with no schema description. The tool description adds nothing about the parameter either: it never explains what repo_path should be (absolute path, existing repo on disk, branch/commit reference). For a single-parameter tool with zero schema coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'List' and specific resource 'the gates a release of this repository would run.' The phrase 'would run' signals this is prospective inspection, not triggering a release. The closing 'Does not touch the engine' works with sibling names (engine_status, deploy_process, start_release) to differentiate it from engine-affecting tools, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Does not touch the engine' gives an implicit when-not: use this when you only want to inspect gates without side effects, rather than for the mutation siblings (start_release, deploy_process, approve_gate). But no explicit alternative is named and no clear 'use X instead when...' guidance is given. The context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_processesA

List the process definitions the engine currently knows about.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It is extremely minimal, implying a read-only operation but not explicitly stating so, nor mentioning any side effects, ordering, or snapshot semantics. For a simple list tool this might be acceptable, but it leaves ambiguity about whether results are live or cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero wasted words. It conveys the core purpose in a clear, efficient manner appropriate for a trivial parameterless tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero parameters and an output schema, the description is minimally sufficient for a list operation. However, it lacks any hint at output ordering, pagination, or whether results reflect persisted or in-memory state, which could confuse an agent expecting a specific format or volume.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the input schema is empty, which raises the baseline. The description adds no parameter semantics because none are needed; it correctly implies the tool requires no arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('list') and resource ('process definitions') and adds the scope ('the engine currently knows about'). This clearly distinguishes it from siblings like list_gates and engine_status, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to prefer this tool over alternatives, nor any exclusions or prerequisites. The phrase 'currently knows about' implies a snapshot of engine state, but without explicit comparisons to list_gates or deploy_process, an agent may not know when this is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_runsB

List the most recent release runs, newest first, with their state.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral transparency. It discloses useful behavior: results are 'newest first' and include 'state,' which implies a read-only listing operation. It does not mention pagination, authorization, or any further behavioral constraints, but for a simple list tool the disclosed ordering and payload content add real value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that front-loads the primary action and includes key details without filler. Every word contributes meaning, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter listing tool with an output schema, the description covers the essential parts: resource, ordering, and result content. The main gap is that limit semantics are neither described nor compensated for to the schema, but this is a minor omission given the simplicity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, limit, and schema description coverage is 0%. The description does not explain how limit behaves, such as whether it caps the maximum number of returned runs or what the default implies. The default value of 10 and the parameter name provide some meaning, but the description does not compensate for the missing parameter schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List the most recent release runs, newest first, with their state.' This clearly communicates the core purpose and includes ordering and output scope. However, it does not explicitly contrast this tool with siblings such as get_run or list_processes, so differentiation must be inferred from names rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: an agent would use this tool to see recent release runs and their states. There is no explicit guidance about when not to use it, nor any mention of alternatives like get_run for a single run, so the guidance is present only at a minimal level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_runC

Give a run that is stuck on an incident another attempt.

ParametersJSON Schema
NameRequiredDescriptionDefault
process_instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It reveals the basic outcome—starting another attempt—but does not disclose side effects, whether the previous attempt is affected, permissions needed, or whether the operation is reversible. For a tool that mutates run state, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words. It is front-loaded with the core idea before the qualifier. It sacrifices richness for brevity, but as a pure structural matter it is concise and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter and an output schema, the tool is not highly complex, but a retry action has important ambient behavior. The description does not explain when retrying is allowed, what happens to the existing run, or whether it can be safely invoked. This leaves an agent without enough context to confidently invoke the tool in a nontrivial incident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description never mentions process_instance_id. It only refers to 'a run,' which loosely implies the parameter identifies the run to retry, but there is no explicit mapping. Since the description must compensate for the schema's silence and does not, parameter semantics are weak.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action—give a run another attempt—and qualifies the target as one 'stuck on an incident.' This distinguishes it from list/get/cancel operations at a basic level, though it does not name a sibling tool explicitly. The phrasing is slightly awkward but still conveys that this is a retry operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool ('a run that is stuck on an incident') but gives no explicit guidance about when not to use it, such as for runs that failed normally or are already canceled. It also does not mention alternatives like cancel_run or get_run. Context is present but chosen exclusions are not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_releaseA

Start a release run for a repository.

Runs the gates, drafts release notes, then asks the policy whether a human
is needed. With dry_run true, which is the default, nothing is tagged or
published. approval_timeout is an ISO 8601 duration after which an
unanswered approval expires.
ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
versionYes
repo_pathYes
approval_timeoutNoPT24H

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description provides useful behavioral detail: it runs gates, drafts release notes, asks policy whether a human is needed, and highlights that dry_run prevents tagging or publishing. It also explains the approval_timeout expiration. This gives the agent a realistic picture of side effects, though it could say more about what happens when dry_run is false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the main purpose is stated in the first sentence, followed by the essential behavioral and timing details. Every sentence earns its place without unnecessary bloat, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and the tool has siblings, the description covers the main workflow steps, dry-run safety, and timeout semantics. The main gap is not clearly explaining the exact behavior and requirements for non-dry-run releases, especially around tagging and publishing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no parameter descriptions, so the description must compensate. It explicitly explains dry_run and approval_timeout meaning and the default behavior, but repo_path and version receive no specific explanation beyond the overall wording 'for a repository' and the word 'version'. This leaves room for confusion about exact argument formats or expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Start a release run for a repository' and then outlines the key stages: run the gates, draft release notes, and ask the policy about human approval. It is specific and clearly distinguishable from siblings like list_gates and approve_gate, though it does not explicitly name any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the entry point for a release and that a human approval gate may be needed afterwards, but it does not explicitly explain when to use this tool instead of related ones such as retry_run, cancel_run, or approve_gate. The intended workflow context is inferable, but not stated directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.2.0
    • Addedcancel_run
    • Addeddoctor
    • Addedlist_runs
    • Addedretry_run
    • Changedstart_release1 field changed
      • addedInput schema / properties / approval_timeout
        Added value: +{
        +  "default": "PT24H",
        +  "title": "Approval Timeout",
        +  "type": "string"
        +}
  2. 7 tool updatesv0.1.0
    • First observedapprove_gate
    • First observeddeploy_process
    • First observedengine_status
    • First observedget_run
    • First observedlist_gates
    • First observedlist_processes
    • First observedstart_release

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: engine health, process deployment/listing, release run lifecycle, gate approval, and diagnostics. There is no meaningful overlap or risk of selecting the wrong tool for a given intent.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (deploy_process, list_processes, start_release, approve_gate, cancel_run). The deviations are minor: engine_status reverses the order and doctor is a bare noun, but the names remain intuitive and predictable.

Tool Count5/5

Eleven tools is well-scoped for a release automation server. Each tool covers a distinct aspect of the release workflow without unnecessary bloat or noticeable duplication.

Completeness4/5

The tool surface covers the core release lifecycle well: checking the engine, deploying processes, starting runs, monitoring runs, approving gates, retrying, canceling, and running diagnostics. There is no explicit process update/delete, but that is a minor gap since the workflow does not clearly require it.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and external systems to programmatically trigger and monitor Jenkins jobs, retrieve build status and logs via MCP standards.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes 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.
    10
    MIT

Latest Blog Posts

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