mcpField
T
three.ws Avatars

three.ws Avatars

Local
three.wsMedia & Design255Updated today

About three.ws Avatars

A read-only MCP server that renders three.ws 3D avatars inside MCP clients or returns embed code. It needs no API key and targets users who want to show avatars in chat or on web pages.

Key features

  1. 01Inline rotatable 3D avatar rendering in chat
  2. 02Paste-ready iframe embed code generation
  3. 03Avatar metadata lookup by id or handle
  4. 04Selection by id, @handle, or GLB URL
  5. 05Tools annotated as read-only and idempotent

Use cases

  1. 01Previewing three.ws avatars in Claude Desktop or Cursor
  2. 02Embedding an avatar on a website or OBS overlay
  3. 03Looking up metadata for public avatars

MCP support

This is an MCP server exposing the render_avatar, avatar_embed_code and get_avatar tools, plus the showcase-avatar prompt. render_avatar declares a ui:// resource so MCP Apps-capable clients can show an interactive 3D model.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"nirholas-threews-avatar": {
"command": "npx",
"args": [
"-y",
"@three-ws/avatar-mcp"
],
"env": {
"THREEWS_BASE_URL": "<THREEWS_BASE_URL>"
}
}
}
}
Run commandnpx -y @three-ws/avatar-mcp
Environment variables to set
THREEWS_BASE_URLthree.ws host to read avatars from. Defaults to https://three.ws.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@three-ws/avatar-mcp0.3.2

Tools

3

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
idstringNoAvatar UUID (from a three.ws avatar URL or get_avatar).
modelstringNoDirect GLB/GLTF model URL (skips lookup; used as-is).
sceneenumNoFraming for the rendered preview image.portrait | headshot | upper-body | full-body
handlestringNothree.ws username/handle, e.g. "nirholas" or "@nirholas".
heightintegerNo
backgroundenumNoBackdrop for the preview/embed.transparent | dark | light
auto_rotatebooleanNoSpin the model in the interactive view.

Details

From the project README

three.ws

@three-ws/avatar-mcp

An MCP server that drops a live, rotatable 3D avatar into any chat — interactive in the conversation, embeddable anywhere. Free, no API key.

npm downloads license node mcp MCP Registry

Install · Setup · Quick start · Tools · Requirements · three.ws


A thin, zero-config, read-only Model Context Protocol server that brings three.ws 3D avatars into any MCP client — Claude Desktop, Claude Code, Cursor, or any other host. Render a live, rotatable avatar inline, get a paste-anywhere embed iframe, or fetch avatar metadata. Every tool reads live from the real three.ws endpoints — no mock data. Public and unlisted avatars need no API key. Registry name: io.github.nirholas/threews-avatar. Built by three.ws.

Need wallets, voice, generation, or pump.fun powers? See the sibling package @three-ws/avatar-agent, a full 3D AI agent in a box.

Install

npm install @three-ws/avatar-mcp

Run it directly with npx (no install needed) or install globally for the avatar-mcp CLI:

npx -y @three-ws/avatar-mcp           # MCP stdio server
npm install -g @three-ws/avatar-mcp   # exposes `avatar-mcp`

Setup

Claude Code, one line:

claude mcp add threews-avatar -- npx -y @three-ws/avatar-mcp

Claude Desktop / Cursor (JSON config):

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

No environment variables are required. To read avatars from a different host (e.g. a preview deployment), set THREEWS_BASE_URL. Restart your client after editing the config.

Inspect the tool surface in a GUI:

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

Quick start

Once connected, ask your client in plain language:

Render avatar bf58f7fc-64b3-4a92-8c27-dd472fc04b58 in the chat, dark background, auto-rotating.

(That UUID is a real public avatar. Any avatar's id is the last path segment of its three.ws URL, and GET https://three.ws/api/avatars/public lists more. A @handle works too, for any three.ws user who has published a public avatar.)

render_avatar returns three things so it looks great in every client:

  1. a preview image that renders inline everywhere,
  2. an interactive text/html resource — a real <model-viewer> you can orbit and zoom, for hosts that render HTML resources, and
  3. the embed URL + iframe to drop the live avatar into any page.

Tools

All three tools are free, read-only, and annotated (readOnlyHint, idempotentHint, openWorldHint) so hosts can run them without confirmation prompts. There is no x402 charge. Identify an avatar by id (UUID), handle (a three.ws username, with or without the @, that has a public avatar), or a raw model GLB URL.

ToolSelectorsWhat it does
render_avatarid · handle · modelRenders the avatar inline. On MCP Apps-capable hosts it shows a live, rotatable 3D model right in the chat; other clients get a preview image + embed URL. Params: background (transparent/dark/light), scene (portrait/headshot/upper-body/full-body), auto_rotate, height (160–1080).
avatar_embed_codeid · handle · modelReturns a ready-to-paste <iframe> that embeds the live avatar anywhere — as easy as a YouTube embed. Params: background, width (CSS), height (160–1080), idle (loop the idle animation), overlay (chrome-free mode for OBS/overlays).
get_avatarid · handleFetches avatar metadata: name, GLB model_url, owner, visibility.
Interactive 3D in the chat — the differentiator

render_avatar is an MCP App (SEP-1865): it declares a ui:// resource that supporting hosts render in a sandboxed iframe — a real, orbit-and-zoom <model-viewer>, not a static image. The avatar is live in the conversation: rotate it, zoom it, watch it idle, without leaving the chat. Hosts without MCP Apps support still get a rendered preview image and a one-tap live embed, so the tool degrades gracefully everywhere.

Example calls
// render_avatar — live, rotatable avatar in chat
{ "id": "bf58f7fc-64b3-4a92-8c27-dd472fc04b58", "background": "dark", "auto_rotate": true }

// avatar_embed_code — paste into any website
{ "id": "bf58f7fc-64b3-4a92-8c27-dd472fc04b58", "height": 560 }

// get_avatar: metadata, by @handle instead of id
{ "handle": "@your-handle" }

get_avatar on that id returns, live:

{
	"id": "bf58f7fc-64b3-4a92-8c27-dd472fc04b58",
	"name": "Jade",
	"slug": "jade-fe1a51",
	"model_url": "https://pub-2534e921bf9c4314addcd4d8a6e98b7b.r2.dev/u/299bdfa7-d848-4865-bdb1-0db23fc3b431/jade-fe1a51.glb",
	"thumbnail": null,
	"visibility": "public"
}

Every tool also advertises an outputSchema describing its structuredContent, so typed clients can consume results without re-parsing the text blocks.

Prompts

PromptArgumentsWhat it does
showcase-avataravatar — id (UUID) or @handleOne-step showcase: renders the live, rotatable avatar inline and produces the embed iframe, ending with a copy-paste summary (name, viewer URL, embed URL, <iframe> snippet).

How it works

Each selector maps to a real three.ws endpoint. Raw model URLs must be https:// (or http://localhost for dev); other schemes are rejected.

Selector / assetEndpoint
idGET https://three.ws/api/avatars/:id
handleGET https://three.ws/api/users/:handle/avatar
preview imageGET https://three.ws/api/avatar/render?avatar=:id
live embedhttps://three.ws/avatar-embed.html?...
viewerhttps://three.ws/viewer?src=:glb

Requirements

  • Node >=20.
  • No credentials. Public and unlisted avatars need no API key.
VariableRequiredNotes
THREEWS_BASE_URLOptionalthree.ws host to read from. Defaults to https://three.ws.
THREEWS_TIMEOUT_MSOptionalPer-request network timeout. Defaults to 30000.

Links


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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.