camunda-mcp
Provides tools for modeling BPMN 2.0 processes for Camunda 7, including creating diagrams, adding elements (tasks, gateways, events), defining flows, configuring Camunda extensions (e.g., implementation types, forms, listeners, IO mapping), and managing pools/lanes. Generates XML compatible with Camunda Modeler and bpmn-js.
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., "@camunda-mcpCreate a new BPMN diagram with a start event and a user task."
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.
camunda-mcp
MCP server (Model Context Protocol) com ferramentas para modelar BPMN Camunda 7, em Node.js, independente do Camunda Modeler.
Construído sobre bpmn-moddle e
camunda-bpmn-moddle, os mesmos
módulos do projeto bpmn-js — então o XML gerado é 100% compatível com o
Camunda Modeler / bpmn-js. Layout/DI é regenerado pelo
bpmn-auto-layout.
Namespace de extensão usada: http://camunda.org/schema/1.0/bpmn (Camunda 7).
Instalação
git clone https://github.com/fssou/camunda-mcp.git
cd camunda-mcp
npm install
npm run buildUso em clientes MCP
Claude Desktop / Cursor / Continue (stdio)
Adicione no mcpServers do seu cliente:
{
"mcpServers": {
"camunda7": {
"command": "node",
"args": ["/caminho/absoluto/para/camunda-mcp/dist/index.js"]
}
}
}Após salvar, o cliente lista todas as ferramentas (~40) prefixadas com camunda7.
Execução standalone (debug)
node dist/index.js
# imprime no stderr: "@fssou/camunda-mcp v0.1.0 ready on stdio"
# espera mensagens MCP JSON-RPC em stdinFerramentas disponíveis
Ciclo de vida do diagrama
Tool | Descrição |
| Cria um novo diagrama em memória. Retorna |
| Lista diagramas abertos. |
| Descarta um diagrama. |
| Importa um XML BPMN 2.0. |
| Importa um arquivo |
| Serializa para XML. |
| Grava |
| Regenera |
| Lista erros/warnings estruturais. |
Elementos BPMN
Tool | Descrição | |||||
| StartEvent (`none | message | timer | signal | error | conditional`). |
| EndEvent (`none | message | signal | error | escalation | terminate`). |
| IntermediateCatchEvent / IntermediateThrowEvent. | |||||
| BoundaryEvent anexado a uma atividade (interrupting ou não). | |||||
| Task / UserTask / ServiceTask / SendTask / ReceiveTask / ScriptTask / BusinessRuleTask / ManualTask. | |||||
| Exclusive / Parallel / Inclusive / EventBased / Complex. | |||||
| SubProcess / Transaction / AdHocSubProcess (event sub-process via | |||||
| CallActivity ( | |||||
| Anotação de texto. | |||||
| Remove o elemento e os fluxos incidentes. | |||||
| Lista elementos (filtros por tipo / parentId). | |||||
| Inspeciona um elemento e suas extensões Camunda. | |||||
| Mutações genéricas. |
Fluxos
Tool | Descrição |
| Cria um |
| Cria um |
| Cria uma |
| Marca um fluxo como default de um gateway/atividade. |
| Define um |
Pools e lanes
Tool | Descrição |
| Cria um Participant (pool) — promove o diagrama para |
| Cria uma Lane em um Participant. |
| Adiciona um flow node a uma lane ( |
Extensões Camunda 7
Tool | Descrição | |||||
|
| |||||
|
| |||||
|
| |||||
|
| |||||
|
| |||||
| Substitui | |||||
| Anexa | end | take | |||
| Anexa | assignment | complete | delete | update | timeout`) a um UserTask. |
| Configura | |||||
|
| |||||
| Cria/reusa | |||||
| Cria/reusa | |||||
|
|
Exemplo de fluxo
Após o cliente MCP chamar as ferramentas, o XML produzido tem o seguinte formato (Camunda 7 plenamente válido):
<bpmn:definitions xmlns:bpmn="..." xmlns:camunda="http://camunda.org/schema/1.0/bpmn">
<bpmn:process id="Approval_Process" isExecutable="true"
camunda:versionTag="1.0.0" camunda:historyTimeToLive="P30D">
<bpmn:startEvent id="Event_..." name="Pedido recebido" />
<bpmn:userTask id="Activity_..." name="Aprovar pedido"
camunda:candidateGroups="gerentes" camunda:dueDate="P1D"
camunda:asyncBefore="true" camunda:exclusive="true"
camunda:formKey="embedded:app:forms/approve.html" />
<bpmn:exclusiveGateway id="Gateway_..." name="Aprovado?" />
<bpmn:serviceTask id="Activity_..." name="Faturar"
camunda:delegateExpression="${invoiceService}">
<bpmn:extensionElements>
<camunda:inputOutput>
<camunda:inputParameter name="orderId">${execution.getVariable("orderId")}</camunda:inputParameter>
<camunda:outputParameter name="invoiceId">${result.id}</camunda:outputParameter>
</camunda:inputOutput>
<camunda:properties>
<camunda:property name="retries" value="5" />
</camunda:properties>
<camunda:executionListener event="end" expression="${endListener.notify(execution)}" />
</bpmn:extensionElements>
</bpmn:serviceTask>
<bpmn:endEvent id="Event_..." name="Pedido recusado">
<bpmn:errorEventDefinition errorRef="Error_PEDIDO_RECUSADO" />
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_..." name="Aprovado" sourceRef="Gateway_..." targetRef="Activity_...">
<bpmn:conditionExpression>${approved}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
</bpmn:process>
<bpmn:error id="Error_PEDIDO_RECUSADO" name="Pedido recusado" errorCode="PEDIDO_RECUSADO" />
</bpmn:definitions>Use auto_layout para regenerar bpmndi:BPMNDiagram quando o diagrama mudar.
Desenvolvimento
npm install
npm run build # compila TS → dist/
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm test # vitest (smoke end-to-end)
npm run dev # roda src/index.ts via tsx (stdio)A árvore do projeto:
src/
├── index.ts # stdio entrypoint
├── server.ts # buildServer() — factory de McpServer
├── store.ts # DiagramStore + DiagramSession
├── bpmn/
│ ├── moddle.ts # cria BpmnModdle com camunda 7 descriptor
│ ├── builder.ts # BpmnBuilder — adiciona/remove elementos
│ ├── camunda.ts # helpers de extensões Camunda 7
│ ├── layout.ts # wrapper de bpmn-auto-layout
│ ├── validate.ts # validateDiagram()
│ ├── xml.ts # fromXML / toXML / indexById
│ └── types.ts # uniões discriminadas de tipos BPMN
└── tools/
├── registry.ts # schemas Zod por tool
└── handlers.ts # dispatch(toolName, params)
test/
└── smoke.test.ts # end-to-end: criação → exportação → auto-layout → round-tripLicença
MIT — veja LICENSE.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/fssou/camunda-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server