Skip to main content
Glama
README.md
# Threejs-mcp

A Three.js code-generation MCP server.

## Tools

| Category | Tools |
|---|---|
| Scene & Renderer | `scene_setup`, `html_template` |
| Cameras | `perspective_camera`, `orthographic_camera` |
| Geometry | `geometry`, `extrude_geometry`, `lathe_geometry`, `tube_geometry` |
| Materials | `material`, `shader_material` |
| Meshes | `mesh`, `instanced_mesh`, `group` |
| Lighting | `ambient_light`, `directional_light`, `point_light`, `spot_light`, `hemisphere_light`, `rect_area_light` |
| Controls | `orbit_controls`, `fly_controls`, `pointer_lock_controls`, `transform_controls` |
| Loaders | `gltf_loader`, `texture_loader`, `cube_texture_loader`, `hdr_environment`, `fbx_loader` |
| Animation | `animation_loop`, `keyframe_animation`, `tween_animation` |
| Interaction | `raycaster` |
| Helpers | `debug_helpers`, `light_helpers` |
| Post-processing | `postprocessing_setup` |
| Environment | `ground_plane`, `skybox`, `water_surface`, `particles`, `reflective_surface`, `lensflare` |
| UI | `css2d_label` |
| Physics | `rapier_physics` |
| XR | `webxr_setup` |
| Utilities | `math_utils`, `dispose_resources` |

## Prerequisites

- Python 3.13+
- [uv](https://docs.astral.sh/uv/)

## Installation

Clone this repository, then update the path in `run.sh` to point to the cloned directory:

```bash
#!/bin/zsh
source ~/.zshrc
exec uv run --directory /path/to/threejs-mcp threejs-mcp
```

Make the script executable:

```bash
chmod +x run.sh
```

Then follow the instructions for your MCP client below. Replace `/path/to/threejs-mcp/run.sh` with the actual path to the script.

### Claude Code

```bash
claude mcp add threejs -s user -- /path/to/threejs-mcp/run.sh
```

The scope (`-s`) can be `user`, `project`, or `local`.

### Claude Desktop

Open **Settings > Developer > Edit Config** and add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

### Cursor

Open **Settings > MCP > Add new global MCP server** and add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

Or add to `.cursor/mcp.json` in your project root for project-scoped configuration.

### Windsurf

Open **Settings > MCP > Add Server > Add custom server** and add to your MCP config:

```json
{
  "mcpServers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

### VS Code / GitHub Copilot

Add to your user or workspace `settings.json`:

```json
{
  "mcp": {
    "servers": {
      "threejs": {
        "command": "/path/to/threejs-mcp/run.sh"
      }
    }
  }
}
```

Or create `.vscode/mcp.json` in your project root:

```json
{
  "servers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

### Zed

Add to your Zed settings (`~/.config/zed/settings.json`):

```json
{
  "context_servers": {
    "threejs": {
      "command": {
        "path": "/path/to/threejs-mcp/run.sh"
      }
    }
  }
}
```

### Cline

Open **Settings > MCP Servers > Edit MCP Settings** and add to the config:

```json
{
  "mcpServers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

### Continue

Add to your `~/.continue/config.yaml`:

```yaml
mcpServers:
  - name: threejs
    command: /path/to/threejs-mcp/run.sh
```

### Roo Code

Open **Settings > MCP > Edit MCP Settings** and add:

```json
{
  "mcpServers": {
    "threejs": {
      "command": "/path/to/threejs-mcp/run.sh"
    }
  }
}
```

### Any other MCP client

This is a standard stdio MCP server. Run it with:

```bash
/path/to/threejs-mcp/run.sh
```

## Scraping docs

The `docs/` directory contains condensed markdown scraped from the Three.js documentation. To regenerate:

```bash
uv run python scrape_docs.py
```

This requires the `httpx` and `beautifulsoup4` packages (not included in the main dependencies).