3D AI Agent Avatar

io.github.nirholas由 GitHub 账号 nirholas 发布v1.2.3更新于 Oct 24, 2026

3D AI Agent Avatar — render any GLB, give it a Solana wallet, a voice, and pump.fun powers.

概览

AI 生成的概览

本地 MCP 服务器:检查、校验与优化 GLB 模型,生成带语音的 3D 虚拟形象,并执行 Solana 钱包与 pump.fun 操作。

可以做什么
  • 检查、校验、优化任意 GLB 模型并生成缩略图,构建 three.ws 查看器链接或 iframe
  • 列出、生成、装扮并渲染虚拟形象,并通过 Replicate 由文字或图片生成 3D 形象
  • 用 NVIDIA 或 OpenAI TTS 以形象的声音合成语音
  • 创建 Solana 钱包(可选靓号前缀)、查询余额、预览并发送 SOL
  • 获取 pump.fun 行情快照,报价并执行 Jupiter 买入、发行代币、收取创作者费用
  • 将 .eth 与 .sol 域名解析为地址
适用场景
适合让助手检查或压缩 3D 素材、产出形象渲染图与语音,或在对话中管理 Solana 钱包和 pump.fun 交易。3D 工具与行情快照无需任何密钥即可使用,因此仅为 GLB 检查也值得安装。
运行要求
需要 Node.js 20 或更高版本,通过 npx 以 stdio 在本地运行。3D 工具与 pump_snapshot 无需密钥。可选密钥:语音需 NVIDIA_API_KEY 与 OPENAI_API_KEY,形象生成需 REPLICATE_API_TOKEN,增强快照需 HELIUS_API_KEY,签名需 SOLANA_SECRET_KEY,.eth 解析需 ETH_RPC_URL。SOLANA_RPC_URL 默认使用公共主网端点。
安装前请注意
wallet_send、pump_buy、pump_launch、pump_collect_fees 四个工具会签名并广播真实主网交易,动用真实资金。SOLANA_SECRET_KEY 以及 wallet_create 返回的密钥等同于可花费的资金,须像现金一样保管。服务器会照指令执行,建议保持 REQUIRE_CONFIRM 开启,设置 MAX_SOL_PER_TX 与 RECIPIENT_ALLOWLIST,并先查看预览。模型地址、缩略图与渲染会发送到托管的 three.ws 服务,形象生成会发送到 Replicate。

安装

在 SourceWeft 中

  1. 打开 控制台中的 3D AI Agent Avatar,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[three.ws]

@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, and viewer_url work on any GLB/glTF model, no avatar required, powered by @gltf-transform/core and Khronos's official gltf-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

bash
npm install @three-ws/avatar-agent

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

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

Setup

Add the server to your MCP client. Claude Code, one line:

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

Claude Desktop / Cursor (JSON config):

json
{	"mcpServers": {		"avatar-agent": {			"command": "npx",			"args": ["-y", "@three-ws/avatar-agent"],			"env": {				"SOLANA_RPC_URL": "https://api.mainnet-beta.solana.com",				"OPENAI_API_KEY": "sk-...",				"REPLICATE_API_TOKEN": "r8_..."			}		}	}}

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:

bash
npx -y @modelcontextprotocol/inspector npx -y @three-ws/avatar-agent

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 cz avatar, give him shades, mint him a three-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

ToolWhat it does
inspect_glbMesh / material / texture / animation / skin breakdown, bounding box, vertex and triangle counts. @gltf-transform/core.
validate_glbRuns Khronos's official gltf-validator; returns errors, warnings, infos, hints with JSON pointers.
optimize_glbDedup → prune → weld → optional Draco. Returns the rewritten bytes inline with before/after sizes and a signed savedBytes (negative when re-encoding an already-compressed model costs more than it saves). Draco- and meshopt-compressed inputs are decoded on read, so a compressed avatar works like any other.
thumbnail_glbRenders any GLB to a PNG via three.ws's hosted three-light rig + auto-framing camera. Returns base64 PNG inline.
viewer_urlBuilds a three.ws/viewer?... URL + paste-ready iframe for any GLB or avatar session (background, auto-rotate, camera preset or explicit orbit, AR mode, dimensions).

Avatar

ToolWhat it does
list_avatarsCatalog of default GLB avatars (default, cz), accessories, and pose presets.
list_animationsLive fetch of three.ws's pose presets (T-pose, wave, thinker, jump, dance, warrior2, …) grouped by category.
spawn_avatarCreates an avatar session from a preset or custom GLB URL. Returns a sessionId.
dress_avatarApplies accessories + a pose to a session.
render_avatarRenders a posed avatar to a PNG — pose preset + camera orbit (theta/phi/radius) + ARKit-52 facial expression.
generate_avatarText/image-to-3D via Replicate (Hunyuan-3D). New session preloaded with the generated GLB.

Voice

ToolWhat it does
speakSynthesizes speech in the avatar's voice — free NVIDIA Magpie TTS lane first (NVIDIA_API_KEY), OpenAI TTS backstop (OPENAI_API_KEY). Returns base64 audio the client plays.

Wallet

ToolWhat it does
wallet_createGenerates a Solana keypair. Optional vanity grinder (vanityPrefix: "three"). Secret is returned once.
wallet_balanceReads SOL + all SPL token balances (incl. Token-2022).
wallet_send_previewPreviews a wallet_send: sender, recipient, amount, network fee, balance before and after, and any rule that would refuse it. Signs nothing.
wallet_sendSends SOL on mainnet. Execution.

pump.fun

