Generate a visual system architecture diagram (WORKFLOW.html) with concurrency capacity estimates and bottleneck analysis from any codebase — CLI + MCP server, stdlib-only scanner.
Project description
workflow-generator
Scan any project and generate WORKFLOW.html — a dark-mode visual system diagram showing every component, how they talk to each other, and where your throughput ceiling actually is.
Works with Python, Node.js, Go, and mixed projects. No external dependencies for the core scanner.
Vendored and generated directories (node_modules, venv, site-packages, dist, …) are never scanned,
and capacity figures are clearly labeled as static-analysis estimates.
Live demo → — generated from fastapi/full-stack-fastapi-template, unmodified.
What it produces
Every generated page contains:
| Section | What you get |
|---|---|
| Stat row | Workers · Concurrent I/O ceiling · Semaphore limit · Rate limit · Practical throughput |
| Architecture diagram | Layered flow: external sources → gateway → API → queues → AI → storage |
| Data flow cards | Write path, read/query path, background jobs — inferred from what's detected |
| Concurrency table | Every layer: model · ceiling · limiting factor |
| Bottleneck analysis | Ranked CRITICAL → LOW with mitigation notes |
What it detects
| Category | Examples |
|---|---|
| API frameworks | FastAPI, Flask, Django, Express, Nest.js, Gin |
| Gateways | nginx, Caddy, Traefik (with rate limits + worker_connections) |
| LLM providers | OpenAI, Anthropic Claude, Cohere, AWS Bedrock |
| Vector stores | Qdrant, Pinecone, Weaviate, ChromaDB, pgvector, FAISS, Milvus |
| Databases | PostgreSQL, MySQL, MongoDB, SQLite, Redis |
| Queues | Celery, BullMQ, Kafka, RabbitMQ, RQ, AWS SQS |
| Async primitives | asyncio.Semaphore, run_in_executor, asyncio.gather, asyncio.Lock |
| Workers | --workers N (uvicorn/gunicorn), replicas: (docker-compose), PM2 instances |
| External sources | Jira, Azure DevOps, Slack, GitHub, Stripe, Salesforce, Twilio |
| Evaluation | TruLens, RAGAS, LangSmith |
Install
pip (CLI + MCP server)
pip install workflow-generator-mcp
workflow-generator . WORKFLOW.html # CLI: scan and write the report
workflow-generator-mcp # stdio MCP server
With pip installed, any MCP host config reduces to:
{
"mcpServers": {
"workflow-generator": { "command": "workflow-generator-mcp" }
}
}
Claude Code (skill)
mkdir -p ~/.claude/skills
git clone https://github.com/askuma/workflow-generator.git ~/.claude/skills/workflow-generator
Then in any Claude Code session:
/workflow-generator
/workflow-generator /path/to/project
MCP server (Claude Desktop, VS Code, Cursor, Zed, Windsurf, Continue)
1. Install the dependency:
pip install mcp
2. Add to your MCP host config (replace ~ with your actual home path):
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (Mac)
%APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"workflow-generator": {
"command": "python3",
"args": ["~/.claude/skills/workflow-generator/mcp/server.py"]
}
}
}
VS Code
.vscode/mcp.json
{
"servers": {
"workflow-generator": {
"type": "stdio",
"command": "python3",
"args": ["~/.claude/skills/workflow-generator/mcp/server.py"]
}
}
}
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"workflow-generator": {
"command": "python3",
"args": ["~/.claude/skills/workflow-generator/mcp/server.py"]
}
}
}
Zed
.zed/settings.json
{
"context_servers": {
"workflow-generator": {
"command": {
"path": "python3",
"args": ["~/.claude/skills/workflow-generator/mcp/server.py"]
}
}
}
}
Windsurf
~/.windsurf/mcp_config.json
{
"mcpServers": {
"workflow-generator": {
"command": "python3",
"args": ["~/.claude/skills/workflow-generator/mcp/server.py"]
}
}
}
3. Restart your tool, then ask:
generate a workflow diagram for this project
how many concurrent requests can this handle?
show me the system architecture
MCP tools exposed:
generate_workflow— scans project, writesWORKFLOW.html, optionally opens in browseranalyze_workflow— returns structured JSON summary (no file written)
Command line (standalone)
No install needed beyond Python 3.8+:
python3 ~/.claude/skills/workflow-generator/scripts/analyze.py . ~/WORKFLOW.html
# then open ~/WORKFLOW.html
Example output (terminal)
Written: /your/project/WORKFLOW.html
Framework: FastAPI · Workers: 8 · Concurrent I/O: ~800
Practical throughput: ~50–200 req/min
Bottleneck: OpenAI (LLM latency 3–30s per call)
Gateway: nginx · 2 rate limit zone(s)
LLM: OpenAI · eval: TruLens RAG Triad
Storage: Qdrant, Redis
External sources: Jira, Azure DevOps, Slack
Repo layout
workflow-generator/
├── SKILL.md ← Claude Code skill definition
├── INSTALL.md ← detailed per-platform install guide
├── scripts/
│ └── analyze.py ← core scanner + HTML renderer (stdlib only)
├── mcp/
│ ├── server.py ← MCP stdio server
│ └── requirements.txt ← pip install mcp
└── copilot/
├── index.js ← GitHub Copilot Extension (Express)
├── package.json
└── openai_function.json
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file workflow_generator_mcp-0.2.1.tar.gz.
File metadata
- Download URL: workflow_generator_mcp-0.2.1.tar.gz
- Upload date:
- Size: 25.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca331163efec87729dc56b3bf92bcbde18fea8f781aaf3cc51860147d3bb0455
|
|
| MD5 |
886f4e562d254b626899c9b1b0ba8ae3
|
|
| BLAKE2b-256 |
4a539e4ba3d463445c02dc3e8820c7c761a3c0f38a4b367c36abfa28a9260f68
|
Provenance
The following attestation bundles were made for workflow_generator_mcp-0.2.1.tar.gz:
Publisher:
publish.yml on askuma/workflow-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
workflow_generator_mcp-0.2.1.tar.gz -
Subject digest:
ca331163efec87729dc56b3bf92bcbde18fea8f781aaf3cc51860147d3bb0455 - Sigstore transparency entry: 2127609676
- Sigstore integration time:
-
Permalink:
askuma/workflow-generator@6b4ce01123a54ee1088f5c5d38ee4d8f0151c9bd -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/askuma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6b4ce01123a54ee1088f5c5d38ee4d8f0151c9bd -
Trigger Event:
release
-
Statement type:
File details
Details for the file workflow_generator_mcp-0.2.1-py3-none-any.whl.
File metadata
- Download URL: workflow_generator_mcp-0.2.1-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90bdb45468a965dbc66020e7b714001f45952499670186888c7436ce8f220c64
|
|
| MD5 |
2c436099568c4edc4150d30636c9e55a
|
|
| BLAKE2b-256 |
9b01edb89efb09e1f36325c5ab32e90cddde754803a0dbaae8a69c7667c8f76d
|
Provenance
The following attestation bundles were made for workflow_generator_mcp-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on askuma/workflow-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
workflow_generator_mcp-0.2.1-py3-none-any.whl -
Subject digest:
90bdb45468a965dbc66020e7b714001f45952499670186888c7436ce8f220c64 - Sigstore transparency entry: 2127610070
- Sigstore integration time:
-
Permalink:
askuma/workflow-generator@6b4ce01123a54ee1088f5c5d38ee4d8f0151c9bd -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/askuma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6b4ce01123a54ee1088f5c5d38ee4d8f0151c9bd -
Trigger Event:
release
-
Statement type: