@basicbit/vrchat-mcp 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +21 -21
  3. package/README.md +39 -9
  4. package/assets/logo.svg +58 -39
  5. package/dist/package.json +10 -4
  6. package/dist/src/auth/index.js +65 -3
  7. package/dist/src/auth/index.js.map +1 -1
  8. package/dist/src/config/defaults.json +4 -2
  9. package/dist/src/config/index.js +23 -12
  10. package/dist/src/config/index.js.map +1 -1
  11. package/dist/src/core/client.js +27 -4
  12. package/dist/src/core/client.js.map +1 -1
  13. package/dist/src/core/generatedOperations.js +133 -0
  14. package/dist/src/core/generatedOperations.js.map +1 -0
  15. package/dist/src/core/generatedToolDescriptions.js +26 -0
  16. package/dist/src/core/generatedToolDescriptions.js.map +1 -0
  17. package/dist/src/core/generatedToolOverrides.js +19 -61
  18. package/dist/src/core/generatedToolOverrides.js.map +1 -1
  19. package/dist/src/core/generatedToolSkips.js +6 -23
  20. package/dist/src/core/generatedToolSkips.js.map +1 -1
  21. package/dist/src/core/operationDetails.js +96 -0
  22. package/dist/src/core/operationDetails.js.map +1 -0
  23. package/dist/src/core/operationPolicy.js +32 -0
  24. package/dist/src/core/operationPolicy.js.map +1 -0
  25. package/dist/src/core/readToolRegistry.js +35 -81
  26. package/dist/src/core/readToolRegistry.js.map +1 -1
  27. package/dist/src/core/writeToolRegistry.js +59 -101
  28. package/dist/src/core/writeToolRegistry.js.map +1 -1
  29. package/dist/src/models/avatars.js +2 -1
  30. package/dist/src/models/avatars.js.map +1 -1
  31. package/dist/src/models/common.js +4 -0
  32. package/dist/src/models/common.js.map +1 -0
  33. package/dist/src/models/events.js +8 -4
  34. package/dist/src/models/events.js.map +1 -1
  35. package/dist/src/models/favorites.js +120 -0
  36. package/dist/src/models/favorites.js.map +1 -0
  37. package/dist/src/models/friends.js +7 -6
  38. package/dist/src/models/friends.js.map +1 -1
  39. package/dist/src/models/groups.js +91 -5
  40. package/dist/src/models/groups.js.map +1 -1
  41. package/dist/src/models/invites.js +81 -3
  42. package/dist/src/models/invites.js.map +1 -1
  43. package/dist/src/models/statusPage.js +9 -0
  44. package/dist/src/models/statusPage.js.map +1 -1
  45. package/dist/src/models/users.js +3 -2
  46. package/dist/src/models/users.js.map +1 -1
  47. package/dist/src/models/worlds.js +2 -1
  48. package/dist/src/models/worlds.js.map +1 -1
  49. package/dist/src/schemas/read.js +22 -9
  50. package/dist/src/schemas/read.js.map +1 -1
  51. package/dist/src/schemas/write.js +17 -3
  52. package/dist/src/schemas/write.js.map +1 -1
  53. package/dist/src/services/api/client.js +20 -0
  54. package/dist/src/services/api/client.js.map +1 -1
  55. package/dist/src/services/events/curated.js +37 -3
  56. package/dist/src/services/events/curated.js.map +1 -1
  57. package/dist/src/services/favorites/index.js +106 -0
  58. package/dist/src/services/favorites/index.js.map +1 -0
  59. package/dist/src/services/groups/index.js +1 -0
  60. package/dist/src/services/groups/index.js.map +1 -1
  61. package/dist/src/services/groups/roles.js +75 -0
  62. package/dist/src/services/groups/roles.js.map +1 -0
  63. package/dist/src/services/invites/bulk.js +310 -0
  64. package/dist/src/services/invites/bulk.js.map +1 -0
  65. package/dist/src/services/invites/curated.js +203 -5
  66. package/dist/src/services/invites/curated.js.map +1 -1
  67. package/dist/src/services/invites/messages.js +65 -0
  68. package/dist/src/services/invites/messages.js.map +1 -0
  69. package/dist/src/services/statusPage/curated.js +42 -5
  70. package/dist/src/services/statusPage/curated.js.map +1 -1
  71. package/dist/src/tools/auth.js +4 -4
  72. package/dist/src/tools/auth.js.map +1 -1
  73. package/dist/src/tools/curated/events.js +4 -3
  74. package/dist/src/tools/curated/events.js.map +1 -1
  75. package/dist/src/tools/curated/favorites.js +79 -0
  76. package/dist/src/tools/curated/favorites.js.map +1 -0
  77. package/dist/src/tools/curated/groups.js +88 -3
  78. package/dist/src/tools/curated/groups.js.map +1 -1
  79. package/dist/src/tools/curated/invites.js +78 -2
  80. package/dist/src/tools/curated/invites.js.map +1 -1
  81. package/dist/src/tools/generated.js +4 -4
  82. package/dist/src/tools/generated.js.map +1 -1
  83. package/dist/src/tools/raw.js +4 -7
  84. package/dist/src/tools/raw.js.map +1 -1
  85. package/dist/src/tools/read/system.js +98 -0
  86. package/dist/src/tools/read/system.js.map +1 -1
  87. package/dist/src/tools/registerAllTools.js +2 -0
  88. package/dist/src/tools/registerAllTools.js.map +1 -1
  89. package/dist/src/utils/toolNames.js +0 -6
  90. package/dist/src/utils/toolNames.js.map +1 -1
  91. package/docs/architecture.md +1 -1
  92. package/docs/curated-tools.md +28 -5
  93. package/docs/privacy.md +23 -0
  94. package/docs/robust-notes.md +29 -0
  95. package/docs/tools-guide.md +9 -3
  96. package/docs/tools.md +3641 -8201
  97. package/docs/vrcx.md +1 -1
  98. package/package.json +10 -4
  99. package/server.json +3 -3
  100. package/skills/vrchat-mcp/SKILL.md +16 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.7 - 2026-06-13
4
+
5
+ - Refresh dependency locks for Hono, Undici, esbuild, and Node type patch updates.
6
+ - Raise the direct Undici and Node type dependency minimums to the refreshed patch versions.
7
+
8
+ ## 0.1.6 - 2026-06-03
9
+
10
+ - Fix local browser auth submissions from same-port loopback aliases such as `localhost`.
11
+ - Keep auth Host and Origin validation strict for non-loopback, wrong-port, non-HTTP, and userinfo-shaped inputs.
12
+ - Keep live status-page e2e coverage opt-in so release CI does not depend on transient external status-page availability.
13
+
3
14
  ## 0.1.5 - 2026-05-19
4
15
 
5
16
  - Correct the MCP Registry package metadata so the npm package entry points at the published release version.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 BASICBIT
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 BASICBIT
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -4,20 +4,27 @@
4
4
 
5
5
  # VRChat MCP
6
6
 
7
- Unofficial [Model Context Protocol](https://modelcontextprotocol.io/) tools for VRChat friends, worlds, groups, events, notifications, status, invites, and local VRCX history.
7
+ Unofficial local [Model Context Protocol](https://modelcontextprotocol.io/) tools for VRChat friends, worlds, groups, events, notifications, status, invites, and local VRCX history.
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/%40basicbit%2Fvrchat-mcp)](https://www.npmjs.com/package/@basicbit/vrchat-mcp) [![license](https://img.shields.io/npm/l/%40basicbit%2Fvrchat-mcp)](./LICENSE)
10
10
 
11
- VRChat MCP runs locally through stdio. Your VRChat auth cookies stay on your machine and default to your OS keychain, with file storage as the fallback when a keychain backend is unavailable.
11
+ VRChat MCP runs locally through stdio. Your VRChat auth cookies stay on your machine and default to your OS keychain, with file storage as the fallback when a keychain backend is unavailable. Curated write tools, generated read/write tools, and read-only VRCX local-history tools are available by default; use your MCP client or agent harness to approve account-changing tool calls.
12
12
 
13
13
  This project is unofficial and is not affiliated with VRChat Inc.
14
14
 
15
+ ## Policy and Safety Boundaries
16
+
17
+ VRChat does not provide a public OAuth flow for third-party API applications. VRChat's Creator Guidelines say API applications should not request or store VRChat login credentials, auth tokens, or session data, should identify themselves with a clear User-Agent, should cache/back off instead of sending unmetered requests, and should not act on behalf of another user.
18
+
19
+ This project is therefore intended only as a local, user-controlled personal tool. Do not run it as a hosted/public MCP service, do not collect anyone else's credentials or cookies, do not automate spam or harassment, and do not use it to evade VRChat enforcement or moderation. Use write tools only for actions you would intentionally perform yourself in VRChat.
20
+
15
21
  ## Install
16
22
 
17
23
  Requirements:
18
24
 
19
25
  - Node.js 24.15.0 or newer.
20
26
  - An MCP client that can run local stdio servers.
27
+ - Native dependencies are installed for keychain and VRCX SQLite support (`keytar`, `better-sqlite3`).
21
28
 
22
29
  On headless Linux or containers without a keychain daemon such as `libsecret`, set `VRCHAT_MCP_COOKIE_STORE=file` for explicit persistent cookie storage.
23
30
 
@@ -105,6 +112,8 @@ After adding the server to your MCP client, ask it to call `vrchat_auth_begin`.
105
112
 
106
113
  After logging in, call `vrchat_auth_status` to confirm the session. By default, cookies are stored in the OS keychain so the login survives MCP server restarts. If the OS keychain is unavailable, VRChat MCP falls back to file storage.
107
114
 
115
+ Do not ask another person to use this login flow for you. Do not send the local login URL, cookies, or session files to hosted tools or third-party services.
116
+
108
117
  Useful auth tools:
109
118
 
110
119
  - `vrchat_auth_begin`: start local browser login.
@@ -141,7 +150,7 @@ Show recent worlds from my local VRCX history.
141
150
 
142
151
  ## Tools
143
152
 
144
- VRChat MCP exposes curated tools for common tasks plus generated tools from the VRChat OpenAPI spec.
153
+ VRChat MCP exposes curated tools plus generated read/write/delete routers by default. Curated tools cover common tasks with compact, agent-friendly inputs and outputs.
145
154
 
146
155
  Common curated tools include:
147
156
 
@@ -153,19 +162,36 @@ Common curated tools include:
153
162
  - `vrchat_group_profile`
154
163
  - `vrchat_events_upcoming`
155
164
  - `vrchat_notifications_recent`
156
- - `vrchat_invite_user_to_me`
165
+ - `vrchat_invite`
166
+ - `vrchat_group_invite`
167
+ - `vrchat_friend_request`
168
+ - `vrchat_boop`
157
169
  - `vrcx_instances_recent`
158
170
 
159
- Generated tools use these naming patterns:
171
+ Generated OpenAPI API-gap coverage uses three router tools:
160
172
 
161
- - `vrchat_read_<operationId>` for GET operations.
162
- - `vrchat_write_<operationId>` for non-GET operations.
173
+ - `vrchat_read` for available GET operations; pass `operationId` plus path/query/header/cookie values under `params`.
174
+ - `vrchat_write` for available POST/PUT/PATCH operations; pass `operationId`, `params`, and JSON payloads under `body`.
175
+ - `vrchat_delete` for available DELETE operations; pass `operationId`, `params`, and optional JSON payloads under `body`.
176
+
177
+ Use `vrchat_operations` to list available generated operation IDs and `vrchat_operation_details` for exact per-operation params/body schemas.
178
+
179
+ Generated read and write tools are enabled by default. Set `VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS=true` or `VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS=true` to hide them, or use JSON config to narrow either surface to specific operation IDs:
180
+
181
+ ```json
182
+ {
183
+ "generatedReadTools": { "enabled": true, "operationIds": ["getAvatarStyles"] },
184
+ "generatedWriteTools": { "enabled": true, "operationIds": ["selectAvatar"] }
185
+ }
186
+ ```
187
+
188
+ When an `operationIds` list is empty and that generated tool class is enabled, all generated operations in that class are available through its router except hard-skipped operations and operations with curated replacements. Prefer curated tools for common workflows, but generated routers keep the local server capable as the VRChat API evolves without duplicating known curated coverage or exposing generated endpoints this client cannot reliably call.
163
189
 
164
190
  See `docs/tools-guide.md` for a short guide and `docs/tools.md` for the generated catalog.
165
191
 
166
192
  ## Write Controls
167
193
 
168
- Write tools are enabled by default so client installs work without extra setup. Your MCP client may still ask before executing tool calls, depending on its own permission model.
194
+ Curated write tools and generated write tools for API gaps are enabled by default so the local MCP server is usable from the first run. Your MCP client or agent harness is expected to control tool-call permission, approval, and denial for account-changing actions.
169
195
 
170
196
  To force read-only mode, add this `env` fragment inside the server entry for your MCP client:
171
197
 
@@ -177,6 +203,8 @@ To force read-only mode, add this `env` fragment inside the server entry for you
177
203
  }
178
204
  ```
179
205
 
206
+ Only use write tools when you intend this local MCP server to perform VRChat account actions. Bulk social tools are capped and back off on 429s, but you are responsible for avoiding spam, harassment, or unwanted automation.
207
+
180
208
  For group write tools, you can restrict writes to specific group IDs with a JSON config file:
181
209
 
182
210
  ```json
@@ -211,7 +239,8 @@ Example JSON config:
211
239
  "auth": { "cookieStore": "file" },
212
240
  "writes": { "allow": false },
213
241
  "groups": { "allowlist": ["grp_abc123"] },
214
- "cache": { "enabled": true }
242
+ "cache": { "enabled": true },
243
+ "vrcx": { "enabled": true }
215
244
  }
216
245
  ```
217
246
 
@@ -236,6 +265,7 @@ Useful scripts:
236
265
  - `npm run smoke:live`: run the opt-in live smoke check.
237
266
  - `npm run generate:tools-docs`: regenerate `docs/tools.md`.
238
267
  - `npm run generate:schemas`: regenerate OpenAPI schemas.
268
+ - `npm run mcpb:build`: build a local MCPB bundle under `mcpb/`.
239
269
 
240
270
  Live E2E tests and LLM evals are opt-in. See `docs/evals.md` for details.
241
271
 
package/assets/logo.svg CHANGED
@@ -1,39 +1,58 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- viewBox="0 0 256 256"
4
- role="img"
5
- aria-labelledby="title desc"
6
- >
7
- <title id="title">VRChat MCP logo</title>
8
- <desc id="desc">A rounded blue chat mark connected to three small nodes.</desc>
9
- <defs>
10
- <linearGradient id="bg" x1="32" y1="24" x2="224" y2="232" gradientUnits="userSpaceOnUse">
11
- <stop offset="0" stop-color="#38bdf8" />
12
- <stop offset="0.52" stop-color="#2563eb" />
13
- <stop offset="1" stop-color="#312e81" />
14
- </linearGradient>
15
- <linearGradient id="line" x1="76" y1="86" x2="184" y2="170" gradientUnits="userSpaceOnUse">
16
- <stop offset="0" stop-color="#e0f2fe" />
17
- <stop offset="1" stop-color="#bfdbfe" />
18
- </linearGradient>
19
- </defs>
20
- <rect width="256" height="256" rx="56" fill="#07111f" />
21
- <path
22
- d="M68 56h120c22.1 0 40 17.9 40 40v52c0 22.1-17.9 40-40 40h-47.5l-43 31.4c-8.7 6.3-20.9.1-20.9-10.7V188H68c-22.1 0-40-17.9-40-40V96c0-22.1 17.9-40 40-40Z"
23
- fill="url(#bg)"
24
- />
25
- <path
26
- d="M84 116h42.5M126.5 116l37-30M126.5 116l45.5 44"
27
- fill="none"
28
- stroke="url(#line)"
29
- stroke-width="12"
30
- stroke-linecap="round"
31
- stroke-linejoin="round"
32
- />
33
- <circle cx="84" cy="116" r="18" fill="#f8fafc" />
34
- <circle cx="164" cy="86" r="18" fill="#f8fafc" />
35
- <circle cx="172" cy="160" r="18" fill="#f8fafc" />
36
- <circle cx="84" cy="116" r="7" fill="#2563eb" />
37
- <circle cx="164" cy="86" r="7" fill="#2563eb" />
38
- <circle cx="172" cy="160" r="7" fill="#2563eb" />
39
- </svg>
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 256 256"
4
+ role="img"
5
+ aria-labelledby="title desc"
6
+ >
7
+ <title id="title">VRChat MCP logo</title>
8
+ <desc id="desc">Two nested speech bubbles inside a dark rounded app tile.</desc>
9
+ <defs>
10
+ <linearGradient id="tile-bg" x1="128" y1="0" x2="128" y2="256" gradientUnits="userSpaceOnUse">
11
+ <stop offset="0" stop-color="#171b2f" />
12
+ <stop offset="0.58" stop-color="#101628" />
13
+ <stop offset="1" stop-color="#0b1020" />
14
+ </linearGradient>
15
+ <linearGradient
16
+ id="tile-border"
17
+ x1="26"
18
+ y1="18"
19
+ x2="230"
20
+ y2="238"
21
+ gradientUnits="userSpaceOnUse"
22
+ >
23
+ <stop offset="0" stop-color="#fff8ed" stop-opacity="0.52" />
24
+ <stop offset="0.48" stop-color="#6f8fd0" stop-opacity="0.5" />
25
+ <stop offset="1" stop-color="#2c355a" stop-opacity="0.64" />
26
+ </linearGradient>
27
+ <filter
28
+ id="soft-shadow"
29
+ x="-20%"
30
+ y="-20%"
31
+ width="140%"
32
+ height="150%"
33
+ color-interpolation-filters="sRGB"
34
+ >
35
+ <feDropShadow dx="0" dy="10" stdDeviation="12" flood-color="#020617" flood-opacity="0.42" />
36
+ </filter>
37
+ </defs>
38
+ <rect width="256" height="256" rx="56" fill="url(#tile-border)" />
39
+ <rect x="2" y="2" width="252" height="252" rx="54" fill="url(#tile-bg)" />
40
+ <g transform="translate(0 8)">
41
+ <path
42
+ d="M34 66c0-25.4 20.6-46 46-46h96c25.4 0 46 20.6 46 46v78c0 25.4-20.6 46-46 46h-36.8l-50.4 36.3c-9.2 6.6-22.1 0-22.1-11.3v-29.8C47.4 177.4 34 161.8 34 143.6V66Z"
43
+ fill="#f6efe6"
44
+ filter="url(#soft-shadow)"
45
+ />
46
+ <path
47
+ d="M78 58h94c11.6 0 21 9.4 21 21v50c0 11.6-9.4 21-21 21h-37.6L106 170.5c-4.8 3.5-11.6.1-11.6-5.9V150H78c-11.6 0-21-9.4-21-21V79c0-11.6 9.4-21 21-21Z"
48
+ fill="#4f6fa8"
49
+ />
50
+ <path
51
+ d="M100 85h64M100 108h52M100 131h34"
52
+ fill="none"
53
+ stroke="#fff8ed"
54
+ stroke-width="9"
55
+ stroke-linecap="round"
56
+ />
57
+ </g>
58
+ </svg>
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basicbit/vrchat-mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "mcpName": "io.github.BASIC-BIT/vrchat-mcp",
5
5
  "description": "MCP server for VRChat friends, worlds, groups, events, notifications, and VRCX history.",
6
6
  "type": "module",
@@ -18,9 +18,12 @@
18
18
  "docs/curated-tools.md",
19
19
  "docs/design-notes.md",
20
20
  "docs/evals.md",
21
+ "docs/privacy.md",
22
+ "docs/robust-notes.md",
21
23
  "docs/tools-guide.md",
22
24
  "docs/tools.md",
23
25
  "docs/vrcx.md",
26
+ "skills/vrchat-mcp/SKILL.md",
24
27
  "README.md",
25
28
  "CHANGELOG.md",
26
29
  "server.json",
@@ -50,11 +53,14 @@
50
53
  "generate:schemas": "openapi-zod-client specs/vrchat-openapi.yaml -o src/generated/vrchat-schemas.ts -t scripts/templates/openapi-schemas.hbs --export-schemas -p .prettierrc.json && tsx scripts/postprocess-schemas.ts src/generated/vrchat-schemas.ts",
51
54
  "generate:test-schemas": "openapi-zod-client test/fixtures/spec.yaml -o test/generated/mock-schemas.ts -t scripts/templates/openapi-schemas.hbs --export-schemas -p .prettierrc.json && tsx scripts/postprocess-schemas.ts test/generated/mock-schemas.ts",
52
55
  "generate:tools-docs": "tsx scripts/generate-tools-docs.ts",
56
+ "mcpb:build": "npm run build && tsx scripts/build-mcpb.ts",
57
+ "release:verify": "npm run check && npm run build && npm pack --dry-run",
53
58
  "mcpo": "uvx mcpo --port 8000 --api-key \"top-secret\" -- npx tsx src/index.ts",
54
59
  "start": "node dist/bin/cli.js",
55
60
  "metrics:scc": "tsx scripts/metrics/scc.ts",
56
61
  "metrics:lizard": "tsx scripts/metrics/lizard.ts",
57
- "metrics": "npm run metrics:scc && npm run metrics:lizard"
62
+ "metrics:tool-budget": "tsx scripts/metrics/tool-budget.ts",
63
+ "metrics": "npm run metrics:tool-budget && npm run metrics:scc && npm run metrics:lizard"
58
64
  },
59
65
  "engines": {
60
66
  "node": ">=24.15.0"
@@ -82,7 +88,7 @@
82
88
  "@apidevtools/json-schema-ref-parser": "^15.3.5",
83
89
  "@eslint/js": "^10.0.1",
84
90
  "@types/better-sqlite3": "^7.6.13",
85
- "@types/node": "^25.0.3",
91
+ "@types/node": "^25.9.2",
86
92
  "@typescript-eslint/eslint-plugin": "^8.50.0",
87
93
  "@typescript-eslint/parser": "^8.50.0",
88
94
  "@vitest/coverage-v8": "^4.0.16",
@@ -104,7 +110,7 @@
104
110
  "better-sqlite3": "^12.6.2",
105
111
  "keytar": "^7.9.0",
106
112
  "tough-cookie": "^6.0.0",
107
- "undici": "^8.2.0",
113
+ "undici": "^8.4.0",
108
114
  "yaml": "^2.8.4",
109
115
  "zod": "^4.2.1"
110
116
  }
@@ -3,6 +3,7 @@ import { createServer } from 'node:http';
3
3
  import { randomBytes } from 'node:crypto';
4
4
  import { EventEmitter } from 'node:events';
5
5
  import { URL } from 'node:url';
6
+ import { getConfig } from '../config/index.js';
6
7
  import { logger } from '../infra/logger.js';
7
8
  import { getCookieStore } from './cookieStore.js';
8
9
  const MAX_LOGIN_BODY_BYTES = 16 * 1024;
@@ -50,6 +51,52 @@ function parseLoginSubmission(params) {
50
51
  emailOtp: directEmailOtp ?? (factorKind === 'emailOtp' ? code : undefined),
51
52
  };
52
53
  }
54
+ function loginUserAgent() {
55
+ return getConfig().api.userAgent;
56
+ }
57
+ function isAllowedLoopbackHost(host, expectedPort) {
58
+ let parsed;
59
+ try {
60
+ parsed = new URL(`http://${host}`);
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ if (host.includes('@') ||
66
+ parsed.username.length > 0 ||
67
+ parsed.password.length > 0 ||
68
+ parsed.pathname !== '/' ||
69
+ parsed.search ||
70
+ parsed.hash) {
71
+ return false;
72
+ }
73
+ const hostname = parsed.hostname.toLowerCase();
74
+ const port = Number(parsed.port || '80');
75
+ return (port === expectedPort &&
76
+ (hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '[::1]'));
77
+ }
78
+ function isAllowedLoopbackOrigin(origin, expectedPort) {
79
+ let parsed;
80
+ try {
81
+ parsed = new URL(origin);
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ if (origin.includes('@') ||
87
+ parsed.username.length > 0 ||
88
+ parsed.password.length > 0 ||
89
+ parsed.pathname !== '/' ||
90
+ parsed.search ||
91
+ parsed.hash) {
92
+ return false;
93
+ }
94
+ const hostname = parsed.hostname.toLowerCase();
95
+ const port = Number(parsed.port || '80');
96
+ return (parsed.protocol === 'http:' &&
97
+ port === expectedPort &&
98
+ (hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '[::1]'));
99
+ }
53
100
  class AuthManager {
54
101
  jar = new CookieJar();
55
102
  server = null;
@@ -198,6 +245,9 @@ class AuthManager {
198
245
  }
199
246
  renderPage(res, body) {
200
247
  res.setHeader('content-type', 'text/html; charset=utf-8');
248
+ res.setHeader('referrer-policy', 'no-referrer');
249
+ res.setHeader('x-frame-options', 'DENY');
250
+ res.setHeader('content-security-policy', "default-src 'none'; style-src 'unsafe-inline'; form-action 'self'; base-uri 'none'; frame-ancestors 'none'");
201
251
  res.end(`<!doctype html>
202
252
  <html lang="en">
203
253
  <head>
@@ -239,6 +289,18 @@ class AuthManager {
239
289
  res.end('Auth server not ready');
240
290
  return null;
241
291
  }
292
+ const host = req.headers.host;
293
+ if (!host || !isAllowedLoopbackHost(host, this.port)) {
294
+ res.statusCode = 403;
295
+ res.end('Invalid host');
296
+ return null;
297
+ }
298
+ const origin = req.headers.origin;
299
+ if (origin && !isAllowedLoopbackOrigin(origin, this.port)) {
300
+ res.statusCode = 403;
301
+ res.end('Invalid origin');
302
+ return null;
303
+ }
242
304
  const urlObj = new URL(req.url ?? '/', `http://127.0.0.1:${this.port}`);
243
305
  const token = urlObj.searchParams.get('token');
244
306
  if (!token || token !== this.serverToken) {
@@ -327,7 +389,7 @@ class AuthManager {
327
389
  method: 'GET',
328
390
  headers: {
329
391
  authorization: `Basic ${basic}`,
330
- 'user-agent': 'vrchat-mcp-login',
392
+ 'user-agent': loginUserAgent(),
331
393
  },
332
394
  });
333
395
  const setCookies1 = res1.headers.getSetCookie?.() ?? [];
@@ -347,7 +409,7 @@ class AuthManager {
347
409
  headers: {
348
410
  cookie: cookieHeader,
349
411
  'content-type': 'application/json',
350
- 'user-agent': 'vrchat-mcp-login',
412
+ 'user-agent': loginUserAgent(),
351
413
  },
352
414
  body: JSON.stringify({ code: totp }),
353
415
  });
@@ -367,7 +429,7 @@ class AuthManager {
367
429
  headers: {
368
430
  cookie: cookieHeader,
369
431
  'content-type': 'application/json',
370
- 'user-agent': 'vrchat-mcp-login',
432
+ 'user-agent': loginUserAgent(),
371
433
  },
372
434
  body: JSON.stringify({ code: emailOtp }),
373
435
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"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"}
@@ -45,10 +45,12 @@
45
45
  "enabled": false
46
46
  },
47
47
  "generatedReadTools": {
48
- "disable": false
48
+ "enabled": true,
49
+ "operationIds": []
49
50
  },
50
51
  "generatedWriteTools": {
51
- "disable": false
52
+ "enabled": true,
53
+ "operationIds": []
52
54
  },
53
55
  "vrcx": {
54
56
  "enabled": true,
@@ -5,6 +5,12 @@ import { z } from 'zod';
5
5
  import pkg from '../../package.json' with { type: 'json' };
6
6
  import defaultsJson from './defaults.json' with { type: 'json' };
7
7
  const DISABLED_ALLOWLIST_VALUES = new Set(['', '0', 'false', 'no', 'off']);
8
+ const GeneratedToolConfigSchema = z
9
+ .object({
10
+ enabled: z.boolean(),
11
+ operationIds: z.array(z.string()),
12
+ })
13
+ .strict();
8
14
  const ConfigBaseSchema = z
9
15
  .object({
10
16
  api: z
@@ -74,16 +80,8 @@ const ConfigBaseSchema = z
74
80
  enabled: z.boolean(),
75
81
  })
76
82
  .strict(),
77
- generatedReadTools: z
78
- .object({
79
- disable: z.boolean(),
80
- })
81
- .strict(),
82
- generatedWriteTools: z
83
- .object({
84
- disable: z.boolean(),
85
- })
86
- .strict(),
83
+ generatedReadTools: GeneratedToolConfigSchema,
84
+ generatedWriteTools: GeneratedToolConfigSchema,
87
85
  vrcx: z
88
86
  .object({
89
87
  enabled: z.boolean(),
@@ -193,6 +191,7 @@ function readConfigFile(filePath) {
193
191
  if (!isPlainObject(parsed)) {
194
192
  throw new Error('Config file must contain a JSON object.');
195
193
  }
194
+ normalizeLegacyConfigFile(parsed);
196
195
  return parsed;
197
196
  }
198
197
  catch (err) {
@@ -204,6 +203,18 @@ function readConfigFile(filePath) {
204
203
  function isPlainObject(value) {
205
204
  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
206
205
  }
206
+ function normalizeLegacyGeneratedToolConfig(value) {
207
+ if (!isPlainObject(value))
208
+ return;
209
+ if (typeof value.disable === 'boolean') {
210
+ value.enabled = !value.disable;
211
+ delete value.disable;
212
+ }
213
+ }
214
+ function normalizeLegacyConfigFile(config) {
215
+ normalizeLegacyGeneratedToolConfig(config.generatedReadTools);
216
+ normalizeLegacyGeneratedToolConfig(config.generatedWriteTools);
217
+ }
207
218
  function mergeConfig(base, override) {
208
219
  if (!isPlainObject(base) || !isPlainObject(override)) {
209
220
  return (override ?? base);
@@ -289,13 +300,13 @@ function applyToolingEnvOverrides(overrides, env) {
289
300
  if (env.VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS !== undefined) {
290
301
  overrides.generatedReadTools = {
291
302
  ...overrides.generatedReadTools,
292
- disable: env.VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS,
303
+ enabled: !env.VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS,
293
304
  };
294
305
  }
295
306
  if (env.VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS !== undefined) {
296
307
  overrides.generatedWriteTools = {
297
308
  ...overrides.generatedWriteTools,
298
- disable: env.VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS,
309
+ enabled: !env.VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS,
299
310
  };
300
311
  }
301
312
  }