ToolWhat it does
pump_snapshotLive market snapshot: USD price (Jupiter), 24h volume + DEX (Dexscreener), pump.fun metadata, top-holder distribution. Pass target: "three" for $THREE when THREE_MINT is set. Read-only, no signer.
pump_buy_quoteQuotes a pump_buy for the exact amount and slippage: SOL spent, expected and minimum tokens, price impact, route and fees. Signs nothing; pass its quote_id to pump_buy.
pump_buyJupiter swap, direct or Jito-bundled (funder→buyer transfer + swap atomic). Accepts any runtime mint. Execution.
pump_launch_previewPreviews a pump_launch: funder and creator addresses, rent, dev buy, bundle tip, the funder's total and any rule that would refuse it. Signs, uploads and mints nothing.
pump_launchAtomic launch via Jito bundle: separate funder + creator wallets, both txs in the same block. Uploads metadata to pump.fun IPFS if no URI is supplied. Execution.
pump_collect_previewPreviews pump_collect_fees: the live fee vault balance, rent kept behind, the exact SOL that would reach the destination, and any rule that would refuse it. Signs nothing.
pump_collect_feesAtomic collect: collectCoinCreatorFee + drain to a safe wallet in one tx inside a Jito bundle — resistant to a leaked creator key. Execution.

Identity

ToolWhat it does
ens_sns_resolveResolves .eth (ENS) and .sol (SNS) names to addresses, with reverse + favorite-domain lookups. SNS is read straight from the SPL Name Service accounts on your SOLANA_RPC_URL, so it depends on no third-party name service.

How atomic pump.fun works

The pump_launch and pump_collect_fees tools wrap two patterns:

  • Launch — the create tx's payerKey is the creator wallet, so the on-chain creator field (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 collectCoinCreatorFee and 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):

VariableRequired forNotes
SOLANA_RPC_URLAll Solana opsDefaults to https://api.mainnet-beta.solana.com. Bring your own (Helius / Quicknode / Triton) for production traffic.
ETH_RPC_URLens_sns_resolve (.eth lane)Strongly recommended. Without it ethers falls back to its shared community endpoints, which are throttled hard enough that .eth lookups routinely time out. .sol needs nothing here. Alias: MAINNET_RPC_URL.
HELIUS_API_KEYpump_snapshot (enhanced)Adds exact supply + DAS data.
NVIDIA_API_KEYspeak (free lane)NVIDIA NIM key (nvapi-…) — leads the TTS provider chain with Magpie TTS.
OPENAI_API_KEYspeak (paid backstop)Used against api.openai.com/v1/audio/speech when the free lane is unavailable.
REPLICATE_API_TOKENgenerate_avatarReplicate text/image-to-3D.
REPLICATE_TEXT_TO_AVATAR_MODELgenerate_avatarPin a commercial-OK version, e.g. latest tencent/hunyuan-3d-3.1.
SOLANA_SECRET_KEYwallet_send / pump_buy default signerPer-call secret args override. Alias: FUNDER_SECRET. Treat like cash.
THREE_MINTpump_snapshot / pump_buy shorthandSet so tools accept target: "three". Defaults to the canonical $THREE mint.
MAX_SOL_PER_TXexecution toolsPer-transaction spend cap in SOL. Default 0.5.
REQUIRE_CONFIRMexecution toolsDefault on: execution calls refuse until re-issued with confirm: true. Set 0/false to disable.
RECIPIENT_ALLOWLISTexecution toolsOptional comma-separated base58 pubkeys. When set, SOL destinations (wallet_send, the pump_collect_fees drain target) must be in the list.
NAME_RESOLVE_TIMEOUT_MSens_sns_resolveBudget for one lane of a name lookup. Default 15000. Raise it when pointing at a slow self-hosted RPC.
VIEWER_BASEviewer_urlDefaults to https://three.ws/viewer. Override to point links at a self-hosted viewer.
THREE_WS_BASEhosted rendering / animation catalogDefaults to https://three.ws. Override only when self-hosting the three.ws backend.

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:

  1. 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 flagged readOnlyHint: true and can be safely auto-approved.
  2. Confirmation gate — with REQUIRE_CONFIRM on (the default), every execution call returns confirmation_required until re-issued with confirm: true, independent of the client.
  3. 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.
  4. Recipient allowlist — set RECIPIENT_ALLOWLIST and 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:

errorMeaningRecovery
confirmation_requiredAn execution tool was called without confirm: true while REQUIRE_CONFIRM is on. Returned as a normal (non-error) result — a deliberate refusal, not a failure.Re-issue the same call with confirm: true.
over_spend_capThe requested SOL amount exceeds MAX_SOL_PER_TX.Lower the amount, or raise MAX_SOL_PER_TX in the server env (you accept the risk).
recipient_not_allowedRECIPIENT_ALLOWLIST is set and the destination isn't in it.Send to an allowlisted address or extend the list.
invalid_amountA zero, negative, or non-numeric SOL amount.Pass a positive number.
vault_too_small / nothing_to_drainpump_collect_fees found no (or dust-level) creator fees to collect.Nothing to do — check back after more trading volume.
simulation_failedThe transaction failed Solana preflight simulation; nothing was broadcast.The message carries the program logs — fix the underlying cause and retry.
bad_rpc_url / insecure_rpc_urlSOLANA_RPC_URL is malformed or plain-http on a non-localhost host.Use an https:// RPC endpoint (or http://localhost for a local validator).
bad_policy_configMAX_SOL_PER_TX (or another policy var) is not a non-negative number.Fix the env var value.

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


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

来源:packages/avatar-agent-mcp/README.md,提交 0e68f46

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v1.2.3最新Oct 10, 2026
  2. v1.2.2Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分