@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/docs/vrcx.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # VRCX Integration Notes
2
2
 
3
- This repo includes optional read-only tooling to pull _local_ context from the VRCX SQLite database.
3
+ This repo includes read-only tooling to pull _local_ context from the VRCX SQLite database. VRCX integration is enabled by default for local full-capability use and can be disabled with `vrcx.enabled = false`.
4
4
 
5
5
  The goal is to expose information that VRChat's public API does not provide (e.g. local memos, your join/leave history, and time-spent estimates), while avoiding sensitive material (cookies, stored credentials).
6
6
 
package/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
  }
package/server.json CHANGED
@@ -8,12 +8,12 @@
8
8
  "source": "github",
9
9
  "id": "1122295987"
10
10
  },
11
- "version": "0.1.5",
11
+ "version": "0.1.7",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "@basicbit/vrchat-mcp",
16
- "version": "0.1.5",
16
+ "version": "0.1.7",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
@@ -59,7 +59,7 @@
59
59
  },
60
60
  {
61
61
  "name": "VRCHAT_MCP_ALLOW_WRITES",
62
- "description": "Allow non-GET VRChat API write operations. Set to false for read-only mode.",
62
+ "description": "Allow non-GET VRChat API write operations. Defaults to true for local full-capability use; set to false for read-only mode.",
63
63
  "format": "boolean",
64
64
  "default": "true",
65
65
  "isRequired": false,
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: vrchat-mcp
3
+ description: Use when operating VRChat MCP tools, especially auth, privacy-sensitive results, writes, stale cache, or resolving names to IDs.
4
+ ---
5
+
6
+ # VRChat MCP
7
+
8
+ Use tool schemas and descriptions for normal tool selection. This skill only covers product-specific sharp edges.
9
+
10
+ - VRChat MCP is designed for local use with user-managed authentication. Normal operation uses the server's auth tools and local auth storage; agents should not need to handle raw VRChat cookies or session tokens.
11
+ - If authentication is missing, use the auth tool flow and verify with a current-user or profile read before continuing.
12
+ - Prefer overview or search tools before detail tools. Use IDs returned by tools for follow-up calls; do not infer IDs from names or URLs.
13
+ - If direct friend lookup by name fails, use the explicit friend search tool before concluding the friend is unavailable.
14
+ - For write tools, keep the target and side effect visible to the user. If a tool returns `confirm_required`, rerun only with the returned `confirmId` and unchanged arguments.
15
+ - If results look stale, invalidate the relevant cache once and retry before treating the result as unavailable.
16
+ - VRCX tools read local VRCX history rather than live VRChat API state.