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 分