3D AI Agent Avatar
io.github.nirholasPublished by GitHub account nirholasv1.2.3Updated Oct 24, 2026
3D AI Agent Avatar — render any GLB, give it a Solana wallet, a voice, and pump.fun powers.
Overview
Local MCP server that inspects, validates and optimizes GLB models, spawns 3D avatars with voice, and runs Solana wallet and pump.fun operations.
- What you can do
- Inspect, validate, optimize and thumbnail any GLB model, and build three.ws viewer URLs or iframes
- List, spawn, dress and render avatars, and generate new 3D avatars from text or images via Replicate
- Synthesize speech in the avatar's voice through NVIDIA or OpenAI TTS
- Create Solana wallets with optional vanity prefixes, read balances, preview and send SOL
- Snapshot pump.fun markets, quote and execute Jupiter buys, launch tokens and collect creator fees
- Resolve .eth and .sol names to addresses
- When to use it
- Useful when you want an assistant to check or shrink 3D assets, produce avatar renders and voice clips, or manage Solana wallets and pump.fun trades from chat. The 3D tools and market snapshots work without any keys, so it is also worth adding just for GLB inspection.
- Requirements
- Node.js 20 or newer; runs locally via npx over stdio. No keys needed for the 3D tools and pump_snapshot. Optional keys: NVIDIA_API_KEY and OPENAI_API_KEY for speech, REPLICATE_API_TOKEN for avatar generation, HELIUS_API_KEY for enhanced snapshots, SOLANA_SECRET_KEY for signing, ETH_RPC_URL for .eth lookups. SOLANA_RPC_URL defaults to a public mainnet endpoint.
Installation
In SourceWeft
- Open 3D AI Agent Avatar in the dashboard and add it to a workspace.
- 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/avatar-agent
An MCP server that turns any GLB into a 3D AI agent — inspect/validate/optimize models, then give one a Solana wallet, a voice, and pump.fun powers.
[npm] [downloads] [license] [node] [mcp] [MCP Registry]
Install · Setup · Quick start · Tools · Requirements · three.ws
A single Model Context Protocol server that is two things at once. It is a general-purpose 3D toolkit —
inspect_glb,validate_glb,optimize_glb,thumbnail_glb, andviewer_urlwork on any GLB/glTF model, no avatar required, powered by@gltf-transform/coreand Khronos's officialgltf-validator. It is also a 3D AI agent in a box — spawn a textured GLB avatar, give it a voice (OpenAI TTS), hand it a Solana wallet, and run pump.fun operations (Jupiter swaps, atomic Jito-bundled launches, creator-fee collection). Built and maintained by three.ws. Registry name:io.github.nirholas/3D-AI-Agent-Avatar.
For a lightweight, read-only avatar viewer (no wallet, no signing), see the sibling package @three-ws/avatar-mcp, which renders a live, rotatable on-chain avatar inline in the chat.
Install
Run it directly with npx (no install needed) or install globally for the CLI:
Setup
Add the server to your MCP client. Claude Code, one line:
Claude Desktop / Cursor (JSON config):
The 3D tools (inspect_glb, validate_glb, optimize_glb, thumbnail_glb, viewer_url) and pump_snapshot work with no environment variables. Voice, generation, and signing tools need the keys in Requirements. Restart your client after editing the config.
Inspect the full tool surface in a GUI:
Quick start
Once connected, ask your client in plain language:
Inspect
https://three.ws/avatars/cz.glb— how many triangles? Then validate it against the Khronos spec and optimize it with Draco.
Runs inspect_glb → validate_glb → optimize_glb({ draco: true }), returning the rewritten GLB inline with honest before/after sizes. Note that cz.glb already ships EXT_meshopt_compression + WebP textures, so re-encoding it with Draco reports a negative savedBytes: the pipeline never hides that, and an uncompressed source is where the wins actually are.
Spawn the
czavatar, give him shades, mint him athree-prefixed Solana wallet, pull a snapshot of $THREE, and have him say "we're so back."
Runs spawn_avatar → dress_avatar → wallet_create({ vanityPrefix: "three" }) → pump_snapshot → speak.
Tools
All 24 tools are free MCP tools: there is no per-call x402 charge. Tools marked execution sign and broadcast real Solana transactions that move real funds; configure your client's tool-approval flow for them.
Every tool ships MCP tool annotations: reads advertise readOnlyHint: true, and the four execution tools (wallet_send, pump_buy, pump_launch, pump_collect_fees) are flagged destructiveHint: true, so annotation-aware MCP clients prompt for confirmation before running them. The hints are advisory — the server-side REQUIRE_CONFIRM gate and spend caps (see Safety) apply regardless of client.
3D toolkit — works on any GLB, no avatar required
Avatar
Voice
Wallet
pump.fun
Identity
How atomic pump.fun works
The pump_launch and pump_collect_fees tools wrap two patterns:
- Launch — the create tx's
payerKeyis the creator wallet, so the on-chaincreatorfield (which receives pump.fun creator fees forever) is the creator wallet. The creator does not need to hold SOL: the funder transfers rent + tip in Tx1 of the same Jito bundle. Either both txs land or neither does. - Collect — even if a creator key is shared or leaked, collect-and-drain runs as a single tx inside a Jito bundle, so no competing collector can interleave a tx between
collectCoinCreatorFeeand the drain.
If you start hitting Bundles must write lock at least one tip account, the Jito tip-account list has rotated.
These tools accept an arbitrary mint supplied at runtime — generic plumbing for launching and managing your own coin. $THREE (FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump) is the only coin three.ws promotes.
Requirements
- Node
>=20.
Per-tool environment variables (all optional — set only what you use):
Safety
wallet_send, pump_buy, pump_launch, and pump_collect_fees execute real on-chain transactions. The server makes no judgment about inputs — with a valid signer it does exactly what it is told. Secrets are never logged or persisted; the secret from wallet_create is returned once.
Four layers keep that power in check:
- Tool annotations — the four execution tools are flagged
destructiveHint: true, so annotation-aware MCP clients (Claude Code, Claude Desktop, Cursor) surface a confirmation prompt before running them. Read-only tools are flaggedreadOnlyHint: trueand can be safely auto-approved. - Confirmation gate — with
REQUIRE_CONFIRMon (the default), every execution call returnsconfirmation_requireduntil re-issued withconfirm: true, independent of the client. - Spend caps —
MAX_SOL_PER_TX(default 0.5 SOL) bounds every send, buy, tip, and drain server-side. Enforced in the signing libs themselves, so every path — direct, bundled, atomic — is covered. - Recipient allowlist — set
RECIPIENT_ALLOWLISTand any SOL destination outside the list is refused before a transaction is built.
Errors
A failed tool call returns an MCP error result (isError: true) whose text is a single JSON object — { "ok": false, "error": "<code>", "message": "…" }, plus status or the on-chain signature when available:
Execution errors that occur after broadcast include the transaction signature so you can verify the final on-chain state before retrying — never assume a failed response means no funds moved.
Links
- Homepage: https://three.ws
- Sibling package:
@three-ws/avatar-mcp— live, read-only avatar viewer for MCP - Changelog: https://three.ws/changelog
- Issues: https://github.com/nirholas/three.ws/issues
- License: Apache-2.0, see LICENSE
Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub
Source: packages/avatar-agent-mcp/README.md at commit 0e68f46
Tools
0Version history
2- v1.2.3LatestOct 10, 2026
- v1.2.2Sep 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