# keyline MCP server

> An agent-first design engine that renders structured JSON scenes into images and video across multiple sizes using a native Rust Skia renderer.

- Repository: https://github.com/keyline-dev/keyline
- Page: https://hostedmcp.org/servers/keyline-dev/keyline
- Transport: stdio
- Stars: 6
- Latest version: 0.8.1

## Install

### Claude Code

```sh
claude mcp add keyline -- docker run -i --rm ghcr.io/keyline-dev/keyline-mcp:0.8.1
```

### Cursor (`~/.cursor/mcp.json`)

```json
{
  "mcpServers": {
    "keyline": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/keyline-dev/keyline-mcp:0.8.1"
      ]
    }
  }
}
```

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "keyline": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/keyline-dev/keyline-mcp:0.8.1"
      ]
    }
  }
}
```

### VS Code CLI

```sh
code --add-mcp '{"name":"keyline","type":"stdio","command":"docker","args":["run","-i","--rm","ghcr.io/keyline-dev/keyline-mcp:0.8.1"]}'
```

### Claude Desktop (`claude_desktop_config.json`)

```json
{
  "mcpServers": {
    "keyline": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/keyline-dev/keyline-mcp:0.8.1"
      ]
    }
  }
}
```

### Codex

```sh
codex mcp add keyline -- docker run -i --rm ghcr.io/keyline-dev/keyline-mcp:0.8.1
```

### Codex config.toml (`~/.codex/config.toml`)

```toml
[mcp_servers.keyline]
command = "docker"
args = ["run", "-i", "--rm", "ghcr.io/keyline-dev/keyline-mcp:0.8.1"]
```

### Gemini CLI

```sh
gemini mcp add -s user keyline docker -- run -i --rm ghcr.io/keyline-dev/keyline-mcp:0.8.1
```

### Gemini settings.json (`~/.gemini/settings.json`)

```json
{
  "mcpServers": {
    "keyline": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/keyline-dev/keyline-mcp:0.8.1"
      ]
    }
  }
}
```

## Environment variables

| Name | Required | Secret | Description |
|---|---|---|---|
| `KEYLINE_MCP_BENCH` | no | no |  |
| `UPDATE_GOLDEN` | no | no |  |

## Tools (6)

- `scene_create`
- `asset_add`
- `layer_add`
- `layer_update`
- `scene_describe`
- `render`

## FAQ

### Does keyline require a web browser to render designs?

No, it uses a native Rust binary on Skia instead of headless Chrome, Puppeteer, or Playwright.

### How does keyline help reduce token usage for AI agents?

It uses structured JSON scenes and provides measurement-based feedback for edits instead of requiring the agent to process screenshots.
