mcpField
T
three.ws Assistant Widget

three.ws Assistant Widget

本地服务
three.ws开发工具255今天更新

关于 three.ws Assistant Widget

three.ws Assistant Widget 是一个 MCP 服务,可为网站生成可直接粘贴的悬浮式 3D 虚拟形象聊天机器人嵌入代码,供 AI 助手或开发者配置组件。它离线、确定性地生成代码,并验证配置值。

主要功能

  1. 01生成嵌入标签、框架 URL 或 JavaScript 代码
  2. 02配置虚拟形象、背景、模式和外观
  3. 03列出内置组件选项及属性
  4. 04验证并规范化配置值
  5. 05无需联网即可生成嵌入代码

适用场景

  1. 01为网站添加悬浮式虚拟形象聊天机器人
  2. 02生成用于嵌入的独立框架 URL
  3. 03查看可用虚拟形象和交互设置

MCP 相关

它向 MCP 客户端提供 `build_assistant_widget` 和 `list_assistant_options`,用于生成组件嵌入代码并列出支持的选项。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nirholas-assistant-widget": {
"command": "npx",
"args": [
"-y",
"@three-ws/assistant-mcp"
],
"env": {
"THREE_WS_BASE": "<THREE_WS_BASE>"
}
}
}
}
启动命令npx -y @three-ws/assistant-mcp
需要配置的环境变量
THREE_WS_BASEOrigin used in the generated embed URLs (script src, frame URL, builder link). Override only when targeting a preview or self-hosted three.ws deployment.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@three-ws/assistant-mcp0.1.2

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
modeenum否交互模式:"chat"(仅文本)、"speak"(仅语音)或 "both"(默认值)。chat | speak | both
namestring否助手/小组件标题中显示的名称。
agentstring否用于驱动助手的 three.ws Agent ID,也可直接选择头像。
badgeboolean否显示小型的 "three.ws" 署名徽章。默认开启。
voiceboolean否启动时开启语音(true)或关闭语音(false)。默认开启。
accentstring否小组件 UI 的强调色 "#hex"。默认值为 "#f97316"。非十六进制值将回退为默认值。
avatarstring否要显示的头像:three.ws 头像 ID、"/avatars/*.glb" 路径(例如 "/avatars/selfie-girl.glb")或完整的 GLB URL。省略时使用默认的人体模型。
contextstring否助手应了解的有关该网站的信息(用作聊天中的依据上下文)。
greetingstring否助手加载时显示的开场白。
positionenum否启动器所在的角落:"right"(默认)或 "left"。right | left
backgroundstring否头像后方的背景:"transparent"(默认)、"#hex" 颜色、预设值(ember、ocean、violet、forest、dusk、slate),或 "gradient:#aabbcc,#112233,160"。其他值将回退为透明。

详细介绍

three.ws

@three-ws/assistant-mcp

让任何 AI Agent 都能生成可直接粘贴的 three.ws 助手小组件——一个适用于任何网站的悬浮式 3D 头像聊天机器人。

npm 许可证 node MCP 注册表 three.ws


一个通过标准输入/输出(stdio)让任何 AI 助手都能为 three.ws 助手小组件生成可直接粘贴嵌入代码的 Model Context Protocol 服务。描述你希望助手的外观和行为,build_assistant_widget 就会返回可直接粘贴的 <script> 标签、用于 <iframe> 嵌入的独立框架 URL,以及等效的 ThreeAssistant.init({...}) JavaScript API 代码片段;这是一个悬浮式 3D 头像聊天机器人,可以显示在任何网站的角落中。list_assistant_options 会列出所有内置头像、背景预设、交互模式、聊天栏以及可设置的 data-* 属性。

这两个工具纯粹且离线运行:生成嵌入代码是基于本地验证器的确定性字符串逻辑。每个字段都会经过验证和限制,因此无效或恶意值会回退到安全默认值,生成的 HTML 始终格式正确。无需 API 密钥、签名器、付款,也不会发起网络请求。将 THREE_WS_BASE 指向某个部署(或保留默认值)即可使用。

安装

npm install @three-ws/assistant-mcp

也可以通过 npx 运行(无需安装):

npx -y @three-ws/assistant-mcp

快速开始

Claude Code,一行命令:

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

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

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

使用 MCP Inspector 检查可用功能:

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

工具

工具类型说明
build_assistant_widget只读将配置转换为可直接粘贴的 <script> 嵌入代码(仅包含非默认设置,作为 data-* 属性)、框架 URL、ThreeAssistant.init() 代码片段,以及规范化后的配置。
list_assistant_options只读列出所有内置头像、背景预设和语法、交互模式、聊天栏,以及完整的 data-* 属性参考。

