Vrm Toolkit Mcp

io.github.dwarehouse1由 GitHub 账号 dwarehouse1 发布v0.1.1更新于 Oct 24, 2026

Inspect, validate and preview VRM / VRMA files from an AI agent (5 tools, local stdio server).

概览

AI 生成的概览

让助手检查、校验并预览本地的 VRM 虚拟形象与 VRMA 动画文件。

可以做什么
提供五个本地工具处理 VRM/VRMA 资源:vrm_inspect 以结构化 JSON 返回元数据、许可与权限字段、humanoid 骨骼映射、表情以及多边形和贴图统计;vrm_validate 返回带稳定错误码的检查清单,涵盖必需骨骼缺失、引用断裂、元数据/许可字段缺失、未知必需扩展和可配置的体积预算;vrma_inspect 报告动画轨道、目标骨骼、时长与估算帧率。两个渲染工具 vrm_snapshot 和 vrma_preview 使用本地已安装的 Chromium 系浏览器输出 PNG 静帧或最长 10 秒的 WebM 短片。
适用场景
适合在本机处理 VRM 虚拟形象或 VRMA 动作文件时使用,让助手核对元数据与授权信息、检查骨骼绑定与文件完整性,或在不打开 3D 编辑器的情况下快速生成静帧或动画预览。
运行要求
需要 Node.js 20 或更高版本,以 stdio 方式在本地运行(npx -y vrm-toolkit-mcp)。渲染类工具需要本机已安装 Chrome 或 Edge,可自动检测,也可通过环境变量 VRM_TOOLKIT_CHROME 指定。输入体积上限默认 512 MiB,可用 VRM_TOOLKIT_MAX_BYTES 覆盖。运行时无需账号、密钥或网络访问。
安装前请注意
处理全部在本地进行,服务器声明不建立网络连接、不发送遥测,只写入你指定的输出文件,因此请谨慎选择输出路径。渲染会启动本地无头浏览器,可选变量 VRM_TOOLKIT_CHROME 指向浏览器可执行文件路径。读取的元数据可能包含作者与许可条款,重新分发或商业使用前请先确认这些条款。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

vrm-toolkit-mcp

v0.1.1 — npm / GitHub

An MCP (Model Context Protocol) server that lets an AI agent inspect, validate and preview VRM / VRMA files on your machine. Five tools, stdio transport, no network access at runtime.

VRM / VRMAファイルの検品・情報抽出・プレビューをAIエージェントから使えるようにする MCPサーバーです。ツールは5本、stdioトランスポート、実行時のネットワークアクセスなし。

Tools / ツール

ToolWhat it does説明
vrm_inspectStructured JSON: meta (name/author/license and permission fields), humanoid bone map, expressions, polygon/texture statisticsメタ(名前/作者/ライセンス許諾)・ボーン・表情・ポリゴン/テクスチャ規模を構造化出力
vrm_validateFinding list: missing required humanoid bones, broken node references, missing meta/license fields, unknown required extensions, configurable size/triangle/texture budgetshumanoidマッピング欠落・参照切れ・メタ/ライセンス欠落・未知の必須拡張・サイズ超過などの検品リスト
vrma_inspectTracks, targeted humanoid bones, expression tracks, duration, estimated frame rateトラック・対象ボーン・表情トラック・尺・フレームレート推定
vrma_previewApplies a VRMA to a VRM and renders a PNG still or a short WebM clip (max 10 s) through local headless Chrome/EdgeVRMAをVRMに適用し、ローカルのヘッドレスChrome/EdgeでPNG静止画または短尺WebM動画を書き出し
vrm_snapshotRenders a rest-pose PNG with optional expression weights and view presets (front / three-quarter / side / face close-up)表情ウェイトとビュープリセット(正面/斜め/側面/顔アップ)を指定できる静止画スクリーンショット

Structural tools (vrm_inspect, vrm_validate, vrma_inspect) parse the GLB/glTF container directly in Node and need no browser. Rendering tools (vrma_preview, vrm_snapshot) use an already-installed Chromium-based browser via puppeteer-core; nothing is downloaded.

構造系3ツールはNode単体でGLB/glTFを直接パースし、ブラウザ不要。描画系2ツールは インストール済みのChromium系ブラウザをpuppeteer-coreで使います(追加ダウンロードなし)。

Supported inputs: VRM 0.x (extensions.VRM), VRM 1.0 (extensions.VRMC_vrm), VRMA (extensions.VRMC_vrm_animation), GLB container or plain glTF JSON.

Requirements / 動作条件

  • Node.js 20+
  • For vrma_preview / vrm_snapshot: a local Chrome or Edge (auto-detected; override with the VRM_TOOLKIT_CHROME environment variable)
  • Input size budget: 512 MiB by default (VRM_TOOLKIT_MAX_BYTES to override)

Setup / セットアップ

