Spline MCP Server
The Spline MCP Server is an archived project primarily designed to generate client-side Spline runtime code for web applications. Most of its intended server-side scene manipulation features are non-operational due to the lack of a public Spline REST API.
Working Capabilities (Code Generation):
Generate
@splinetool/runtimecode for Vanilla JS, React, and Next.js to load and interact with Spline scenesGenerate React components with event handlers (e.g., click handlers) attached to scene objects
Generate animation code for rotating, moving, scaling, or changing object colors on user interaction
Generate object manipulation code (move, rotate, scale, color, visibility, emit events)
Generate event listener code for mouse, touch, keyboard, and scene events
Generate variable get/set code for managing interactive scene state
Generate embed (iframe) code for Spline scenes
Generate comprehensive usage examples and scene interaction boilerplate
Get runtime setup instructions (
getRuntimeSetup)Generate text via OpenAI (
generateTextWithOpenAI)
Non-Functional Capabilities (broken — no public API exists):
~130 tools targeting non-existent Spline REST endpoints, covering scene management, object CRUD, material management, state/event/action management, webhooks, physics, particles, lighting, cameras, and post-processing effects — all will fail with network errors.
Enables configuration of the server with environment variables stored in a .env file, including API credentials for Spline
Supports exporting Spline scenes to glTF format, allowing 3D models to be used in various platforms that support the format
Allows installation and running of the server through npm, including direct execution with npx
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Spline MCP Server create a rotating cube animation with a metallic material"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 — 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 — 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.
Related MCP server: BlenderMCP
Installation
Using npx (for Claude Desktop)
Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"spline": {
"command": "npx",
"args": ["-y", "spline-mcp-server"]
}
}
}Local development
git clone https://github.com/aydinfer/spline-mcp-server.git
cd spline-mcp-server
npm install
npm startWhat 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 |
| Find an object by name |
| Find an object by ID |
| List all scene objects |
| Trigger an event on an object |
| Listen for scene events |
| Set a scene variable |
| Get a scene variable |
| Control zoom level |
| 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.jsonLicense
This project is licensed under the MIT License — see the LICENSE file for details.
Available Tools
73 toolsaddCameraD
Inputs: sceneId (required), name, position, target, +2 more.
addDirectionalLightD
Inputs: sceneId (required), name, position, color, +2 more.
addMaterialLayerD
Inputs: sceneId (required), materialId (required), layerType (required), name (required), +5 more.
addPhysicsBodyD
Inputs: sceneId (required), objectId (required), type, mass, +1 more.
applyMaterialD
Inputs: sceneId (required), objectId (required), materialId (required).
configureAnimationActionD
Inputs: sceneId (required), actionId (required), objectId (required), animationType (required), +3 more.
configureApiD
Inputs: sceneId (required), name (required), method (required), url (required), +5 more.
configureApiRequestActionD
Inputs: sceneId (required), actionId (required), apiId (required), mappings.
configureCameraActionD
Inputs: sceneId (required), actionId (required), cameraId (required), duration, +1 more.
configureColorLayerD
Inputs: sceneId (required), materialId (required), layerId (required), color (required), +1 more.
configureConditionalActionD
Inputs: sceneId (required), actionId (required), variableName (required), condition (required), +3 more.
configureEventParametersD
Inputs: sceneId (required), eventId (required), eventType (required), keyCode, +7 more.
configureFogD
Inputs: sceneId (required), enabled, color, density, +2 more.
configureFresnelLayerD
Inputs: sceneId (required), materialId (required), layerId (required), color (required), +3 more.
configureGlassLayerD
Inputs: sceneId (required), materialId (required), layerId (required), tint, +3 more.
configureGradientLayerD
Inputs: sceneId (required), materialId (required), layerId (required), gradientType (required), +3 more.
configureImageLayerD
Inputs: sceneId (required), materialId (required), layerId (required), imageUrl (required), +3 more.
configureMatcapLayerD
Inputs: sceneId (required), materialId (required), layerId (required), matcapImageUrl (required), +1 more.
configureNormalLayerD
Inputs: sceneId (required), materialId (required), layerId (required), normalMapUrl (required), +2 more.
configureOpenAID
Inputs: sceneId (required), prompt (required), model, apiKey, +2 more.
configurePostProcessingD
Inputs: sceneId (required), bloom, depthOfField.
configureSoundActionD
Inputs: sceneId (required), actionId (required), soundUrl (required), volume, +3 more.
configureTransitionActionD
Inputs: sceneId (required), actionId (required), targetState (required), duration, +2 more.
configureVariableActionD
Inputs: sceneId (required), actionId (required), variableName (required), operation (required), +1 more.
create3DTextD
Inputs: sceneId (required), text (required), name, position, +4 more.
createActionD
Inputs: sceneId (required), eventId (required), type (required), name (required), +2 more.
createComprehensiveEventD
Inputs: sceneId (required), name (required), type (required), actions (required), +2 more.
createEventD
Inputs: sceneId (required), name (required), type (required), actions (required), +1 more.
createLayeredMaterialD
Inputs: sceneId (required), name (required), layers (required), baseType, +1 more.
createMaterialD
Inputs: sceneId (required), name (required), type (required), color, +10 more.
createObjectD
Inputs: sceneId (required), type (required), name (required), position, +4 more.
createParametricObjectD
Inputs: sceneId (required), type (required), name (required), position, +1 more.
createParticleSystemD
Inputs: sceneId (required), name, position, emissionRate, +5 more.
createStateD
Inputs: sceneId (required), name (required), properties (required), transitionDuration, +1 more.
createWebhookD
Inputs: sceneId (required), name (required), parameterMappings.
deleteActionD
Inputs: sceneId (required), eventId (required), actionId (required).
deleteApiD
Inputs: sceneId (required), apiId (required).
deleteMaterialLayerD
Inputs: sceneId (required), materialId (required), layerId (required).
deleteObjectD
Inputs: sceneId (required), objectId (required).
deleteWebhookD
Inputs: sceneId (required), webhookId (required).
exportSceneCodeD
Inputs: sceneId (required), format.
generateAnimationCodeD
Inputs: sceneId (required), objectId (required), animationType (required), duration, +3 more.
generateComprehensiveExampleD
Inputs: sceneId (required).
generateEmbedCodeD
Inputs: sceneId (required), width, height, frameBorder.
generateEventListenerCodeD
Inputs: sceneId (required), eventName (required).
generateObjectCodeD
Inputs: sceneId (required), objectId (required), action (required), params.
generateReactComponentD
Inputs: sceneId (required), componentName, interactivity, responsive, +1 more.
generateSceneInteractionCodeD
Inputs: sceneId (required), interactionType (required), options.
generateTextWithOpenAID
Inputs: prompt (required), model, maxTokens, temperature.
generateVariableCodeD
Inputs: sceneId (required), variableName (required), value.
getApisD
Inputs: sceneId (required).
getEventDetailsD
Inputs: sceneId (required), eventId (required).
getEventsD
Inputs: sceneId (required).
getMaterialDetailsD
Inputs: sceneId (required), materialId (required).
getMaterialsD
Inputs: sceneId (required).
getObjectDetailsD
Inputs: sceneId (required), objectId (required).
getObjectsD
Inputs: sceneId (required).
getRuntimeSetupD
Inputs: no named parameters.
getSceneD
Inputs: sceneId (required).
getScenesD
Inputs: projectId, limit, offset.
getStateDetailsD
Inputs: sceneId (required), stateId (required).
getStatesD
Inputs: sceneId (required).
getVariableD
Inputs: sceneId (required), variableName (required).
getWebhooksD
Inputs: sceneId (required).
listActionsD
Inputs: sceneId (required), eventId (required).
listMaterialLayersD
Inputs: sceneId (required), materialId (required).
reorderMaterialLayersD
Inputs: sceneId (required), materialId (required), layerOrder (required).
setVariableD
Inputs: sceneId (required), variableName (required), variableType (required), value.
triggerEventD
Inputs: sceneId (required), eventId (required), eventData.
triggerStateD
Inputs: sceneId (required), stateId (required).
triggerWebhookD
Inputs: sceneId (required), webhookId (required), data (required).
updateMaterialD
Inputs: sceneId (required), materialId (required), color, roughness, +9 more.
updateObjectD
Inputs: sceneId (required), objectId (required), position, rotation, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 73 tools
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.
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.
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.
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
Related MCP Connectors
Build, edit and publish live 3D, AR and game scenes in ARClip from your AI assistant.
Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset free—30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048×2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
CAD in ChatGPT and Claude: editable parts, STEP/STL/drawings, in-chat 3D, automatic checks.
Turn Claude into a creative studio: DNA-locked characters, images, video, voiceover — 55 tools.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables Claude AI to interact with and control Blender for 3D modeling, scene creation, and manipulation.22MIT
- AlicenseAqualityFmaintenanceEnables Claude to directly interact with and control Blender for 3D modeling, scene creation, and manipulation through natural language prompts.22MIT
- FlicenseNot gradedqualityAmaintenanceEnables Claude to control Cinema 4D through natural-language prompts for 3D modeling, scene creation, object manipulation, materials, lighting, cameras, animation, MoGraph, dynamics, and rendering.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude to create and manipulate Cinema 4D scenes through natural-language prompts, including object creation, transforms, cameras, lights, materials, MoGraph, dynamics, and rendering.-