build_assistant_widget 是一个纯函数:相同的配置始终生成相同的嵌入代码,且绝不会访问网络。生成的 <script> 标签仅包含与默认值不同的设置,因此最简配置会生成最精简的标签。frame_url 包含所有解析后的值(包括默认值),确保独立框架嵌入 <iframe> 时能够确定性地渲染。

输入参数

build_assistant_widget,全部为可选项:

字段类型 / 值默认值
avataravatar ID、/avatars/*.glb 路径或 GLB URLmannequin
agentthree.ws agent ID(可替代 avatar)(none)
backgroundtransparent | #hex | ember/ocean/violet/forest/dusk/slate | gradient:#a,#b[,angle]transparent
modechat | speak | bothboth
name字符串(≤ 60)(none)
greeting字符串(≤ 200)(none)
context字符串(≤ 500),助手应了解的网站信息(none)
accent#hex#f97316
positionright | leftright
voice布尔值,启动时打开 / 关闭语音on
badge布尔值,是否显示 three.ws 署名徽章on

任何未通过验证的值(无效的十六进制颜色、未知背景或超长字符串)都会回退到默认值,而不会被拒绝,因此始终能获得可用的嵌入组件。

list_assistant_options,filter(可选:avatars | backgrounds | modes | chat_lanes | attributes)。省略则获取全部内容。

示例

// build_assistant_widget
> {
    "avatar": "/avatars/selfie-girl.glb",
    "background": "ocean",
    "mode": "both",
    "name": "Aria",
    "greeting": "Hi! Ask me anything about the site.",
    "accent": "#00c2ff",
    "position": "left"
  }
{
  "ok": true,
  "snippet": "<script src=\"https://three.ws/assistant/v1.js\" async data-avatar=\"/avatars/selfie-girl.glb\" data-bg=\"ocean\" data-name=\"Aria\" data-greeting=\"Hi! Ask me anything about the site.\" data-accent=\"#00c2ff\" data-position=\"left\"></script>",
  "frame_url": "https://three.ws/assistant-frame?avatar=%2Favatars%2Fselfie-girl.glb&bg=ocean&mode=both&name=Aria&greeting=Hi%21+Ask+me+anything+about+the+site.&accent=%2300c2ff",
  "js_api": "ThreeAssistant.init({\n  \"bg\": \"ocean\",\n  \"mode\": \"both\",\n  \"accent\": \"#00c2ff\",\n  \"position\": \"left\",\n  \"avatar\": \"/avatars/selfie-girl.glb\",\n  \"name\": \"Aria\",\n  \"greeting\": \"Hi! Ask me anything about the site.\"\n});",
  "builder_url": "https://three.ws/assistant",
  "config": { "bg": "ocean", "mode": "both", "accent": "#00c2ff", "position": "left", "avatar": "/avatars/selfie-girl.glb", "name": "Aria", "greeting": "Hi! Ask me anything about the site." },
  "notes": "Chat runs on the free three.ws LLM chain by default (no key). Visitors can paste their own Groq or OpenRouter key in the widget settings for a private lane; that key stays in their browser."
}

将 snippet 粘贴到任意页面的 </body> 之前,或将 frame_url 放入 <iframe>。先在 three.ws/assistant 中进行视觉设计。

要求

  • Node.js >= 20。
  • 无需网络访问。THREE_WS_BASE 仅用于设置生成的 URL 中内置的来源。
环境变量
变量必需默认值
THREE_WS_BASE否https://three.ws

编程式使用

该软件包入口导出 TOOLS(每个工具定义包含:name、title、 description、inputSchema、annotations、handler)和 buildServer(),后者会返回一个 已完整注册、未附加传输的 McpServer。这两个工具均为纯函数且可离线使用,因此你 可以直接将其作为组件构建库调用,无需涉及 MCP 客户端。

// run from a checkout: node this-file.mjs
import { TOOLS, buildServer } from '@three-ws/assistant-mcp';

const build = TOOLS.find((t) => t.name === 'build_assistant_widget');
const { snippet } = await build.handler({ avatar: '/avatars/michelle.glb', background: 'dusk' });
console.log(snippet);

// Or hand the whole registered server to your own MCP transport.
buildServer();
<script src="https://three.ws/assistant/v1.js" async data-avatar="/avatars/michelle.glb" data-bg="dusk"></script>

链接


属于 three.ws SDK 套件,涵盖 3D AI Agent、链上身份和 Agent 支付。
网站 · 更新日志 · GitHub

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。