Register with Claude Code / Claude Codeへの登録:

bash
claude mcp add vrm-toolkit -- npx -y vrm-toolkit-mcp

Other MCP hosts / その他のMCPホスト: command npx, args ["-y", "vrm-toolkit-mcp"] (stdio).

From source / ソースから:

bash
npm installnpm run buildclaude mcp add vrm-toolkit -- node /absolute/path/to/vrm-toolkit/dist/main.js

Execution examples / 実行例

Real outputs from the local test run (2026-08-05, file paths shortened). ローカルテスト実行(2026-08-05)の実出力です(パスは短縮表記)。

vrm_inspect

Input: a VRoid Studio-exported VRM 1.0 avatar (15.7 MB).

json
{  "file": { "path": "...\\V1.vrm", "bytes": 15737992, "container": "glb" },  "vrm": { "specFamily": "vrm1", "specVersion": "1.0" },  "meta": {    "name": "V1",    "authors": ["D"],    "licenseUrl": "https://vrm.dev/licenses/1.0/",    "avatarPermission": "onlyAuthor",    "commercialUsage": "corporation",    "creditNotation": "required",    "allowRedistribution": false,    "modification": "prohibited"  },  "humanoid": {    "mappedBoneCount": 54,    "bones": [      { "bone": "hips", "node": 1, "nodeName": "J_Bip_C_Hips" },      { "bone": "spine", "node": 34, "nodeName": "J_Bip_C_Spine" }    ],    "missingRequiredBones": []  },  "expressions": { "presetCount": 14, "presets": ["happy", "angry", "sad", "..."] },  "geometry": {    "meshCount": 3,    "totalVertices": 103489,    "totalTriangles": 33484,    "perMesh": [      { "name": "Face (merged)", "vertices": 33640, "triangles": 7308 },      { "name": "Body (merged)", "vertices": 57128, "triangles": 11548 },      { "name": "Hair001 (merged)", "vertices": 12721, "triangles": 14628 }    ]  },  "textures": { "imageCount": 26, "totalImageBytes": 8033934, "maxDimension": 2048 },  "materials": { "materialCount": 17 }}

(Output truncated for readability; the tool returns the full bone and image lists.)

vrma_inspect

json
{  "file": { "path": "...\\motion-walk-forward.vrma", "bytes": 3268, "container": "glb" },  "vrma": { "specVersion": "1.0" },  "humanoid": { "mappedBoneCount": 16, "bones": ["hips", "spine", "chest", "head", "..."] },  "animation": {    "animationCount": 1,    "channelCount": 2,    "channelsByPath": { "translation": 1, "rotation": 1, "scale": 0, "weights": 0 },    "totalKeyframes": 62,    "durationSec": 1.25,    "fpsEstimate": 24,    "frameCountEstimate": 31,    "humanoidBoneTracks": [      { "bone": "hips", "paths": ["translation"] },      { "bone": "chest", "paths": ["rotation"] }    ]  }}

vrm_validate

A finding list with stable codes and severities:

json
{  "ok": false,  "errorCount": 1,  "warningCount": 1,  "findings": [    { "severity": "error", "code": "HUMANOID_REQUIRED_BONE_MISSING",      "message": "required humanoid bone is not mapped: leftHand (vrm1 required set)" },    { "severity": "warning", "code": "META_LICENSE_OTHER_URL_MISSING",      "message": "licenseName is Other but otherLicenseUrl is empty" }  ]}

vrm_snapshot / vrma_preview

json
{  "output_path": "...\\v1-three-quarter-snapshot.png",  "format": "png", "bytes": 194005, "width": 768, "height": 1024,  "view": "three_quarter", "pose": "rest", "humanoid_bone_count": 54}
json
{  "output_path": "...\\v1-walk-preview.webm",  "format": "webm", "bytes": 313597, "width": 768, "height": 768,  "clip_duration_sec": 1.25, "recorded_duration_sec": 3, "fps": 30}

Error codes / エラーコード

Every failure is a structured tool error with one of: FILE_NOT_FOUND, SIZE_BUDGET_EXCEEDED, NOT_A_GLB, NOT_A_VRM, NOT_A_VRMA, BROWSER_NOT_FOUND, RENDER_FAILED, OUTPUT_WRITE_FAILED. The server process never crashes on a bad input file.

Privacy / プライバシー

All processing is local. The server opens no network connection, sends no telemetry, and writes only the output files you name. / 処理はすべてローカルです。ネットワーク接続・テレメトリ送信は なく、書き込みは指定した出力ファイルのみです。

Development / 開発

bash
npm test   # build + 25 self-verification tests (structural, boundary, headless rendering)

Rendering tests skip with a notice when no local Chrome/Edge is found.

License / ライセンス

MIT (see LICENSE). / MITライセンス(LICENSE参照)。

来源:README.md,提交 819630f

工具

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

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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