ClaudeCodeMod

All shelves / MCP servers

three.ws Loom

io.github.nirholas/loom-mcp · 231 stars · JavaScript · Apache-2.0

MCP server Browse the community 3D-creation gallery, fetch a creation with its viewer URL, and submit it.

Install

The repo has no one-line install. Follow its README.

Published as

  • npm@three-ws/loom-mcpstdio

From the server's entry in the official MCP Registry.

Open the repo

Configuration

NameSet asWhat it is
THREE_WS_BASEOptionalEnv varBase URL of the three.ws API that serves the Loom gallery (/api/loom). Override only when self-hosting or targeting a preview deployment.
THREE_WS_TIMEOUT_MSOptionalEnv varPer-request timeout in milliseconds for the live Loom reads and submissions.

Files

packages/loom-mcp/README.md

three.ws

@three-ws/loom-mcp

Loom — the three.ws community 3D-creation gallery, from any AI agent. Browse the public feed of community-forged GLB creations, fetch one with its viewer URL, and submit your own.

npm license node MCP Registry three.ws


A Model Context Protocol server that exposes Loom, the three.ws community 3D-creation gallery, over stdio. Browse what others have forged, pull any creation with a ready-to-embed viewer URL, and contribute your own GLB to the public feed.

Loom closes the loop with the rest of the three.ws 3D suite: forge a model with @three-ws/avatar-agent or compose a world with @three-ws/scene-mcp, then publish it here for the whole platform to see. Every read is live and public; submitting needs no key or account — it is gated server-side only by an IP rate limit.

Install

npm install @three-ws/loom-mcp

Or run with npx (no install):

npx @three-ws/loom-mcp

Quick start

Claude Code, one line:

claude mcp add loom -- npx -y @three-ws/loom-mcp

Claude Desktop / Cursor (claude_desktop_config.json or mcp.json):

{
	"mcpServers": {
		"loom": {
			"command": "npx",
			"args": ["-y", "@three-ws/loom-mcp"]
		}
	}
}

Inspect the surface with the MCP Inspector:

npx -y @modelcontextprotocol/inspector npx @three-ws/loom-mcp

Tools

Tool Type What it does
get_loom_feed read-only Browse the public gallery of community-forged 3D creations, newest-first, paginated via a nextBefore cursor.
get_creation read-only Fetch one creation by id, with its full metadata and an inline-previewable viewer URL + iframe.
submit_creation write Contribute a forged GLB to the public gallery. No key required; rate-limited (~20/hour per IP).

Each read returns the creation's glbUrl plus a viewer_url (the /forge/embed orbit + AR viewer), an og_image_url (social card), and a paste-ready iframe_snippet, so any MCP client can preview the model inline.

Input parameters

get_loom_feed — limit (1–120, default 60), before (ms-epoch cursor; pass the prior page's nextBefore to page backwards).

get_creation — id (required — the creation UUID).

submit_creation — prompt (required, ≤1000 chars), glbUrl (required — see allowed hosts below), author (optional attribution, ≤40 chars, defaults to anon), previewImageUrl, tier, backend (all optional).

Submitting a creation

submit_creation posts to the public, world-readable gallery — only submit models you intend to share. There is no account, key, or signer: the endpoint is open and gated server-side by an IP rate limit (~20 submissions/hour) plus strict input sanitization. author is free-text attribution, not an authenticated identity.

The glbUrl must be an https URL hosted on one of these domains (enforced both client-side here and server-side):

three.ws · r2.dev · cloudflarestorage.com · replicate.delivery · githubusercontent.com

Re-submitting the exact same glbUrl returns the existing creation instead of duplicating it. The dedupe is best-effort by design: it scans only the newest few entries, which is where an accidental re-POST lands. Re-submitting a GLB that has since scrolled down the feed creates a second record.

get_creation answers an id that no longer exists with a typed not_found error rather than an empty creation, so a stale id in a saved reference is unambiguous.

Example

// submit_creation
> {
    "prompt": "a cowboy hat, low-poly",
    "glbUrl": "https://three.ws/accessories/hat-cowboy.glb",
    "author": "nova",
    "backend": "hunyuan"
  }
{
  "ok": true,
  "creation": {
    "id": "f295398e-2d25-410d-a82f-c8725295a1b3",
    "prompt": "a cowboy hat, low-poly",
    "glbUrl": "https://three.ws/accessories/hat-cowboy.glb",
    "author": "nova",
    "createdAt": 1750000000000,
    "viewer_url": "https://three.ws/forge/embed?src=https%3A%2F%2Fthree.ws%2Faccessories%2Fhat-cowboy.glb&title=a+cowboy+hat%2C+low-poly",
    "og_image_url": "https://three.ws/api/avatar-og?src=https%3A%2F%2Fthree.ws%2Faccessories%2Fhat-cowboy.glb",
    "iframe_snippet": "<iframe src=\"https://three.ws/forge/embed?src=…\" width=\"640\" height=\"360\" …></iframe>"
  }
}
// get_loom_feed
> { "limit": 2 }
{ "ok": true, "count": 2, "nextBefore": 1749999000000, "has_more": true,
  "creations": [ { "id": "…", "prompt": "…", "glbUrl": "…", "viewer_url": "…", "iframe_snippet": "…" } ] }

Drop a creation's iframe_snippet onto any web page, or open its viewer_url to orbit the model (with AR on supported devices).

Examples

Runnable examples live in examples/:

node examples/list-tools.mjs     # every tool with its full input schema
node examples/browse-loom.mjs    # a page of the gallery + one creation's embed, live

Both spawn this server over stdio and read the live public gallery. They are deliberately read-only: submit_creation posts to a world-readable feed, so no example writes on your behalf. See examples/README.md for expected output.

Requirements

  • Node.js >= 20.
  • Network access to https://three.ws (or your own THREE_WS_BASE).

Environment variables

Variable Required Default
THREE_WS_BASE no https://three.ws
THREE_WS_TIMEOUT_MS no 20000

No API key, signer, or account is needed for any tool.

Links


Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub

Facts

Kind
MCP server
Repo
nirholas/three.ws
Group
Uncategorized
Stars
231
License
Apache-2.0
Language
JavaScript
Last push
2026-10-12
Forks
63
MCP Registry
io.github.nirholas/loom-mcp
Homepage
three.ws
Topics
animation, avatar, gltf, llm, mcp, webgl, 3d-generation, ai-agents, digital-human, generative-ai, glb, image-to-3d, mcp-server, model-context-protocol, solana, text-to-3d, threejs, web-components, webxr, x402

More on this shelf

  1. 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
  2. 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
  3. 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
  4. 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
  5. 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
  6. 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k