bizagi-modeler
bizagi-mcp
프로세스 설명을 Bizagi Modeler에서 깨끗하게 열리는 BPMN 2.0 다이어그램으로 바꿔줍니다.
BPMN 2.0 다이어그램을 생성, 읽기, 감사, 미리보기하고 Windows에서 Bizagi Modeler 데스크톱 앱을 구동하는 MCP 서버입니다.

60줄짜리 JSON 스펙에서 생성되었습니다. 위의 모든 좌표는 손으로 배치한 것이 아니라 계산된 것입니다.
왜 존재하는가
Bizagi Modeler에는 스크립팅 API가 없습니다. 지원하는 유일한 통합 경로는 Export / Import 탭을 통한 개방형 BPMN 2.0 XML 형식입니다.
하지만 순진한 생성을 무용지물로 만드는 문제가 있습니다: Bizagi는 파일에 기록된 좌표를 그대로 가져옵니다. 다이어그램을 자동 배치해 주지 않습니다. 지오메트리 없이 구조적으로 완벽한 BPMN 파일을 내보내면 원점에 쌓인 상자 더미로 열립니다.
따라서 이 서버의 어려운 부분은 XML이 아니라 레이아웃입니다.
Related MCP server: MCP-GLSP
하는 일
도구 | 설명 |
| 스펙 형식: 모든 노드 유형, 필드 및 규칙 |
| 설명 → 가져올 준비가 된 |
| 기존 |
|
|
| 폴더를 스캔하여 각 BPMN 파일 요약 |
| BPMN 2.0 규칙 및 모델링 관례에 대한 감사, 각 발견 사항에 대한 수정 방법 포함 |
| SVG로 렌더링 — Bizagi를 열지 않고 결과 확인 |
| 프로세스 문서를 Markdown으로 내보내기(개요 + 감사) |
| 여기에서 Bizagi Modeler를 구동할 수 있는지 여부 |
| Bizagi Modeler 실행, 선택적으로 파일 포함 |
| Export / Import ▸ BPMN 조작 및 정상 반영 여부 확인 |
| 열린 다이어그램에 대해 Export ▸ BPMN 조작 |
처음 여덟 개는 순수 Python으로 작성되어 Bizagi 설치 여부와 관계없이 모든 OS에서 실행됩니다. Windows가 필요한 것은 bizagi_* 도구 네 개뿐입니다.
레이아웃 엔진
레인을 인식하는 계층형 레이아웃이 실행되는 순서는 다음과 같습니다:
사이클 끊기 — 그래프를 레이어링할 수 있도록
최장 경로 레이어링 → 각 노드의 수평 열
(열, 레인)별 무게중심 순서화 → 교차선 감소
적응형 레인 높이 — 각 밴드가 담는 가장 높은 셀에 맞춰 크기 조정
예약 스트립 — 열을 건너뛰는 분기를 담는 레인 상단의 우회 밴드와 루프백을 위한 하단의 채널 스트립
직교 라우팅 — 장애물을 통과하지 않고 주위를 돌아갑니다
라벨 분리를 마지막 패스로
보장하는 것
이것은 바람이 아닙니다. 각 항목은 규칙이 제거되면 실패하는 테스트입니다:
두 셰이프가 겹치지 않음
자신의 끝점이 아닌 셰이프를 통과하는 엣지가 없음
모든 요소가 자신의 풀 안에 위치함
메시지 흐름은 풀 사이의 빈 복도를 따라 흐르며, 풀을 가로질러 수평으로 지나가지 않음
각 메시지 흐름은 그 복도에서 자신만의 라인을 가지며, 복도 크기는 복도를 가로지르는 흐름 수에 따라 결정됩니다 — 그래서 라벨이 쌓이지 않습니다
루프백은 각각 레인 크기가 조정되는 동안 예약된 스트립에서 자신만의 채널을 가짐
열을 건너뛰는 분기는 자신의 레인 안에서, 건너뛰는 활동 위로 우회함
게이트웨이의 분기는 눈에 띄게 다른 지점에서 나가므로 양방향 분기가 단일 화살표로 읽히지 않음
경계 이벤트 흐름은 아래쪽으로 나가며, 호스트 활동을 통해 다시 올라가지 않음
주석과 데이터 저장소는 설명하는 대상 옆에 위치함 — 또는 연결이 없을 때는 캔버스 밖이 아니라 선언된 풀 안에 위치함
어떤 라벨도 다른 라벨이나 셰이프 위에 쓰이지 않음
설계 노트
쉽게 틀리기 쉬운 몇 가지 결정 사항:
라벨의 너비는 텍스트의 너비와 같습니다. 모든 라벨에 평평한 상자를 예약하면 긴 라벨 사이의 충돌이 예약된 상자를 측정하는 어떤 것에도 보이지 않게 됩니다.
예약된 공간은 중앙 정렬에서 제외되어야 합니다. 채널을 위한 공간을 만들기 위해 레인을 키운 다음 그 안의 셰이프를 중앙에 정렬하면 새 공간의 절반이 위쪽 패딩으로 돌아갑니다 — 채널은 결국 사용하기에 너무 얇아집니다.
우회로는 모든 셰이프의 주변이 아니라 셰이프 사이의 틈에 있어야 합니다. 모든 것을 위나 아래로 라우팅하면 선이 풀 밖으로 나가고, 그 선에 도달하는 수직선은 그 과정에서 모든 레인을 가로지릅니다.
데이터 저장소는 여러 활동과 연결될 수 있지만 하나의 옆에만 위치합니다. 연결마다 한 번씩 배치하면 이전 배치가 있던 레인에 구멍이 남습니다.
설치
pip install -e .Windows 데스크톱 도구의 경우:
pip install -e ".[desktop]"Python ≥ 3.10.
Claude에 등록
claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"bizagi-modeler": {
"command": "bizagi-mcp",
"env": {
"BIZAGI_MCP_ROOT": "C:\\Users\\you\\Documents\\Bizagi"
}
}
}
}bizagi-mcp가 PATH에 없으면:
{
"mcpServers": {
"bizagi-modeler": {
"command": "python",
"args": ["-m", "bizagi_mcp.server"],
"env": { "BIZAGI_MCP_ROOT": "C:\\Users\\you\\Documents\\Bizagi" }
}
}
}Claude Code의 경우: claude mcp add bizagi-modeler -- bizagi-mcp
환경 변수
변수 | 설명 |
| 모든 파일 읽기/쓰기를 이 폴더로 제한합니다. 강력히 권장합니다. |
| 자동으로 찾지 못할 때 |
사용법
다이어그램 생성
"휴가 요청을 모델링하세요: 직원이 제출하고, 관리자가 승인 또는 거부하며, HR이 결과를 기록합니다.
D:\Processes\leave.bpmn에 저장하세요."
그런 다음 Bizagi Modeler에서: Export / Import ▸ Import ▸ BPMN.
기존 모델 분석
먼저 Bizagi에서 내보내기를 수행하고(Export / Import ▸ Export ▸ BPMN), 그런 다음:
"
D:\Processes\purchasing.bpmn을 읽고, 설명해 주고, 무엇이 잘못되었는지 알려주세요."
예시
examples/purchase_request.json(스펙), .bpmn(생성됨), .svg(미리보기)를 참조하세요.
검증 규칙
구조 (BPMN001–BPMN020, 심각도 error / warning)
시작 또는 종료 이벤트 누락 · 도달 불가능한 요소 · 막다른 끝 · 풀을 가로지르는 시퀀스 흐름 · 하나의 풀 안에 있는 메시지 흐름 · 조건 없이 분기하는 게이트웨이 · 이벤트 기반 게이트웨이 대상 · 암시적 분기와 병합 · 비활동에 대한 경계 이벤트 · 중복 id · 조건도 함께 가지는 기본 흐름 · 하나의 입력과 하나의 출력을 가진 게이트웨이.
관례 (BP001–BP017, 심각도 warning / info)
활동 이름 지정(동사 + 목적어) · 질문 형태가 아닌 게이트웨이 · 라벨이 없는 분기 · 문서화 범위 · 레인이 없는 풀 · 빈 레인 · 다이어그램 크기 · 중복 이름 · 메시지를 주고받지 않는 풀.
모든 발견 사항은 문제가 있는 요소와 이를 수정하기 위한 구체적인 단계를 명시합니다.
데스크톱 앱 구동
bizagi_open은 신뢰할 수 있는 경로입니다: Modeler는 파일을 명령줄 인자로 받으므로 메뉴를 조작할 필요가 없습니다.
bizagi_import_bpmn은 리본을 조작하며, 그 점을 솔직하게 밝힙니다:
포그라운드를 차지하고 실제로 그렇게 되었는지 확인합니다. Windows는 포그라운드를 소유하지 않은 프로세스에
SetForegroundWindow를 거부하며,set_focus()는 성공한 것처럼 반환합니다 — 그대로 클릭하면 사용자가 작업 중인 곳에 실제 마우스 클릭이 전달됩니다.다이어그램 탭 수를 전후로 세어, 기대가 아닌 그 증거를 바탕으로
imported: true/false를 보고합니다.두 횟수 모두 창을 앞으로 올린 상태에서 측정합니다. 뒤에 있는 창은 불완전한 접근성 트리를 반환할 수 있기 때문입니다.
백그라운드 모드는 없습니다
가져오기는 컴퓨터를 다른 용도로 사용하는 동안에는 실행할 수 없습니다. Modeler 4.3.0.008을 대상으로 세 가지 경로를 테스트했으며 세 가지 모두 막혀 있습니다:
경로 | 결과 |
UI Automation | 리본 탭이 패턴을 전혀 노출하지 않음 |
| 모든 후보 창 핸들에서 무시됨 |
| 아무것도 가져오지 않고 0으로 종료 |
리본은 포커스된 창에서 실제 마우스 입력에만 반응합니다. 무인 실행을 위해서는 Bizagi에 전용 Windows 세션 또는 VM을 제공하세요. 이를 기록해 두어 누구도 다시 시도하지 않도록 하려면: 이 표가 그 기록입니다.
보안
경로는 확인 전에 완전히 해석되고(
~,.., 심볼릭 링크),BIZAGI_MCP_ROOT가 설정된 경우 그 안으로 제한됩니다XML 파싱은 가능한 경우
defusedxml을 거칩니다(XXE, billion laughs)overwrite=true없이는 파일을 덮어쓰지 않습니다Bizagi는 셸 없이 인자 목록으로 실행되므로 파일 이름이 명령이 될 수 없습니다
모든 오류는 데이터로 반환됩니다(
{"ok": false, ...}). 트레이스백이 아닙니다
테스트
pip install -e ".[dev]"
pytest -q72개의 테스트: 스펙 정규화, XSD 요소 순서, BPMNDI 완전성, 위에 나열된 모든 레이아웃 보장, 라벨 충돌, 라운드트립, 각 검증 규칙, 경로 탐색, 리본 버튼 선택, 포그라운드 확인, 그리고 모든 도구의 오류 계약.
알려진 제한 사항
.bpm은 읽지 않습니다. Bizagi의 독점 형식이므로 먼저 BPMN으로 내보내세요.list_processes는 여전히.bpm파일을 나열하고 플래그를 표시합니다.데스크톱 제어는 Windows 전용이며
pywinauto가 필요합니다.다이어그램은 한 단계 깊이로 생성됩니다. 하위 프로세스는 접힌 셰이프로 나타나며 그 내용은 생성되지 않습니다.
레이아웃 정돈은 파일에 기록된 지오메트리에 대해서만 보장됩니다. Bizagi는 노드 이름을 자체 규칙에 따라 배치하며, 이는 다이어그램 교환 섹션이 제어하지 않습니다.
라이선스
MIT — LICENSE를 참조하세요.
Available Tools
12 toolsbizagi_export_bpmnA
Drive File ▸ Export ▸ BPMN for the diagram currently open in Bizagi Modeler, so it can then be read and audited by the other tools.
Best-effort UI automation; confirm the dialog on screen if nothing appears.
Args: output_path: Where Bizagi should write the .bpmn file.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It usefully discloses that this is 'best-effort UI automation' and advises confirming the dialog if nothing appears. However, it does not mention side effects such as file overwriting, what happens if Bizagi is not open, or whether the operation mutates the diagram.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main action. The purpose, automation caveat, and parameter explanation are each given in a compact sentence, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's single parameter and the presence of an output schema, the description covers the core requirements: exact action, prerequisite, output destination, and a behavioral caveat. It could add more failure-mode detail, but nothing essential is missing for making the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain the parameter. It does: 'output_path: Where Bizagi should write the .bpmn file.' This adds meaning beyond the schema title 'Output Path' by indicating the intended destination and file type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific UI command ('Drive File ▸ Export ▸ BPMN') and the resource ('diagram currently open in Bizagi Modeler'), plus the downstream purpose ('read and audited by other tools'). This clearly distinguishes it from sibling tools like bizagi_import_bpmn and export_documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it applies to the diagram currently open in Bizagi Modeler and is meant to make the BPMN available for other tools. It does not explicitly name alternatives or say when not to use it, but the intended scenario is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bizagi_import_bpmnA
Drive Bizagi Modeler's File ▸ Import ▸ BPMN dialog for a .bpmn file.
Best-effort UI automation: ribbon shortcuts differ between Modeler versions. If it does not take, import the file by hand — it is already on disk.
Args: file_path: The .bpmn file to import.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It openly states 'Best-effort UI automation', warns that ribbon shortcuts differ between Modeler versions, and instructs manual fallback if it fails. It doesn't describe side effects or expected post-import state, but this is notably honest for a UI-automation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sections with front-loaded purpose; every sentence contributes a distinct fact: purpose, caveat, fallback, and parameter. There is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool, the definition covers the action, parameter, and failure mode, and an output schema exists for return values. However, it omits prerequisites such as Bizagi Modeler already being open or a target process being active, which an agent may need to sequence with sibling tools like bizagi_open or bizagi_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the 'file_path: The .bpmn file to import' line is the only parameter guidance. It adds the .bpmn extension and import purpose to the schema's bare string, though it does not detail path format or existence requirements beyond the earlier 'already on disk' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with an explicit verb ('Drive') and resource ('Bizagi Modeler's File ▸ Import ▸ BPMN dialog for a .bpmn file'). It unambiguously identifies an import operation, which distinguishes it from sibling export/open/read tools by UI route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit 'use when ... not when ...' guidance or alternatives among sibling tools. It does provide a manual fallback and a caveat about version differences, which implies best-effort usage, but it doesn't address when to prefer this over siblings like bizagi_export_bpmn or bizagi_open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bizagi_openA
Open Bizagi Modeler, optionally with a .bpm or .bpmn file.
This is the dependable desktop action — the file is passed on the command line rather than through a menu.
Args: file_path: Diagram to open. Leave empty to just start the application.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden, and it does disclose the key behavior: it launches the desktop app, optionally opens a .bpm/.bpmn file, and treats an empty file_path as 'just start the application.' It does not cover failure modes or return behavior, but for a non-destructive open action the disclosed behavior is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the action in the first sentence, adds one clarifying behavioral sentence, and then gives a precise Args section. There is no unnecessary filler or repetition of schema info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter desktop launcher, this is complete: it covers the optional file path, accepted extensions, the behavior when empty, and the invocation method. Since an output schema exists and no annotations are present, there is nothing essential missing for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for file_path, but the description fully compensates: it explains that file_path is the diagram to open, accepts .bpm or .bpmn files, and explains the empty-string behavior. This adds real semantic value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Open Bizagi Modeler,' and adds the optional file types .bpm or .bpmn. It is unambiguous, but it does not explicitly differentiate this tool from siblings like bizagi_import_bpmn or bizagi_export_bpmn by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by calling it 'the dependable desktop action' and explaining that the file is passed via the command line, but it does not state explicit when-to-use or when-not-to-use conditions. It also does not name alternative sibling tools that might be better suited for import/export or process-read tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bizagi_statusA
Report whether Bizagi Modeler can be controlled from here: platform, whether pywinauto is installed, where BizagiModeler.exe is, whether it is running, and which document is open. Call this before the other bizagi_* tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Report whether' makes the read-only nature reasonably clear, and the listed checks describe what the tool does without side effects. It could be more explicit about not modifying anything, but the wording strongly implies a diagnostic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused sentence that front-loads the purpose ('Report whether Bizagi Modeler can be controlled from here') and then lists the specific facts it reports. The final instruction is a clear directive with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool with an output schema, the description is complete: it states what is checked, signals read-only behavior, and tells the agent to call it before siblings. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description cannot add parameter-level meaning. Per the rubric, a 0-parameter tool gets a baseline of 4 because parameter semantics are not applicable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Report' with a specific resource (Bizagi Modeler controllability) and enumerates the exact status items checked: platform, pywinauto availability, exe location, running state, and open document. This clearly differentiates it from the action-oriented sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Call this before the other bizagi_* tools.' This tells the agent when to invoke it in a workflow. It does not mention exclusions, but for a status/preflight tool, the sequencing instruction is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_processA
Generate a BPMN 2.0 diagram from a process specification and write it as a .bpmn file that Bizagi Modeler can import (File ▸ Import ▸ BPMN).
Shape positions are computed automatically with a lane-aware layered layout, so the imported diagram is readable rather than a heap of overlapping boxes. The result includes an audit of the generated model.
Args: spec: The process definition. Call get_spec_reference() for the format. output_path: Where to write the .bpmn file. Leave empty to only preview. overwrite: Replace output_path if it already exists. return_xml: Include the full XML in the response (large).
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| overwrite | No | ||
| return_xml | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and handles it well: file writing, preview-only mode when output_path is empty, overwrite replacement semantics, large return_xml payloads, and formatting/layout behavior are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded, followed by compact behavior notes and a terse argument list. Every sentence adds operational value without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex spec-object tool with no annotations, this is unusually complete: input format source, output behavior, preview mode, overwrite safety, response-size tradeoff, and audit result are all covered. The output schema handles the remaining return-shape details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully: spec is tied to get_spec_reference(), output_path explains preview behavior, overwrite explains replacement, and return_xml warns about large responses. This adds far more meaning than the bare schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and artifact: 'Generate a BPMN 2.0 diagram from a process specification and write it as a .bpmn file.' It further differentiates from siblings by naming Bizagi Modeler import, making it distinct from list/update/read/validate/render tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: call get_spec_reference() for the spec format and leave output_path empty to preview. However, it never explicitly states when to choose this tool over siblings like render_preview, validate_process, or bizagi_import_bpmn, so alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentationA
Produce a Markdown process document from a .bpmn file: an outline of every pool and lane, the step-by-step flow, and optionally the audit findings.
Args: file_path: The .bpmn file to document. output_path: Where to write the .md file. Leave empty to return the text only. include_audit: Append the audit report. overwrite: Replace output_path if it exists.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| overwrite | No | ||
| output_path | No | ||
| include_audit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does a good job: it discloses file-writing behavior, the 'return text only' mode when output_path is empty, the effect of overwrite, and the optional audit append. It stops short of covering error cases or side effects, but the main behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and uses a clean Args block. Every sentence adds information; there is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, the description covers purpose, all parameter semantics, and output behavior. It is slightly less explicit about return details or edge cases, but the presence of an output schema and the detailed parameter notes make it sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining every parameter: file_path, output_path including empty-string behavior, include_audit, and overwrite. Each gets a meaningful semantic beyond its name or type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and object: 'Produce a Markdown process document from a .bpmn file', and enumerates the document's contents (pool/lane outline, step-by-step flow, optional audit findings). This makes it easy to distinguish from siblings such as validate_process or render_preview without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose statement clearly implies the use case: generate Markdown documentation from an existing BPMN file. It does not name alternatives or explicitly state when not to use it, but the context is clear enough that an agent can infer when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spec_referenceA
Show the specification format that create_process expects, with every node type, field, and modeling rule. Read this before writing a spec for the first time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself must signal behavior. 'Show' clearly indicates a read-only lookup, and 'Read this before...' frames it as a non-mutating prerequisite step without side effects. It doesn't discuss auth or rate limits, but a static reference tool has no such concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core purpose front-loaded and the usage directive in a natural second sentence. Every word contributes; no wasted detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference tool with an output schema, the description says what it returns, what it concerns (create_process spec format), and when to use it. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so the baseline for this dimension is 4. The description explains what the returned reference will cover rather than parameters, which is appropriate for a parameterless call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description identifies a specific action ('Show the specification format'), the exact resource (the format create_process expects), and the content scope (node types, fields, modeling rules). This clearly sets it apart from sibling tools like create_process, update_process, and read_process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent precisely when to invoke it: 'Read this before writing a spec for the first time.' It does not list exclusions or alternative reference tools, but none of the siblings fill this exact role, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesA
Find BPMN and Bizagi files in a folder, with a one-line summary of each .bpmn (pools, activities, gateways).
Args: directory: Folder to scan. recursive: Include sub-folders.
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | ||
| recursive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose that only .bpmn files receive a one-line summary covering pools, activities, and gateways. However, it does not state whether the operation is read-only, how Bizagi files are treated beyond being found, or how empty folders or invalid directories behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences followed by compact Args lines. Every sentence adds information, and there is no redundant restatement of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter discovery tool with an output schema present, the description covers purpose, scope, summary behavior, and parameter meaning. Minor gaps remain around Bizagi file handling and edge cases, but nothing an agent needs to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; the Args block adds meaning by defining directory as 'Folder to scan' and recursive as 'Include sub-folders'. This fully disambiguates both parameters for a simple tool, though it does not explain expected file formats or path encoding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Find') and resource ('BPMN and Bizagi files in a folder'), and distinguishes the tool from process-editing siblings by emphasizing folder scanning and one-line summaries. It is immediately clear what the tool does and how it differs from read_process or validate_process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage when an agent needs to discover or summarize BPMN/Bizagi files in a directory, but the description never explicitly states when to prefer this over sibling tools or when not to use it. There are no exclusions or alternative routing cues for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_processA
Read a .bpmn file and return its structure: pools, lanes, activities, gateways, events, and the flows between them.
Note: Bizagi's native .bpm format is proprietary and cannot be read here. Export it first from Bizagi Modeler (File ▸ Export ▸ BPMN).
Args: file_path: Path to a .bpmn or .xml file. detail: "summary" (structured JSON), "outline" (readable walk-through), or "spec" (an editable specification you can pass back to create_process).
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | summary | |
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses supported file types (.bpmn/.xml), an explicit unsupported format (.bpm), and the meaning of each detail mode. It does not explicitly state it is read-only, but the verb 'Read' and the absence of side-effects language make the behavior reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a short necessary limitation note, and a clear Args section. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read operation with an output schema present, this description covers supported formats, the key unsupported format, parameter semantics, and the relationship to create_process. Nothing essential for an agent to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It does: file_path is explained as 'Path to a .bpmn or .xml file', and detail enumerates all three options with their semantic meaning, including how 'spec' can be passed back to create_process.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read'), a concrete resource (.bpmn file), and the return structure (pools, lanes, activities, gateways, events, flows). It clearly distinguishes read_process from sibling tools that list, create, update, or import processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context on when to use the tool and an important prerequisite: Bizagi's native .bpm format must be exported to BPMN first. It does not explicitly contrast with sibling tools like validate_process or list_processes, but the included create_process reference in the detail parameter adds useful routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewA
Draw the diagram as an SVG so it can be checked without opening Bizagi Modeler — same geometry the .bpmn carries, so what you see is what imports.
Args:
file_path: A .bpmn file to preview. Mutually exclusive with spec.
spec: A specification to preview before writing it anywhere.
output_path: Where to write the .svg. Leave empty to return the markup.
overwrite: Replace output_path if it exists.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | ||
| file_path | No | ||
| overwrite | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the write behavior (output_path, overwrite), the alternate return mode (returning markup when output_path is empty), and the promise that geometry matches the .bpmn. This is strong and decision-relevant transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a two-sentence purpose statement followed by a clean argument list. Every sentence earns its place and the structure is easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers output modes, overwrite behavior, and all parameters, and an output schema exists. The main gap is that, with zero required parameters and both file_path and spec defaulted, the description never explicitly states that one of them must be supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining all four parameters with functional meaning: .bpmn file input, an in-memory spec, output location with fallback behavior, and overwrite semantics. The mutual-exclusivity note adds important semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Draw the diagram as an SVG') and a clear purpose ('checked without opening Bizagi Modeler'). It is specific about the resource and output format, but it does not explicitly differentiate from sibling tools like bizagi_import_bpmn or export_documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case — verifying a diagram before import via 'what you see is what imports' — and notes that file_path and spec are mutually exclusive. It does not explicitly state when to prefer this tool over related siblings or when not to use it, so it stops short of a top-tier score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_processA
Edit an existing .bpmn file by merging changes into its specification and regenerating the diagram (with a fresh layout).
changes accepts the same keys as a spec. Lists are handled by key:
a node or flow whose id matches an existing one replaces it, anything else
is appended. Use "removeNodes": ["id", …] / "removeFlows": ["id", …] to delete.
Args: file_path: The .bpmn file to edit. changes: Partial specification to merge in. output_path: Where to write the result. Defaults to overwriting file_path. overwrite: Required when writing over an existing file.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | ||
| file_path | Yes | ||
| overwrite | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It discloses the merge semantics, id-based replace-vs-append behavior, removal keys, fresh layout regeneration, and overwrite behavior. It does not cover failure modes or explicitly state what happens to omitted spec fields, but overall transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded: core edit/regenerate behavior comes first, followed by merge rules and a terse args list. Every sentence earns its place, and the overwrite safety note is compact but important.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the four parameters and the free-form nested changes object, the description is largely complete, and the output schema exists so return values need not be explained. It would be more complete if it defined 'spec' or pointed to get_spec_reference, since 'same keys as a spec' assumes vocabulary the agent may not already have.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet every parameter is meaningfully documented: file_path identifies the target, changes is explained as a partial spec with merge/deletion semantics, output_path specifies destination and default behavior, and overwrite is clarified as required for existing files. This fully compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Edit an existing .bpmn file', and adds the distinctive behavior of merging changes and regenerating the diagram. This clearly separates it from siblings like create_process, read_process, and validate_process even without naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: this is for editing an existing BPMN file, not creating or reading one. It also provides a practical condition, stating that overwrite is required when writing over an existing file. It does not explicitly list alternatives or exclusions, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_processA
Audit a diagram against BPMN 2.0 correctness rules and modeling conventions, and return every finding with a concrete fix.
Checks include: missing start/end events, unreachable elements, dead ends, sequence flows crossing pools, message flows inside one pool, gateways that branch without conditions, event-based gateway targets, implicit splits, boundary events on non-activities, plus naming, documentation, lane and diagram-size conventions.
Args:
file_path: A .bpmn file to audit. Mutually exclusive with spec.
spec: A specification to audit before generating it.
include_best_practice: Include convention findings, not only errors.
format: "json" for structured findings, "markdown" for a report.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | ||
| format | No | json | |
| file_path | No | ||
| include_best_practice | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility. It discloses the audit scope (checks listed), the two input modes and their mutual exclusivity, and the format options. However, it does not explicitly state whether the tool is read-only (though implied) nor mention any permissions or side effects. For a validation tool, this is a moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description starts with a clear one-sentence purpose, then details the checks, and ends with parameter explanations. It is front-loaded and structured well. The list of checks is lengthy but informative, and the Args block is efficient. Some redundancy exists (e.g., the purpose sentence and the check list both mention correctness), but overall it is concise relative to the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex auditing tool with an output schema, the description covers the main aspects: purpose, checks performed, input modes, and format selection. It does not describe return structure, but the presence of an output schema reduces that need. Missing details like error handling or behavior on invalid input are not critical for this tool type, making the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's 'Args' section explains all four parameters: file_path, spec, include_best_practice, and format. Each has a brief explanation, and the mutual exclusivity of file_path and spec is noted. The spec explanation ('A specification to audit before generating it') is slightly vague, but overall the description compensates well for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits a diagram against BPMN 2.0 rules and returns findings with fixes. The verb 'Audit' is specific, the resource is a BPMN diagram, and it is distinct from siblings like list_processes, create_process, or render_preview. No sibling performs validation, so purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context—auditing a diagram for correctness—and differentiates from generation tools. However, it never explicitly says 'use this when you need to validate' or contrasts with alternatives like read_process. The purpose is so specific that an agent can infer when to use it, but no exclusions or conditional guidance are given.
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.
12 tool updates
v1.0.0- First observed
bizagi_export_bpmn - First observed
bizagi_import_bpmn - First observed
bizagi_open - First observed
bizagi_status - First observed
create_process - First observed
export_documentation - First observed
get_spec_reference - First observed
list_processes - First observed
read_process - First observed
render_preview - First observed
update_process - First observed
validate_process
TDQS
Scored across 12 tools
Each tool targets a distinct action: file discovery, spec reference, create, update, read, validate, preview, documentation, and Bizagi desktop automation. The only mild overlap is preview capability between create_process and render_preview, but their outputs and intended use are clearly differentiated.
Most tools follow a clear verb_noun pattern, and the desktop automation tools consistently share the bizagi_ prefix. The minor deviation is bizagi_status, which is a noun phrase rather than verb-first, and get_spec_reference uses get while similar operations use read; still, the overall pattern is predictable.
Twelve tools is well-scoped for a BPMN modeling server. Each tool covers a meaningful part of the workflow without unnecessary redundancy, and the count is comfortably within the typical 3-15 range.
The toolset covers the full modeling lifecycle: discovery, creation, editing, reading, validation, preview, documentation, and desktop import/export. The only noted limitation—reading proprietary .bpm files—is documented with a practical workaround rather than an untooled dead end.
Maintenance
Related MCP Connectors
Generate, validate and read EN 16931 and Peppol BIS 3.0 e-invoices, in UBL and CII.
BPJ rule-based task-state reviews and workflow tool discovery. Free, no account required.
21Read, analyze, and safely edit Microsoft Project MPP files.
Real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI agents to create, manipulate, and manage BPMN 2.0 diagrams programmatically, with support for Mermaid conversion, auto-layout, and file persistence.2412-
- FlicenseNot gradedqualityFmaintenanceEnables AI-driven graphical diagram creation and manipulation using natural language, with support for BPMN workflows, analysis, and manual editing via the Model Context Protocol.1-
- AlicenseBqualityBmaintenanceEnables AI assistants to create and manage one BPMN 2.0 diagram at a time, including Mermaid conversion, validation, layout, persistence, and XML or SVG export.27MIT
- FlicenseCqualityBmaintenanceEnables generating BPMN 2.0 process models from natural language descriptions, YAML, or images via OCR, with templates, validation, and compatibility with tools like Bizagi Modeler and Camunda Modeler.41-