Monosketch Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Monosketch Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP server that gives AI agents the ability to create beautiful ASCII diagrams using Unicode box-drawing characters. Built on the rendering engine from MonoSketch.
┌──────────────────┐ ┌──────────────────┐
│ │ │ │
│ Frontend │──────▶│ API │
│ │ │ │
└──────────────────┘ └────────┬─────────┘
│
│
┌────────▼─────────┐
│ │
│ Database │
│ │
└──────────────────┘Requires Bun runtime.
git clone https://github.com/supersterling/monosketch-mcp.git
cd monosketch-mcp
bun installclaude mcp add monosketch -- bun run /path/to/monosketch-mcp/index.tsAdd to your claude_desktop_config.json:
{
"mcpServers": {
"monosketch": {
"command": "bun",
"args": ["run", "/path/to/monosketch-mcp/index.ts"]
}
}
}render_sceneStateless one-shot rendering. Pass an array of shapes, get back ASCII art.
{
"shapes": [
{
"type": "rectangle",
"x": 0, "y": 0, "width": 20, "height": 5,
"border": { "enabled": true }
},
{
"type": "text",
"x": 0, "y": 0, "width": 20, "height": 5,
"content": "Hello World",
"horizontalAlign": "center",
"verticalAlign": "middle",
"border": { "enabled": true }
}
]
}Output:
┌──────────────────┐
│ │
│ Hello World │
│ │
└──────────────────┘Build diagrams incrementally across multiple tool calls:
| Tool | Description |
|---|---|
create_canvas | Create a named canvas session |
add_shape | Add a shape to a canvas |
modify_shape | Update shape properties |
remove_shape | Remove a shape |
render_canvas | Render current state to ASCII |
list_canvases | List active sessions |
clear_canvas | Remove all shapes |
| Tool | Description |
|---|---|
list_styles | List all available border, fill, and anchor styles |
measure_text | Compute bounding box for word-wrapped text |
{ "type": "rectangle", "x": 0, "y": 0, "width": 10, "height": 4,
"border": { "enabled": true, "style": "S1", "corner": "rounded" },
"fill": { "enabled": true, "style": "F1" } }{ "type": "text", "x": 0, "y": 0, "width": 20, "height": 3,
"content": "Centered text", "horizontalAlign": "center", "verticalAlign": "middle",
"border": { "enabled": true } }{ "type": "line",
"points": [{"x": 0, "y": 2}, {"x": 10, "y": 2}, {"x": 10, "y": 5}],
"stroke": { "enabled": true },
"endAnchor": "A1" }{ "type": "group", "children": [
{ "type": "rectangle", "x": 0, "y": 0, "width": 10, "height": 3, "border": { "enabled": true } },
{ "type": "rectangle", "x": 15, "y": 0, "width": 10, "height": 3, "border": { "enabled": true } }
]}| ID | Name | Characters |
|---|---|---|
| S1 | Thin (default) | ─ │ ┌ ┐ └ ┘ |
| S2 | Bold | ━ ┃ ┏ ┓ ┗ ┛ |
| S3 | Double | ═ ║ ╔ ╗ ╚ ╝ |
| S4 | Rounded | ─ │ ╭ ╮ ╰ ╯ |
| ID | Name | Character |
|---|---|---|
| F1 | Space | (opaque blank) |
| F2 | Solid | █ |
| F3 | Medium shade | ▒ |
| F4 | Light shade | ░ |
| F5 | Diagonal | ▚ |
| ID | Name | L R U D |
|---|---|---|
| A1 | Filled arrow | ◀ ▶ ▲ ▼ |
| A12 | Hollow arrow | ◁ ▷ △ ▽ |
| A2 | Filled square | ■ ■ ■ ■ |
| A21 | Hollow square | □ □ □ □ |
| A220 | Filled diamond | ◆ ◆ ◆ ◆ |
| A221 | Hollow diamond | ◇ ◇ ◇ ◇ |
| A3 | Hollow circle | ○ ○ ○ ○ |
| A5 | Filled circle | ● ● ● ● |
Add "dash": { "dash": 3, "gap": 1 } to any shape for dashed borders/strokes.
When lines cross, junction characters are automatically resolved:
│
────┼────
│The engine handles all combinations of single, bold, and double line styles with correct Unicode junction characters (T-junctions, crosses, corners).
bun test208 tests covering geometry primitives, bitmap rendering, board compositing, crossing resolution, shape hierarchy, renderer pipeline, canvas management, and end-to-end integration scenarios.
The rendering engine was extracted from MonoSketch, an open-source ASCII diagram editor.
Shape Description (JSON)
→ BitmapFactory (per shape type)
→ MonoBitmap (sparse character matrix)
→ MonoBoard (tiled canvas with crossing resolution)
→ ASCII string outputEngine modules:
engine/geo/ — Point, Rect, Size geometry primitivesengine/shape/ — Shape hierarchy (Rectangle, Text, Line, Group)engine/style/ — Stroke, fill, anchor, and alignment stylesengine/bitmap/ — Sparse bitmap matrix and per-shape rendering factoriesengine/board/ — Tiled canvas compositing with Unicode line crossing resolutionMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.