@basicbit/vrchat-mcp 0.1.5 → 0.1.6
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.
- package/CHANGELOG.md +6 -0
- package/README.md +39 -9
- package/dist/package.json +8 -2
- package/dist/src/auth/index.js +65 -3
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/config/defaults.json +4 -2
- package/dist/src/config/index.js +23 -12
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/core/client.js +27 -4
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/generatedOperations.js +133 -0
- package/dist/src/core/generatedOperations.js.map +1 -0
- package/dist/src/core/generatedToolDescriptions.js +26 -0
- package/dist/src/core/generatedToolDescriptions.js.map +1 -0
- package/dist/src/core/generatedToolOverrides.js +19 -61
- package/dist/src/core/generatedToolOverrides.js.map +1 -1
- package/dist/src/core/generatedToolSkips.js +6 -23
- package/dist/src/core/generatedToolSkips.js.map +1 -1
- package/dist/src/core/operationDetails.js +96 -0
- package/dist/src/core/operationDetails.js.map +1 -0
- package/dist/src/core/operationPolicy.js +32 -0
- package/dist/src/core/operationPolicy.js.map +1 -0
- package/dist/src/core/readToolRegistry.js +35 -81
- package/dist/src/core/readToolRegistry.js.map +1 -1
- package/dist/src/core/writeToolRegistry.js +59 -101
- package/dist/src/core/writeToolRegistry.js.map +1 -1
- package/dist/src/models/avatars.js +2 -1
- package/dist/src/models/avatars.js.map +1 -1
- package/dist/src/models/common.js +4 -0
- package/dist/src/models/common.js.map +1 -0
- package/dist/src/models/events.js +5 -4
- package/dist/src/models/events.js.map +1 -1
- package/dist/src/models/favorites.js +120 -0
- package/dist/src/models/favorites.js.map +1 -0
- package/dist/src/models/friends.js +7 -6
- package/dist/src/models/friends.js.map +1 -1
- package/dist/src/models/groups.js +91 -5
- package/dist/src/models/groups.js.map +1 -1
- package/dist/src/models/invites.js +81 -3
- package/dist/src/models/invites.js.map +1 -1
- package/dist/src/models/statusPage.js +9 -0
- package/dist/src/models/statusPage.js.map +1 -1
- package/dist/src/models/users.js +3 -2
- package/dist/src/models/users.js.map +1 -1
- package/dist/src/models/worlds.js +2 -1
- package/dist/src/models/worlds.js.map +1 -1
- package/dist/src/schemas/read.js +22 -9
- package/dist/src/schemas/read.js.map +1 -1
- package/dist/src/schemas/write.js +17 -3
- package/dist/src/schemas/write.js.map +1 -1
- package/dist/src/services/api/client.js +20 -0
- package/dist/src/services/api/client.js.map +1 -1
- package/dist/src/services/favorites/index.js +106 -0
- package/dist/src/services/favorites/index.js.map +1 -0
- package/dist/src/services/groups/index.js +1 -0
- package/dist/src/services/groups/index.js.map +1 -1
- package/dist/src/services/groups/roles.js +75 -0
- package/dist/src/services/groups/roles.js.map +1 -0
- package/dist/src/services/invites/bulk.js +310 -0
- package/dist/src/services/invites/bulk.js.map +1 -0
- package/dist/src/services/invites/curated.js +203 -5
- package/dist/src/services/invites/curated.js.map +1 -1
- package/dist/src/services/invites/messages.js +65 -0
- package/dist/src/services/invites/messages.js.map +1 -0
- package/dist/src/services/statusPage/curated.js +42 -5
- package/dist/src/services/statusPage/curated.js.map +1 -1
- package/dist/src/tools/auth.js +4 -4
- package/dist/src/tools/auth.js.map +1 -1
- package/dist/src/tools/curated/favorites.js +79 -0
- package/dist/src/tools/curated/favorites.js.map +1 -0
- package/dist/src/tools/curated/groups.js +88 -3
- package/dist/src/tools/curated/groups.js.map +1 -1
- package/dist/src/tools/curated/invites.js +78 -2
- package/dist/src/tools/curated/invites.js.map +1 -1
- package/dist/src/tools/generated.js +4 -4
- package/dist/src/tools/generated.js.map +1 -1
- package/dist/src/tools/raw.js +4 -7
- package/dist/src/tools/raw.js.map +1 -1
- package/dist/src/tools/read/system.js +98 -0
- package/dist/src/tools/read/system.js.map +1 -1
- package/dist/src/tools/registerAllTools.js +2 -0
- package/dist/src/tools/registerAllTools.js.map +1 -1
- package/dist/src/utils/toolNames.js +0 -6
- package/dist/src/utils/toolNames.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/curated-tools.md +28 -5
- package/docs/privacy.md +23 -0
- package/docs/robust-notes.md +29 -0
- package/docs/tools-guide.md +9 -3
- package/docs/tools.md +3631 -8201
- package/docs/vrcx.md +1 -1
- package/package.json +8 -2
- package/server.json +3 -3
- package/skills/vrchat-mcp/SKILL.md +16 -0
package/docs/privacy.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
VRChat MCP runs locally on your machine as a stdio MCP server. The project does not operate a hosted service for your VRChat session.
|
|
4
|
+
|
|
5
|
+
## Data Access
|
|
6
|
+
|
|
7
|
+
Depending on which tools you call, VRChat MCP can retrieve VRChat account, friend, world, group, event, notification, invite, avatar, status, and local VRCX history data. Tool results are returned to the MCP client that launched the server.
|
|
8
|
+
|
|
9
|
+
## Authentication Storage
|
|
10
|
+
|
|
11
|
+
By default, VRChat auth cookies are stored in the operating system keychain. If keychain storage is unavailable, the server falls back to a local cookie file on your machine. You can opt into file storage explicitly with `VRCHAT_MCP_COOKIE_STORE=file`.
|
|
12
|
+
|
|
13
|
+
VRChat's Creator Guidelines caution third-party API applications not to request or store login credentials, auth tokens, or session data. This project currently relies on local user-managed cookies because VRChat does not provide OAuth for this use case. Treat that as a policy-sensitive personal-use boundary: do not collect anyone else's login information, do not host this service for other users, and clear cookies with `vrchat_auth_logout` when you no longer need the session.
|
|
14
|
+
|
|
15
|
+
## Network Requests
|
|
16
|
+
|
|
17
|
+
The server makes requests to VRChat APIs, VRChat pipeline services, and VRChat status endpoints as needed for the tools you call. VRCX features read local VRCX database files on your machine when VRCX data is present.
|
|
18
|
+
|
|
19
|
+
Curated write tools, generated write tools for API gaps, generated read tools, and read-only VRCX local-history tools are enabled by default for local full-capability use. Use your MCP client or agent harness to control account-changing tool calls, or set `VRCHAT_MCP_ALLOW_WRITES=false` for read-only mode. VRCX tools stay read-only and avoid known cookie/credential storage.
|
|
20
|
+
|
|
21
|
+
## Hosted Integrations
|
|
22
|
+
|
|
23
|
+
Do not send VRChat MCP cookies or session tokens to hosted third-party services. Public HTTP or hosted connector variants should only be used if a future VRChat OAuth or public-data-only design exists.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Robust Notes
|
|
2
|
+
|
|
3
|
+
Durable product and security-review notes for future agents.
|
|
4
|
+
|
|
5
|
+
## Security Review Product Boundary
|
|
6
|
+
|
|
7
|
+
VRChat MCP is intended to be a local, full-capability MCP server. Do not reduce the default tool surface to read-only as a security-review reflex. The expected permission boundary for account-changing actions is the user's MCP client or agent harness, which should decide whether to allow, deny, or ask before executing tool calls.
|
|
8
|
+
|
|
9
|
+
Default posture:
|
|
10
|
+
|
|
11
|
+
- Curated write tools are enabled by default through `writes.allow = true`.
|
|
12
|
+
- VRCX local-history tools are enabled by default and remain read-only, bounded, and curated.
|
|
13
|
+
- Generated read tools are enabled by default for API exploration, excluding hard-skipped operations and operations with curated replacements.
|
|
14
|
+
- Generated write tools are enabled by default for usable API-gap coverage, excluding hard-skipped operations and operations with curated replacements.
|
|
15
|
+
- Read-only mode remains available with `writes.allow = false` or `VRCHAT_MCP_ALLOW_WRITES=false` for test, demo, or constrained deployments.
|
|
16
|
+
|
|
17
|
+
Generated tool `operationIds` lists are narrowing controls, not required allowlists, and they do not re-enable generated operations covered by curated tools. Keep generated tools default-on for broad VRChat API capability and rely on the local MCP client or agent harness to approve or deny account-changing tool calls. Do not propose disabling generated read/write/delete routers by default as a context-budget optimization unless the user explicitly reopens that product boundary. Prefer solving context cost with schema deduplication, smaller repeated metadata, on-demand operation details, and curated consolidation of common multi-endpoint workflows. If a generated write becomes common or needs better ergonomics, add a curated write tool with clear inputs, bounded behavior, IDs in outputs, rate/backoff behavior where appropriate, and tests; the generated duplicate should then disappear from the default surface.
|
|
18
|
+
|
|
19
|
+
Do not omit generated `outputSchema` only to save context: some MCP clients may use output schemas for validation or UX, and the field is optional context for clients rather than guaranteed model prompt text. Treat output schema removal as a client-compatibility decision, not a default budget trick.
|
|
20
|
+
|
|
21
|
+
When consolidating tools, preserve harness permission granularity. Avoid combining read-only and write operations in one curated tool, and avoid combining destructive and non-destructive writes unless the resulting tool is correctly annotated/described as the highest-risk operation it can perform. Prefer explicit `action` enums over natural-language routing, and keep code focused on validation/execution rather than fuzzy intent inference.
|
|
22
|
+
|
|
23
|
+
When future audits flag write/VRCX/generated-tool exposure, treat the preferred remediation as better docs, curated coverage, tool annotations, tests, and harness guidance, not disabling the feature by default.
|
|
24
|
+
|
|
25
|
+
The separate unresolved policy-sensitive boundary remains VRChat authentication: this project uses local user-managed cookies because there is no OAuth flow for this use case. Do not host this service for other users or collect other users' credentials/session data.
|
|
26
|
+
|
|
27
|
+
## API Content Upload Boundary
|
|
28
|
+
|
|
29
|
+
VRChat Creator Guidelines (API Usage / Bots, checked 2026-05-26) say not to create or use software, scripts, or applications that upload content such as worlds, avatars, or similar asset types on a user's behalf. Treat generated operations for uploading or managing uploaded asset content as policy-sensitive, not merely high-risk writes. Default policy blocks explicit avatar/world content-management operations (`createAvatar`, `updateAvatar`, `deleteAvatar`, `createWorld`, `updateWorld`, `deleteWorld`, `publishWorld`, `unpublishWorld`) in central operation validation and hides their generated write tools. Do not assume all image-like uploads are prohibited: icons, prints, gallery images, file upload pipeline operations, and similar user image/file operations remain separate policy decisions. Selecting or viewing avatars is a different class from uploading avatar content; do not over-block ordinary user account actions without mapping them to the guideline text.
|
package/docs/tools-guide.md
CHANGED
|
@@ -5,9 +5,15 @@ This is the human-oriented overview for how to use the tool surface. The full, g
|
|
|
5
5
|
## How to use tools
|
|
6
6
|
|
|
7
7
|
- Prefer **curated tools** first. They include search and summary flows for common VRChat tasks.
|
|
8
|
-
-
|
|
9
|
-
-
|
|
8
|
+
- Auto-generated API-gap coverage is exposed through `vrchat_read`, `vrchat_write`, and `vrchat_delete`. Pass an OpenAPI `operationId`; use `vrchat_operations` to list available operation IDs and `vrchat_operation_details` for exact params/body schemas. Generated routers omit hard-skipped operations and operations already covered by curated tools. Use `generatedReadTools.operationIds` or `generatedWriteTools.operationIds` only when you want to narrow the remaining generated surface.
|
|
9
|
+
- Curated write tools are enabled by default for local full-capability use. Set `writes.allow = false` (or `VRCHAT_MCP_ALLOW_WRITES=false`) for read-only mode.
|
|
10
|
+
- The MCP client or agent harness is expected to control approval/denial for account-changing tool calls.
|
|
10
11
|
- Group write actions are restricted by `groups.allowlist` when set.
|
|
12
|
+
- Do not expose this server as a hosted/public MCP service with VRChat cookies. Keep it local and user-controlled.
|
|
13
|
+
|
|
14
|
+
## Metadata budget
|
|
15
|
+
|
|
16
|
+
Tool names, tool descriptions, argument names, argument descriptions, and schema structure consume model context. Run `npm run metrics:tool-budget` to report the estimated default tool metadata token budget, category breakdown, initial tool-list cost, full schema cost, repeated argument-description hotspots, blank tool-description coverage, argument-description coverage, and the largest tools by metadata size. CI includes this in `npm run metrics`; keep the budget from drifting upward unless the extra guidance is worth the context cost.
|
|
11
17
|
|
|
12
18
|
## MCP resources
|
|
13
19
|
|
|
@@ -23,5 +29,5 @@ This is the human-oriented overview for how to use the tool surface. The full, g
|
|
|
23
29
|
|
|
24
30
|
## Where the truth lives
|
|
25
31
|
|
|
26
|
-
- `docs/tools.md` is generated from code + the OpenAPI spec and
|
|
32
|
+
- `docs/tools.md` is generated from code + the OpenAPI spec and includes curated tools plus the generated catalog.
|
|
27
33
|
- `docs/curated-tools.md` describes the curated tool charter and risk tiers.
|