Skip to main content

appkit-bpmn-server

An MCP Apps-compliant server that generates, edits, and manages BPMN 2.0 diagrams from natural language — powered by LLMs.

Describe a business process in plain text and get a valid, layouted BPMN diagram with an interactive viewer rendered inline in any MCP Apps-capable host (Claude, ChatGPT, VS Code, etc.).

Screenshot

Features

  • Natural language to BPMN — Generate process diagrams from text descriptions
  • Interactive viewer — Built-in bpmn-js editor with zoom, pan, and editing capabilities
  • Update diagrams — Modify existing diagrams via follow-up prompts without starting over
  • Persistent storage — SQLite-backed diagram storage with Alembic migrations
  • User assignment — Associate diagrams with specific users via x-user-id header or query parameter (defaults to -1)
  • Auto-layout — Automatic swimlane arrangement and edge routing
  • Validation — Generated BPMN XML is validated before storage
  • MCP Apps UI — Inline rendering in any compliant chat host

Architecture

MCP Host (Claude, ChatGPT, …)
  │
  │  MCP over HTTP (stateless)
  ▼
appkit-bpmn-server      ← this repo (configuration + startup)
  │
  ├─ appkit-mcp-bpmn    ← MCP tools, viewer, BPMN generation
  ├─ appkit-commons     ← shared config, OpenAI client, registry
  └─ SQLite database    ← diagram persistence

Prerequisites

  • Python 3.14+
  • uv package manager
  • An OpenAI-compatible API key (Azure OpenAI or OpenAI)

Getting Started

1. Clone and install

git clone https://github.com/jenreh/appkit-bpmn-server.git
cd appkit-bpmn-server
uv sync

2. Configure environment

Create a .env file in the project root:

OPENAI_API_KEY=your-api-key
OPENAI_BASE_URL=https://your-endpoint.openai.azure.com/v1

3. Run database migrations

uv run alembic upgrade head

4. Start the server

uv run appkit_bpmn_server

The MCP endpoint will be available at http://127.0.0.1:8000/mcp.

5. Connect from an MCP client

Add the server to your MCP client configuration:

{
  "mcpServers": {
    "bpmn": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

MCP Tools

Tool Description
new_bpmn_diagram Generate a new BPMN diagram from a natural language description
update_bpmn_diagram Modify an existing diagram using a follow-up prompt
save_bpmn_diagram Save pre-built BPMN XML
get_bpmn_xml Retrieve the BPMN XML for a diagram (app-only)
save_or_update Persist edits made in the viewer (app-only)
rename_bpmn_diagram Rename a diagram (app-only)

Tools marked app-only are hidden from the model and callable only from the interactive viewer.

Configuration

Server settings are in configuration/config.yaml:

app:
  mcp_bpmn:
    storage_mode: database          # database, filesystem, or both
    default_model: gpt-5.3-codex    # LLM model for generation
    max_file_size_mb: 10
    diagram_types:
      - process

User Assignment

Diagrams can be associated with a specific user by sending an x-user-id value. This can be provided as:

  • HTTP header: x-user-id: 123
  • Query parameter: ?x-user-id=123

If neither is provided, the user ID defaults to -1.

Project Structure

├── configuration/
│   ├── config.yaml          # Development configuration
│   ├── config.prod.yaml     # Production overrides
│   └── logging.yaml         # Logging configuration
├── alembic/                 # Database migrations
├── src/
│   └── appkit_bpmn_server/
│       └── main.py          # Server entry point
├── pyproject.toml
└── .env                     # API keys (not committed)

Metadata

Release files for appkit-bpmn-server 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for appkit-bpmn-server 0.1.3
File Size Uploaded
appkit_bpmn_server-0.1.3.tar.gz 500.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for appkit-bpmn-server 0.1.3
File Interpreter ABI Platform
appkit_bpmn_server-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 506.6 kB

Release files / appkit_bpmn_server-0.1.3.tar.gz

Download URL appkit_bpmn_server-0.1.3.tar.gz
Size 500.8 kB
Tags Source
SHA-256 checksum
How to use checksums
30631f98de1d039b47407bd6a50c7ada7dd71a7f0f4339bb713f4d2f4c021a21
BLAKE2b-256 checksum
How to use checksums
7db293e63b878ef4e52666a133a4a0a7fee8c14dad9c9815fe74508c86788991
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / appkit_bpmn_server-0.1.3-py3-none-any.whl

Download URL appkit_bpmn_server-0.1.3-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
137a39470a8acc3799f6be11a07b63f9cec6961c9c4052842aa8c761af557f6a
BLAKE2b-256 checksum
How to use checksums
00feacf18cef38bbb831ab780c836d2b6e249bdceb72e1a40813d64078fbf843
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page