verse-mcp
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., "@verse-mcp Upload ~/Models/villa.glb to Verse and give me a shareable link."
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.
@ctruhtech/verse-mcp
An MCP server for Verse. It lets AI assistants and agents (Claude, ChatGPT, Cursor, VS Code, your own) turn a 3D file into a shareable link that opens in any browser, then embed it, make it private, or give it a guided tour.
"Upload ~/Models/villa.glb to Verse and give me a link."
"Make that scene private and give me a link I can send to the client."
"Give me the embed code for it, 1:1."Node 20 or newer. MIT licensed. Documentation: https://verse.ctruh.com/docs/#/mcp.
60-second setup
Sign up free at https://verse.ctruh.com/signin, open your Account page and create a key under API keys (it is shown once).
Add the server to your client with that key as
VERSE_API_KEY:
claude mcp add verse --env VERSE_API_KEY=paste-your-key -- npx -y @ctruhtech/verse-mcpAsk: "Upload ~/Models/villa.glb to Verse and give me a link."
Other clients are below. Nothing is installed globally: npx -y @ctruhtech/verse-mcp fetches the package on first use.
Related MCP server: threejs-mcp
Tools
Tool | What it does |
| Local path or public URL, to a Verse link. Resumable for big files, progress notifications, waits for the build. |
| Build state, progress and ETA; the link once done. |
| Scenes owned by your account. |
| Set visibility (public / unlisted / private); private scenes get a revocable share-token link. Optional autoplay of the camera path. |
| Revoke a private share token (or list the active ones). |
| iframe, |
| Guided tours: read, author, or re-plan the automatic fly-through. |
Every tool is a thin wrapper over the public REST API (API reference) through @ctruhtech/verse-sdk. There is no world-generation tool, because the API has no such endpoint. Share links do not expire on their own; the API has no expiry, so revoke a private link to end access. Errors come back as one plain sentence.
Credentials
Set VERSE_API_KEY to one of:
a workspace API key
vk_...from your Account page (API keys card). It acts as a member of that workspace: uploads, scenes, visibility, private links and camera paths;your account token (64 hex, from Studio). Same powers, tied to you.
Both are sent as Authorization: Bearer. Uploading needs a free Verse account; opening a published link never does. VERSE_BASE_URL points at another origin (default https://verse.ctruh.com). The key is only ever sent to that origin as a header, and is never logged or returned in tool output. VERSE_UPLOAD_KEY (optional) is the X-API-Key of a self-hosted server running in keyed mode.
Setup (stdio)
Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"verse": {
"command": "npx",
"args": ["-y", "@ctruhtech/verse-mcp"],
"env": { "VERSE_API_KEY": "paste-your-key" }
}
}
}Claude Code:
claude mcp add verse --env VERSE_API_KEY=paste-your-key -- npx -y @ctruhtech/verse-mcpCursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project), same JSON as Claude Desktop.
VS Code: .vscode/mcp.json:
{
"inputs": [{ "type": "promptString", "id": "verse-key", "description": "Verse API key", "password": true }],
"servers": {
"verse": {
"command": "npx",
"args": ["-y", "@ctruhtech/verse-mcp"],
"env": { "VERSE_API_KEY": "${input:verse-key}" }
}
}
}Remote (Streamable HTTP)
For clients that connect to a URL (ChatGPT connectors, Claude's custom connectors, hosted agents). Each caller sends their own key; nothing is stored between requests, and local file paths are disabled (pass public URLs). A request without a key is answered 401 with WWW-Authenticate: Bearer realm="verse-mcp" and a JSON-RPC error that says what to send.
{
"mcpServers": {
"verse": {
"url": "https://verse.ctruh.com/mcp",
"headers": { "Authorization": "Bearer paste-your-key" }
}
}
}Claude Code: claude mcp add --transport http verse https://verse.ctruh.com/mcp --header "Authorization: Bearer $VERSE_API_KEY".
To host it yourself:
VERSE_BASE_URL=https://verse.ctruh.com npx @ctruhtech/verse-mcp --http --port 8787 # http://127.0.0.1:8787/mcpPut TLS in front of it. To mount it inside an existing Node server instead:
import { createHttpHandler } from "@ctruhtech/verse-mcp";
const mcp = createHttpHandler({ baseUrl: "https://verse.ctruh.com" });
// in your request listener: if (url.pathname === "/mcp") return mcp(req, res);Command line
verse-mcp stdio server
verse-mcp --http [--port 8787] [--host 127.0.0.1] [--allow-anonymous]
verse-mcp --versionDevelop
npm install
npm run typecheck
npm test # scripted Verse origin, both transports, driven by the official MCP clientIssues and source: https://github.com/dev-vinayagastya/verse-mcp. Licence: MIT, see LICENSE.
Available Tools
9 toolsget_embed_codeGet embed code for a sceneARead-only
Get copy-paste code to embed a scene in a web page: an iframe (works anywhere), the <verse-viewer> element plus its script, and the plain url. For a private scene pass the share token from create_share_link as share_token.
Inputs: scene (required), load, title, aspect, +2 more.
get_scene_statusCheck a scene's build statusARead-only
Check whether an uploaded scene has finished building. Returns status (compiling | done | error), the stage, progress 0..1, an ETA while building, and the link once done. Job records are kept for 2 hours after upload; older scenes are looked up in your account (needs VERSE_API_KEY).
Inputs: scene (required).
list_camera_pathsList a scene's camera pathsARead-only
List the guided-tour camera paths of a scene (every scene gets an automatic default path after it builds) and the default one. Returns ids, names, modes (walk/fly), key counts and chapter labels, plus a ready-to-open tourLink that autoplays the default path.
Inputs: scene (required).
list_scenesList your scenesARead-only
List the scenes owned by your Verse account, newest first: id, link, visibility, size, views and open review comments. Needs VERSE_API_KEY set to your account token.
Inputs: limit.
reset_auto_camera_pathPlan the automatic tourAIdempotent
Re-plan the scene's automatic camera path (an eye-height walkthrough for interiors, a drone fly-through for exteriors, a 360 orbit for products) and make it the default. Returns a link that autoplays it. Owner only; needs an account token.
Inputs: scene (required).
set_camera_pathCreate a camera path (guided tour)A
Create a camera path: a guided walk or fly-through the share link can play. Give 2 to 256 keyframes, each with an eye position p, forward direction f and optional fov, dwell hold, ease, look-at target and chapter label. The first path becomes the scene's default; set make_default to promote later ones. If you only want a good default tour, use reset_auto_camera_path instead. Owner only; needs an account token.
Inputs: keys (required), scene (required), mode, name, +2 more.
upload_sceneUpload a 3D file and get a Verse linkA
Upload a 3D file and turn it into a shareable Verse link that opens in any browser. source is a local file path (stdio only) or a public http(s) URL the Verse server will fetch itself (Dropbox needs dl=1, Google Drive needs 'anyone with the link', S3/R2/GCS need a presigned URL). Accepts GLB, glTF, FBX, OBJ, IFC, USD/USDZ, PLY, SPLAT and point clouds (LAS/LAZ/E57). Large local files upload in resumable parts and survive dropped connections; progress is reported as notifications. By default the call waits for the build to finish and returns the link; if the build outlasts wait_seconds it returns the job id so you can poll get_scene_status. Result: link (open in a browser), scene (id), status.
Inputs: source (required), as, bake, kind, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a distinct resource+action target, and the descriptions proactively differentiate the two potentially confusable pairs: set_camera_path vs reset_auto_camera_path ('if you only want a good default tour, use reset_auto_camera_path instead') and upload_scene's returned link vs create_share_link. The remaining mild overlap is that both upload_scene and create_share_link return shareable links, which could momentarily confuse an agent about which to use for sharing an existing scene.
All nine tools follow a clean snake_case verb_noun pattern (upload_scene, get_scene_status, list_scenes, create_share_link, revoke_share_link, get_embed_code, list_camera_paths, set_camera_path, reset_auto_camera_path). Verbs are used consistently per action (list_/get_/create_/set_/reset_) and nouns map to clear resource families (scene, share_link, camera_path).
Nine tools is well within the ideal 3-15 range and each maps to a real step in the 3D hosting workflow: upload, poll status, list, share, revoke, embed, and tour management. No tool appears redundant or filler.
The core workflow (upload → build status → share link → embed → camera tour) is fully covered, but lifecycle gaps exist: there is no delete/remove scene, no update of scene metadata (e.g. rename), and no delete or edit of individual camera paths beyond resetting the auto path. These omissions will force agents to dead-end when cleanup or correction is needed.
Maintenance
Related MCP Connectors
Publish 3D scans, Gaussian splats and 360 tours as shareable spaces, and build guided tours in them
Build, edit and publish live 3D, AR and game scenes in ARClip from your AI assistant.
Edit, light and share Gaussian splats, 3D models and CAD scenes live in the ViewerStudio editor.
Generate, edit, and deploy immersive 3D/WebGL web projects from any MCP assistant.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to control and manipulate live 3D scenes across frameworks like Three.js, A-Frame, and Babylon.js using a comprehensive set of object and environment tools. It features an integrated in-world chat system that allows for real-time scene modifications directly from within the 3D canvas.3315 npm3MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate and modify Three.js 3D scenes by providing a wide range of tools for scene setup, cameras, geometry, materials, lighting, controls, loaders, animation, interaction, helpers, post-processing, environment, UI, physics, and XR.2-
- AlicenseNot gradedqualityBmaintenanceEnables agents to publish laser scans, Matterport exports, 3D Gaussian splats, 360 photos and video, meshes, and photo sets as virtual spaces, then build guided tours and scavenger hunts with 3D models, effects, sound, visual styles, and skies.2MIT
- AlicenseAqualityBmaintenanceEnables agents to generate 3D models from text prompts or reference images, download GLB files, check operation and subscription status, and re-download completed models using a browser login session.18MIT