{
  "markdown": "# vrm-toolkit-mcp\n\n**v0.1.1 — [npm](https://www.npmjs.com/package/vrm-toolkit-mcp) / [GitHub](https://github.com/dwarehouse1/vrm-toolkit-mcp)**\n\nAn MCP (Model Context Protocol) server that lets an AI agent inspect, validate and preview\nVRM / VRMA files on your machine. Five tools, stdio transport, no network access at runtime.\n\nVRM / VRMAファイルの検品・情報抽出・プレビューをAIエージェントから使えるようにする\nMCPサーバーです。ツールは5本、stdioトランスポート、実行時のネットワークアクセスなし。\n\n## Tools / ツール\n\n| Tool | What it does | 説明 |\n| --- | --- | --- |\n| `vrm_inspect` | Structured JSON: meta (name/author/license and permission fields), humanoid bone map, expressions, polygon/texture statistics | メタ(名前/作者/ライセンス許諾)・ボーン・表情・ポリゴン/テクスチャ規模を構造化出力 |\n| `vrm_validate` | Finding list: missing required humanoid bones, broken node references, missing meta/license fields, unknown required extensions, configurable size/triangle/texture budgets | humanoidマッピング欠落・参照切れ・メタ/ライセンス欠落・未知の必須拡張・サイズ超過などの検品リスト |\n| `vrma_inspect` | Tracks, targeted humanoid bones, expression tracks, duration, estimated frame rate | トラック・対象ボーン・表情トラック・尺・フレームレート推定 |\n| `vrma_preview` | Applies a VRMA to a VRM and renders a PNG still or a short WebM clip (max 10 s) through local headless Chrome/Edge | VRMAをVRMに適用し、ローカルのヘッドレスChrome/EdgeでPNG静止画または短尺WebM動画を書き出し |\n| `vrm_snapshot` | Renders a rest-pose PNG with optional expression weights and view presets (front / three-quarter / side / face close-up) | 表情ウェイトとビュープリセット(正面/斜め/側面/顔アップ)を指定できる静止画スクリーンショット |\n\nStructural tools (`vrm_inspect`, `vrm_validate`, `vrma_inspect`) parse the GLB/glTF container\ndirectly in Node and need no browser. Rendering tools (`vrma_preview`, `vrm_snapshot`) use an\nalready-installed Chromium-based browser via `puppeteer-core`; nothing is downloaded.\n\n構造系3ツールはNode単体でGLB/glTFを直接パースし、ブラウザ不要。描画系2ツールは\nインストール済みのChromium系ブラウザを`puppeteer-core`で使います(追加ダウンロードなし)。\n\nSupported inputs: VRM 0.x (`extensions.VRM`), VRM 1.0 (`extensions.VRMC_vrm`),\nVRMA (`extensions.VRMC_vrm_animation`), GLB container or plain glTF JSON.\n\n## Requirements / 動作条件\n\n- Node.js 20+\n- For `vrma_preview` / `vrm_snapshot`: a local Chrome or Edge\n  (auto-detected; override with the `VRM_TOOLKIT_CHROME` environment variable)\n- Input size budget: 512 MiB by default (`VRM_TOOLKIT_MAX_BYTES` to override)\n\n## Setup / セットアップ\n\nRegister with Claude Code / Claude Codeへの登録:\n\n```bash\nclaude mcp add vrm-toolkit -- npx -y vrm-toolkit-mcp\n```\n\nOther MCP hosts / その他のMCPホスト: command `npx`, args `[\"-y\", \"vrm-toolkit-mcp\"]` (stdio).\n\nFrom source / ソースから:\n\n```bash\nnpm install\nnpm run build\nclaude mcp add vrm-toolkit -- node /absolute/path/to/vrm-toolkit/dist/main.js\n```\n\n## Execution examples / 実行例\n\nReal outputs from the local test run (2026-08-05, file paths shortened).\nローカルテスト実行(2026-08-05)の実出力です(パスは短縮表記)。\n\n### vrm_inspect\n\nInput: a VRoid Studio-exported VRM 1.0 avatar (15.7 MB).\n\n```json\n{\n  \"file\": { \"path\": \"...\\\\V1.vrm\", \"bytes\": 15737992, \"container\": \"glb\" },\n  \"vrm\": { \"specFamily\": \"vrm1\", \"specVersion\": \"1.0\" },\n  \"meta\": {\n    \"name\": \"V1\",\n    \"authors\": [\"D\"],\n    \"licenseUrl\": \"https://vrm.dev/licenses/1.0/\",\n    \"avatarPermission\": \"onlyAuthor\",\n    \"commercialUsage\": \"corporation\",\n    \"creditNotation\": \"required\",\n    \"allowRedistribution\": false,\n    \"modification\": \"prohibited\"\n  },\n  \"humanoid\": {\n    \"mappedBoneCount\": 54,\n    \"bones\": [\n      { \"bone\": \"hips\", \"node\": 1, \"nodeName\": \"J_Bip_C_Hips\" },\n      { \"bone\": \"spine\", \"node\": 34, \"nodeName\": \"J_Bip_C_Spine\" }\n    ],\n    \"missingRequiredBones\": []\n  },\n  \"expressions\": { \"presetCount\": 14, \"presets\": [\"happy\", \"angry\", \"sad\", \"...\"] },\n  \"geometry\": {\n    \"meshCount\": 3,\n    \"totalVertices\": 103489,\n    \"totalTriangles\": 33484,\n    \"perMesh\": [\n      { \"name\": \"Face (merged)\", \"vertices\": 33640, \"triangles\": 7308 },\n      { \"name\": \"Body (merged)\", \"vertices\": 57128, \"triangles\": 11548 },\n      { \"name\": \"Hair001 (merged)\", \"vertices\": 12721, \"triangles\": 14628 }\n    ]\n  },\n  \"textures\": { \"imageCount\": 26, \"totalImageBytes\": 8033934, \"maxDimension\": 2048 },\n  \"materials\": { \"materialCount\": 17 }\n}\n```\n\n(Output truncated for readability; the tool returns the full bone and image lists.)\n\n### vrma_inspect\n\n```json\n{\n  \"file\": { \"path\": \"...\\\\motion-walk-forward.vrma\", \"bytes\": 3268, \"container\": \"glb\" },\n  \"vrma\": { \"specVersion\": \"1.0\" },\n  \"humanoid\": { \"mappedBoneCount\": 16, \"bones\": [\"hips\", \"spine\", \"chest\", \"head\", \"...\"] },\n  \"animation\": {\n    \"animationCount\": 1,\n    \"channelCount\": 2,\n    \"channelsByPath\": { \"translation\": 1, \"rotation\": 1, \"scale\": 0, \"weights\": 0 },\n    \"totalKeyframes\": 62,\n    \"durationSec\": 1.25,\n    \"fpsEstimate\": 24,\n    \"frameCountEstimate\": 31,\n    \"humanoidBoneTracks\": [\n      { \"bone\": \"hips\", \"paths\": [\"translation\"] },\n      { \"bone\": \"chest\", \"paths\": [\"rotation\"] }\n    ]\n  }\n}\n```\n\n### vrm_validate\n\nA finding list with stable codes and severities:\n\n```json\n{\n  \"ok\": false,\n  \"errorCount\": 1,\n  \"warningCount\": 1,\n  \"findings\": [\n    { \"severity\": \"error\", \"code\": \"HUMANOID_REQUIRED_BONE_MISSING\",\n      \"message\": \"required humanoid bone is not mapped: leftHand (vrm1 required set)\" },\n    { \"severity\": \"warning\", \"code\": \"META_LICENSE_OTHER_URL_MISSING\",\n      \"message\": \"licenseName is Other but otherLicenseUrl is empty\" }\n  ]\n}\n```\n\n### vrm_snapshot / vrma_preview\n\n```json\n{\n  \"output_path\": \"...\\\\v1-three-quarter-snapshot.png\",\n  \"format\": \"png\", \"bytes\": 194005, \"width\": 768, \"height\": 1024,\n  \"view\": \"three_quarter\", \"pose\": \"rest\", \"humanoid_bone_count\": 54\n}\n```\n\n```json\n{\n  \"output_path\": \"...\\\\v1-walk-preview.webm\",\n  \"format\": \"webm\", \"bytes\": 313597, \"width\": 768, \"height\": 768,\n  \"clip_duration_sec\": 1.25, \"recorded_duration_sec\": 3, \"fps\": 30\n}\n```\n\n## Error codes / エラーコード\n\nEvery failure is a structured tool error with one of:\n`FILE_NOT_FOUND`, `SIZE_BUDGET_EXCEEDED`, `NOT_A_GLB`, `NOT_A_VRM`, `NOT_A_VRMA`,\n`BROWSER_NOT_FOUND`, `RENDER_FAILED`, `OUTPUT_WRITE_FAILED`.\nThe server process never crashes on a bad input file.\n\n## Privacy / プライバシー\n\nAll processing is local. The server opens no network connection, sends no telemetry, and writes\nonly the output files you name. / 処理はすべてローカルです。ネットワーク接続・テレメトリ送信は\nなく、書き込みは指定した出力ファイルのみです。\n\n## Development / 開発\n\n```bash\nnpm test   # build + 25 self-verification tests (structural, boundary, headless rendering)\n```\n\nRendering tests skip with a notice when no local Chrome/Edge is found.\n\n## License / ライセンス\n\nMIT (see [LICENSE](./LICENSE)). / MITライセンス([LICENSE](./LICENSE)参照)。\n",
  "bytes": 6446,
  "sha": "fc0e6d0c245981aa9734c732aa6de6aa777f44240934d85d81ddf8bc0df60f7f",
  "repo_slug": "dwarehouse1/vrm-toolkit-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_dwarehouse1_vrm_toolkit_mcp_52ff56a6/readme"
}