Skip to main content
Glama
aydinfer
by aydinfer
README.md
# Spline.design MCP Server (Archived)

> **This project is archived.** Spline.design does not provide a public REST API, making most of this server's functionality non-operational. See below for details.

## Why archived

This MCP server was built to programmatically control Spline.design 3D scenes through Claude. However, **Spline does not offer a public REST API** for scene manipulation. The ~130 tools that call `api.spline.design` target endpoints that don't exist and will fail with network errors.

Spline's actual developer tools are:

- **[Code API](https://docs.spline.design/exporting-your-scene/web/code-api-for-web)** — A client-side JavaScript runtime (`@splinetool/runtime`) that only works in a browser with a canvas element. It can manipulate objects in exported scenes but cannot create scenes or objects.
- **[Real-time API](https://docs.spline.design/interaction-states-events-and-actions/real-time-api)** — A feature inside the Spline editor for making outbound API calls from Spline to external services. Not an inbound API.

Neither of these enables the kind of server-side programmatic control this MCP server attempts.

### What does work

10 **code generation tools** generate `@splinetool/runtime` code for Vanilla JS, React, and Next.js. However, Claude can already write this code without an MCP server, making these tools redundant.

## Installation

### Using npx (for Claude Desktop)

Add this to your Claude Desktop MCP config:

```json
{
  "mcpServers": {
    "spline": {
      "command": "npx",
      "args": ["-y", "spline-mcp-server"]
    }
  }
}
```

### Local development

```bash
git clone https://github.com/aydinfer/spline-mcp-server.git
cd spline-mcp-server
npm install
npm start
```

## What you can do with it

Ask Claude to generate Spline runtime code for your projects:

- "Generate a React component that loads my Spline scene and adds click handlers to objects"
- "Write animation code that rotates an object on hover"
- "Create an interactive scene with variable-based state management"
- "Generate Next.js code with Spline integration"

Claude will use the code generation tools to produce working `@splinetool/runtime` code you can use directly in your web projects.

## Spline Runtime API Reference

The `@splinetool/runtime` provides these methods (which the code generation tools target):

| Method | Description |
|---|---|
| `findObjectByName(name)` | Find an object by name |
| `findObjectById(uuid)` | Find an object by ID |
| `getAllObjects()` | List all scene objects |
| `emitEvent(event, nameOrUuid)` | Trigger an event on an object |
| `addEventListener(event, cb)` | Listen for scene events |
| `setVariable(name, value)` | Set a scene variable |
| `getVariable(name)` | Get a scene variable |
| `setZoom(value)` | Control zoom level |
| `play()` / `stop()` | Control rendering |

Objects expose `position`, `rotation`, `scale`, `visible`, and `intensity` properties.

## Project Structure

```
spline-mcp-server/
├── src/
│   ├── tools/             # MCP tool implementations
│   │   └── design/        # Advanced design tools (pending API)
│   ├── utils/             # API client and runtime manager
│   ├── prompts/           # Prompt templates
│   ├── resources/         # MCP resources
│   └── index.js           # Main server entry point
├── bin/cli.js             # CLI entry point
├── docs/                  # Documentation
└── package.json
```

## License

This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.

TDQS

D1.7/5.0

Scored across 73 tools

Disambiguation3/5

The tools cover distinct aspects of 3D scene creation and management, but there's significant overlap in configuration tools (e.g., configureApi vs configureApiRequestAction) and creation tools (createEvent vs createComprehensiveEvent). Without descriptions, it's unclear how these differ, leading to potential confusion for agents trying to select the right tool.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., addCamera, createObject, getMaterials), with clear action prefixes like add, create, configure, get, delete, update, generate, and list. Minor deviations exist (e.g., exportSceneCode vs generateEmbedCode), but the overall naming is predictable and readable.

Tool Count2/5

With 73 tools, this is an extremely large set that feels overwhelming for a single server. While 3D scene creation is a complex domain, the high count suggests fragmentation or redundancy, making it difficult for agents to navigate and increasing the risk of misselection.

Completeness4/5

The tool set appears to cover a comprehensive range of operations for 3D scene management, including creation, configuration, retrieval, updating, and deletion of objects, materials, events, APIs, and more. There's good CRUD coverage (e.g., createObject, getObjects, updateObject, deleteObject), though some gaps might exist in specific subdomains like animation or physics.

Maintenance

ActivityInactive
ResponsivenessNo issues