three.ws Avatars

io.github.nirholasPublished by GitHub account nirholasv0.3.2Updated Oct 24, 2026

three.ws 3D avatars in your agent: render a live, interactive 3D avatar inline, or get an embed.

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & Design

Overview

AI-generated overview

A local MCP server that lets an assistant render live, rotatable three.ws 3D avatars in chat, produce embed iframes, and fetch avatar metadata.

What you can do
Render an avatar inline by id, handle or GLB URL, with background, scene, auto-rotate and height options; hosts with MCP Apps support show an orbitable 3D model, others get a preview image and embed link. Generate a ready-to-paste iframe embed for any avatar, with width, height, idle animation and overlay options. Fetch avatar metadata such as name, model URL, owner and visibility. Run a showcase prompt that renders an avatar and returns its embed snippet in one step.
When to use it
Useful when you want to show a three.ws avatar inside a chat or drop a live 3D avatar into a web page, and want the assistant to look up avatar details or produce embed code without leaving the conversation.
Requirements
Runs locally over stdio via npx from the npm package @three-ws/avatar-mcp; needs Node.js 20 or newer. No API key or credentials are required for public and unlisted avatars. Network access to three.ws is needed; the optional THREEWS_BASE_URL variable points at a different host and THREEWS_TIMEOUT_MS sets the request timeout.
Before you install
All tools are described as read-only and free, with no payment step. Requests go to three.ws endpoints, so avatar ids, handles and model URLs you ask about are sent to that service. Raw model URLs must use https (or http on localhost). Setting THREEWS_BASE_URL to an untrusted host would send requests there.

Installation

In SourceWeft

  1. Open three.ws Avatars in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

bash
npm install @three-ws/avatar-mcp

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

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

Setup

Claude Code, one line:

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

Claude Desktop / Cursor (JSON config):

json
{	"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:

bash
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

jsonc
// 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:

json
{	"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

Source: packages/threews-avatar-mcp/README.md at commit c8f2cde

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v0.3.2LatestOct 10, 2026
  2. v0.3.1Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts