Skip to main content
Glama
README.md
# blob-svg-mcp

MCP server for generating organic blob shapes as SVG.

Uses sinusoidal harmonics to produce smooth, rounded curves — no sharp corners. Every blob is reproducible via a seed parameter.

## Tools

### `generate_blob`

Generate a single blob shape as a complete SVG.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `size` | number | 200 | Width and height in px |
| `complexity` | number | 6 | Number of harmonics (2-12). More = more detailed |
| `color` | string | `#6366f1` | Fill color (any CSS color) |
| `opacity` | number | 1 | Fill opacity (0-1) |
| `randomness` | number | 0.5 | Radius irregularity (0 = circle, 1 = very blobby) |
| `seed` | number | random | Seed for reproducible shapes |
| `stroke` | string | — | Optional stroke color |
| `stroke_width` | number | 2 | Stroke width in px |

### `generate_gradient_blob`

Generate a blob filled with a linear gradient.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `size` | number | 200 | Width and height in px |
| `complexity` | number | 6 | Number of harmonics (2-12) |
| `gradient_colors` | string[] | `["#6366f1", "#ec4899"]` | Gradient stop colors |
| `gradient_angle` | number | 0 | Gradient angle in degrees |
| `opacity` | number | 1 | Fill opacity (0-1) |
| `randomness` | number | 0.5 | Radius irregularity (0-1) |
| `seed` | number | random | Seed for reproducible shapes |

### `generate_blob_set`

Generate multiple blobs scattered on a canvas. Useful for backgrounds and hero sections.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `count` | number | 12 | Number of blobs |
| `canvas_width` | number | 800 | Canvas width in px |
| `canvas_height` | number | 600 | Canvas height in px |
| `colors` | string[] | `["#6366f1", "#8b5cf6", "#a78bfa", "#c4b5fd"]` | Color palette |
| `min_size` | number | 80 | Minimum blob size in px |
| `max_size` | number | 250 | Maximum blob size in px |
| `complexity` | number | 6 | Harmonics per blob (2-12) |
| `opacity` | number | 0.6 | Fill opacity (0-1) |
| `randomness` | number | 0.5 | Radius irregularity (0-1) |
| `seed` | number | random | Seed for reproducible compositions |

### `generate_blob_path`

Generate only the SVG path data (the `d` attribute). Useful for embedding in your own SVG.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `size` | number | 200 | Coordinate space size |
| `complexity` | number | 6 | Number of harmonics (2-12) |
| `randomness` | number | 0.5 | Radius irregularity (0-1) |
| `seed` | number | random | Seed for reproducible paths |

## Setup

### With Claude Code

```bash
claude mcp add blob-svg -- npx blob-svg-mcp
```

### Manual (settings.json)

```json
{
  "mcpServers": {
    "blob-svg": {
      "command": "npx",
      "args": ["blob-svg-mcp"]
    }
  }
}
```

### From source

```bash
git clone https://github.com/Rixmerz/blob-svg-mcp.git
cd blob-svg-mcp
npm install
npm run build
```

Then point your MCP config to the built file:

```json
{
  "mcpServers": {
    "blob-svg": {
      "command": "node",
      "args": ["/path/to/blob-svg-mcp/build/index.js"]
    }
  }
}
```

## How it works

Each blob is generated by:

1. Placing 36 sample points around a circle
2. Deforming the radius at each point using summed sinusoidal harmonics (amplitude decays with frequency, so high-frequency harmonics add detail without spikes)
3. Converting the points to a smooth closed path using Catmull-Rom to cubic Bezier conversion with tension factor 1/4

The result is always an organic, rounded shape — never angular.

## License

MIT

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct output format or use case: single blob, multiple blobs, gradient-filled blob, and raw path data. However, generate_blob and generate_gradient_blob overlap somewhat since both produce a single blob SVG, with the only differentiator being the fill style.

Naming Consistency4/5

All tool names follow a clear generate_blob base with modifier suffixes, and snake_case is used consistently. There is minor inconsistency in modifier placement: generate_blob_set vs generate_gradient_blob vs generate_blob_path, but the pattern remains predictable.

Tool Count4/5

Four tools is an appropriate, focused scope for a blob-SVG generation server. It avoids bloat while covering the primary variations one would expect, though it is on the smaller side.

Completeness4/5

The server covers the main use cases: individual blobs, background sets, gradient styling, and raw path extraction for custom embedding. Missing niche features like animated blobs or advanced shape controls are minor gaps, not critical failures.

Maintenance

ActivityInactive
ResponsivenessNo issues