Skip to main content
Glama
dmarsters

ASCII Art & Unicode Diagrams MCP Server

by dmarsters
README.md
# ASCII Art & Unicode Diagrams MCP Server

**Lushy Pattern 2** implementation for text-based visual generation with zero rendering dependencies.

## Features

✅ **Pure Text Output** - No image generation, instant results  
✅ **Categorical Composition** - Functor-based aesthetic parameters  
✅ **Rich Visual Vocabulary** - Unicode box drawing, ASCII shading, layout systems  
✅ **Deterministic** - Same parameters = same output  
✅ **Universal Compatibility** - Works in terminal, markdown, artifacts, documentation  

## Quick Start

```bash
# Install
pip install -e .

# Run locally
python server.py

# Deploy to FastMCP Cloud
fastmcp deploy
```

## Tools

### `create_ascii_box`
Create bordered boxes with optional shading.

```python
create_ascii_box(
    width=50,
    height=15,
    title="System Status",
    line_style='double',      # light|heavy|double|rounded
    shading_palette='blocks',  # ascii_standard|blocks|dots|density|braille
    shading_direction='radial', # horizontal|vertical|radial|diagonal
    contrast=0.8
)
```

**Output:**
```
╔══════════════ System Status ══════════════╗
║███████████████████        ░░░░▒▒▒▓▓██████║
║████████████▓▓▓▓▓▓▓        ░░░░▒▒▒▓▓██████║
║███████▓▓▓▓▓▓▓▒▒▒▒▒        ░░░░▒▒▒▓▓██████║
║████▓▓▓▓▓▒▒▒▒▒▒▒░░░        ░░░░▒▒▒▓▓██████║
╚═══════════════════════════════════════════╝
```

### `create_ascii_table`
Create data tables with borders.

```python
create_ascii_table(
    headers=["Task", "Status", "Progress"],
    rows=[
        ["Deploy API", "Complete", "100%"],
        ["Run Tests", "Running", "65%"],
        ["Write Docs", "Pending", "0%"]
    ],
    line_style='heavy'
)
```

**Output:**
```
┏━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Task       ┃ Status   ┃ Progress ┃
┣━━━━━━━━━━━━╋━━━━━━━━━━╋━━━━━━━━━━┫
┃ Deploy API ┃ Complete ┃ 100%     ┃
┃ Run Tests  ┃ Running  ┃ 65%      ┃
┃ Write Docs ┃ Pending  ┃ 0%       ┃
┗━━━━━━━━━━━━┻━━━━━━━━━━┻━━━━━━━━━━┛
```

### `list_ascii_styles`
Get all available styles with intentionality.

## Functors

### Box Drawing
- **Line styles**: light (minimal), heavy (bold), double (formal), rounded (friendly)
- **Symmetry**: bilateral, radial, asymmetric
- **Intentionality**: Visual weight affects emphasis and hierarchy

### ASCII Shading
- **Palettes**: ascii_standard (classic), blocks (smooth), dots (geometric), density (detailed), braille (fine)
- **Contrast**: 0.0-1.0 controls dramatic vs subtle
- **Direction**: horizontal, vertical, radial, diagonal
- **Intentionality**: Different palettes create different textural qualities

### Layout Composition
- **Canvas size**: 20-120 width, 5-50 height
- **Alignment**: horizontal (left/center/right), vertical (top/middle/bottom)
- **Patterns**: single_box, nested_boxes, grid, table
- **Intentionality**: Size and alignment affect viewing distance and emphasis

## Use Cases

📊 **CLI Tools** - Beautiful terminal output  
📝 **Documentation** - Markdown-compatible diagrams  
💬 **Chat Interfaces** - Rich text formatting  
📈 **Data Visualization** - ASCII charts and graphs  
🎨 **Art & Design** - Generative text art  

## Architecture

**Lushy Pattern 2:**

```
Layer 1: Categorical Structure (functors in YAML)
    ↓
Layer 2: Intentionality (why aesthetics work)
    ↓
Layer 3: Rendering (deterministic text output)
```

**Zero Dependencies:**
- No image libraries
- No external rendering
- Pure Python + Unicode
- Instant output

## Examples

### Status Dashboard
```python
create_ascii_box(
    width=60, height=12,
    title="🚀 Deployment Status",
    line_style='double',
    shading_palette='blocks',
    contrast=0.3
)
```

### Build Progress
```python
create_ascii_table(
    headers=["Stage", "Time", "Status"],
    rows=[
        ["Compile", "12.3s", "✓"],
        ["Test", "45.1s", "✓"],
        ["Deploy", "8.2s", "⏳"]
    ],
    line_style='light'
)
```

### Log Separator
```python
create_ascii_box(
    width=80, height=3,
    line_style='heavy',
    shading_palette='ascii_standard',
    shading_direction='horizontal'
)
```

## Deployment

```bash
# Deploy to FastMCP Cloud
fastmcp deploy

# Use with Claude Desktop
# Add to claude_desktop_config.json:
{
  "mcpServers": {
    "ascii-art": {
      "url": "https://ascii-art-mcp.fastmcp.app"
    }
  }
}
```

## Next: SVG Generator

Phase 2 will add SVG generation with the same functor composition system for:
- Scalable vector graphics
- Geometric shapes and charts
- Browser/artifact rendering
- Export to files

## License

MIT