MCP server for Atlassian Confluence Data Center - access and manage content
3dCMS is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Build a real 3D website by chatting: pages, models and text in space, published to a live URL.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http 3dcms-mcp https://3dcms.info/mcp
# 2 — ask your agent for something these tools do
# list_scenes, probe_lighting, probe_framing and 10 more
3dCMS costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http 3dcms-mcp https://3dcms.info/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
13 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List the 3D scenes saved in your 3dCMS account (editable "sources"), newest first, 40 at a time. Returns each scene's id, name, page count, last-updated time and (when published) its site slug. Pass q to search by name or slug instead of paging through a big account; page with the nextOffset the previous reply gave you. Use a scene id with get_scene and apply_ops.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Search text matched against the scene name and its published slug. Omit to list. |
| limit | number | no | Max results, 1-100 (default 40). |
| offset | number | no | Skip this many results - page with the nextOffset the previous reply gave you. |
For one world point, the contribution of EVERY light in the scene, computed from the saved scene (no render, instant): each light node in reach with its value (three's falloff and spot cone, from the node's WORLD position and aim), the studio sun or the live sky, and ambient = lighting.env.intensity NAMED as a term, sorted by contribution, plus a why on each light that does not reach (out of r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| position | array | yes | World point [x,y,z] in meters, e.g. the middle of the ceiling that looks lit. |
| nodeId | string | no | The node whose surface this point is on, for its albedo and room binding. |
Read a saved camera (cameraId), or an exact pose, as a visitor sees it at the screen shapes they actually have (16:9 desktop and 9:16 phone by default), against the rules a photographer and a web designer use. A PAGE shot (a page's own camera, its arrivalCameraId or a camera inside the page, with the card in view) should hold the whole card on every screen, most of the width, within 60 degrees of
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| cameraId | string | no | A camera node id. Its fitWidth, its page and its role (entry, arrival, via, sign target) are all read. |
| position | array | no | Instead of cameraId: an eye position [x,y,z], world meters. |
| target | array | no | With position: the point the eye looks at. |
| fov | number | no | With position: vertical fov in degrees (default 42). |
| aspects | array | no | Screen shapes to read, width over height, 1 to 4 of them from 0.3 to 3.5 (default [1.778, 0.5625]: a desktop and a phone held upright). |
A designer's critique of a scene (or one page with pageId) against its BRIEF: what it is for (settings.design, or, when none is declared, what it reads as and why), its palette (dominant, secondary, accent, harmony, temperature, key, and whether that serves the intent and the mood), text contrast, heading hierarchy, every arrival and entry shot judged by probe_framing, wayfinding, the light's key
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| pageId | string | no | Review one page (a webpage node id): its brief, its content, its arrival shot. Omit for the whole scene. |
Put a file into the account's asset library and get back its /assets url to use in apply_ops (a glb on a geometry node as data {primitive:"imported", assetUrl}, an image in materialMaps or a webImage src, an mp3 in an audioClip: data.audioClip = {src, volume 0-1, loop, mode, muted} on any node; get_scene reports it as audio). A url may be a picture (JPEG, PNG, WebP, GIF, AVIF, up to 12 MB), a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | no | A public http(s) URL to import: a picture, a .glb model or a sound. |
| assetId | string | no | Copy this shared library asset (a list_assets id with shared:true) into your library instead. |
| dataBase64 | string | no | The file, base64-encoded. Needs filename. |
| filename | string | no | File name WITH extension (e.g. "sign.glb", "poster.png"); required with dataBase64, optional with path. |
| path | string | no | A local file path (only when this MCP server runs on your own computer). |
| label | string | no | A human label for the library. |
| keywords | array | no | Search keywords for list_assets. |
Make a flat surface that looks PRINTED ON a real material: a quote on a stretched canvas, a poster, a shop sign, a label, a plaque, a book cover. Start from a base: a texture set from the library (setId from list_assets; tiled at tileSize meters, or mode "stretch" for a whole-sheet scan), explicit maps {baseColor, normal, ormh} urls, or a flat color; tint re-colours the base and keep
| Parameter | Type | Required | Notes |
|---|---|---|---|
| width | number | yes | Surface width in meters. |
| height | number | yes | Surface height in meters. |
| base | object | no | The material the surface is made of. |
| layers | array | no | Painted on in order (max 24). |
| output | string | no | — |
| depth | number | no | Panel thickness in meters (default 0.03). |
| resolution | number | no | Pixels on the long side, 256 to 2048 (default 2048). |
| normalStrength | number | no | Relief strength, 0 to 4 (default 1). |
| label | string | no | — |
| keywords | array | no | — |
Measure nodes in a saved scene (analytic, instant, no render). For each node in nodeIds: its world centre, its size along its own axes after every scale above it, its world bounding box, and clearance: the nearest visible thing in each world direction (+x, -x, +y, -y, +z, -z) that overlaps it across that axis, with the gap in meters (how far a frame hangs off its wall, how much room a camera has
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| nodeIds | array | no | Up to 24 node ids to measure (and to pair up). |
| point | array | no | A world point [x,y,z] to measure the clearance around. |
Read a compact, high-signal summary of one scene: its nodes (id, type, name, parent, position, rotation [euler radians], scale, primitive, real size under the keys data takes (width/height/depth, radius, height, tube: write it back as patch.data as-is), assigned material; an imported model also carries its bounds {min,max}, size [w,h,d] and assetFile, the tail of its list_assets url, so a fram
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes (e.g. "src-1a2b3c4d"). |
| type | string | no | Only nodes of this type (geometry, webText, webLink, webpage, light, cable, particle, group, camera, ...). Pair with the counts a first call returns to see what is worth asking for. |
| name | string | no | Only nodes whose name is exactly this. |
| nameContains | string | no | Only nodes whose name contains this (case-sensitive). scatter names copies "<source> 1", "<source> 2", so this is how you find a scattered set. |
| parentId | string | no | Only the direct children of this node. |
| limit | number | no | Max nodes to return, 1-300 (default 250). |
| offset | number | no | Skip this many matching nodes - page with the nextOffset the previous reply gave you. |
| materials | number | no | Pass 0 to omit the material library when paging a long node list you already have. |
| settings | number | no | The scene-level settings block (lighting, viewport, environment, audio, sky) rides on an unfiltered first-page call by default. Pass 1 to get it on a filtered or paged call, 0 to omit it. |
Create a new scene in your 3dCMS account and return its id: empty, or with copyFrom a full COPY of one of your scenes (Save As), the way to try a big change on a new version while the original and its published site stay untouched. Build it up with apply_ops. It appears in your account and opens in the 3dCMS editor; a copy is unpublished until publish_scene.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | A name for the new scene. |
| copyFrom | string | no | A scene id from list_scenes to copy every node, material and setting from. Omit for an empty scene. |
Edit a scene by applying a batch of operations ATOMICALLY (all-or-nothing). Call this for any add / move / edit / delete / duplicate / group / reparent / re-material. Reference existing nodes ONLY by the id shown in get_scene — never guess ids. To create a node and then modify or parent it in the same batch, put a tempId on the add op and use that same string as the id/parentId of later ops. Eac
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| operations | array | yes | Ordered edit operations, applied atomically. REFERENCE: SPACING: every foreground element on a panel (text, a link chip, a picture) is inset from it by the same margin, and the gaps between those elem |
Search the images, models and sounds in the account AND the shared public library (frames, props, texture sets; scope mine|shared|all, default all). A row with shared:true is copied in first with upload_asset {assetId}: place the url that returns, never the shared one. This is how you TEXTURE something with what the user already owns: search for the look you want, take the url of the result, a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Search terms, all of which must appear in the label or keywords. Omit to list the newest. |
| kind | string | no | "image" for textures, "glb" for 3D models, "audio" for sounds. Omit for all. |
| scope | string | no | "mine" = this account only, "shared" = the public library only, "all" (default) = both, yours first. |
| limit | number | no | Max results, 1-100 (default 40). |
| offset | number | no | Skip this many results - page with the nextOffset the previous reply gave you. |
Render the scene server-side (real WebGL, headless) and return screenshot image(s) — your EYES on the scene. Use it after apply_ops batches and after probe_framing, and judge each image as a photographer and a web designer would: one clear subject, on a third (for a page's own camera, the whole card at a readable angle); the horizon off the middle; the eye at a standing height; text legible and on
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| views | array | no | Camera views to capture. Omit for the visitor's entry view. |
| maxDim | number | no | Longest side of the image in pixels, 64-1920 (default 400; height is 0.625x). Smaller renders faster and is enough to judge placement; go large only for a final look. |
| timeoutSeconds | number | no | Per-view render budget in seconds, clamped 10-180 (default 45). Raise it for a big or texture-heavy scene instead of retrying a timeout at the same budget. |
| atSeconds | number | no | Seconds into the scene's animation the shot is taken at (0-600, default 0 = frame one). Every track and motion-path rider is frozen at that time, so a door with a 4 s swing is verified mid-swing at 2 |
Publish a saved scene to a PUBLIC, shareable URL so anyone can view it in 3D in a browser — no login required. PUBLISHING IS PARTLY IRREVERSIBLE: the URL is submitted to search engines (IndexNow) the moment it goes live, so it may appear in results even after a takedown. ALWAYS confirm with the user first, then call with confirm:true — without it this tool publishes nothing and returns what WOULD
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sceneId | string | yes | Scene id from list_scenes. |
| confirm | boolean | no | Must be exactly true to publish. Omit / false to get a needsConfirm summary for the user. |
| confirmReplace | boolean/string | no | Only after a reply with needsConfirm and willReplace, and the user's yes naming that site: pass willReplace.replaceToken exactly when it has one (siteSlug publishes), otherwise true. |
| listed | boolean | no | false publishes UNLISTED: reachable by its link, but kept off Explore and your creator profile, marked noindex and not submitted to search engines. Omit for a normal listed publish. |
| siteSlug | string | no | Publish onto one of YOUR existing sites by its slug (the part after /sites/ in its URL) instead of this scene's own. When that site shows another scene, the first call answers willReplace: name the si |
| shortLink | boolean | no | true also returns shortUrl, a short 3dcms.info/s/<code> link to the site (one stable code per site), for sharing and QR codes. Without confirm, a scene whose site is already live gets its shortUrl at |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install 3dCMS or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish 3dCMS can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.