@basicbit/vrchat-mcp 0.1.2 → 0.1.4

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.4 - 2026-05-18
4
+
5
+ - Default authentication cookie storage to the OS keychain, with file storage fallback when the keychain backend is unavailable.
6
+ - Rewrite the README around consumer install paths, client-specific MCP config, login, and core tools.
7
+
8
+ ## 0.1.3 - 2026-05-17
9
+
10
+ - Simplify registry-visible configuration to the common user-facing environment variables.
11
+ - Keep low-level cache, pipeline, and group allowlist tuning in JSON config instead of environment variables.
12
+ - `VRCHAT_MCP_GROUP_ALLOWLIST` remains honored for compatibility; prefer `groups.allowlist` in `VRCHAT_MCP_CONFIG_FILE` for new setups.
13
+ - Enable write tools by default; set `writes.allow=false` or `VRCHAT_MCP_ALLOW_WRITES=false` for read-only mode.
14
+
3
15
  ## 0.1.2 - 2026-05-16
4
16
 
5
17
  - Match MCP Registry server namespace casing to the GitHub organization namespace authorized by registry login.
package/README.md CHANGED
@@ -4,262 +4,240 @@
4
4
 
5
5
  # VRChat MCP
6
6
 
7
- MCP tools for VRChat friends, worlds, groups, events, notifications, and VRCX history.
7
+ Unofficial [Model Context Protocol](https://modelcontextprotocol.io/) tools for VRChat friends, worlds, groups, events, notifications, status, invites, and local VRCX history.
8
8
 
9
- VRChat MCP is an unofficial [Model Context Protocol](https://modelcontextprotocol.io/) server for VRChat. It works with Claude Desktop, OpenCode, and other MCP clients.
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
- The server is read-only by default. Writes require an explicit config change. Authentication cookies stay on your machine.
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.
12
12
 
13
13
  This project is unofficial and is not affiliated with VRChat Inc.
14
14
 
15
- ## What It Can Do
16
-
17
- - List online friends and their locations.
18
- - Show your current VRChat status and location.
19
- - Look up a friend by display name.
20
- - Search worlds and return IDs for follow-up calls.
21
- - List public and group calendar events.
22
- - Summarize active group instances.
23
- - Read recent notifications.
24
- - Read local VRCX memos and recent world visit history, if VRCX is installed.
25
- - Invite yourself to a known instance, or invite a friend, after writes are enabled.
26
-
27
- ## Write Controls
28
-
29
- - Read-only by default.
30
- - Write tools require explicit opt-in with `writes.allow = true` or `VRCHAT_MCP_ALLOW_WRITES=true`.
31
- - Group write tools can be limited to specific group IDs with `groups.allowlist`.
32
- - Authentication cookies can stay in memory, in a local file, or in the OS keychain.
33
- - Logs go to stderr so stdout remains reserved for MCP protocol messages.
34
- - Live tests, live smoke checks, and LLM evals are opt-in and use local fixture files.
35
-
36
- ## Quick Start
15
+ ## Install
37
16
 
38
17
  Requirements:
39
18
 
40
- - Node.js 24.15.0 or newer. This is the current LTS baseline used for CI and release validation.
41
- - An MCP client such as Claude Desktop, OpenCode, or another MCP-compatible host.
42
-
43
- Run from npm:
19
+ - Node.js 24.15.0 or newer.
20
+ - An MCP client that can run local stdio servers.
44
21
 
45
- ```bash
46
- npx -y @basicbit/vrchat-mcp
47
- ```
22
+ On headless Linux or containers without a keychain daemon such as `libsecret`, set `VRCHAT_MCP_COOKIE_STORE=file` for explicit persistent cookie storage.
48
23
 
49
- Install from source:
24
+ The npm package is the normal install path:
50
25
 
51
26
  ```bash
52
- git clone https://github.com/BASIC-BIT/vrchat-mcp.git
53
- cd vrchat-mcp
54
- npm install
55
- npm run build
27
+ npx -y @basicbit/vrchat-mcp
56
28
  ```
57
29
 
58
- Authentication depends on how you run the server.
59
-
60
- For the npm package, add the server to your MCP client first, then call the `vrchat_auth_begin` tool from that client. It returns a local browser login URL and keeps cookies according to your config.
30
+ The server is also published to the official MCP Registry as `io.github.BASIC-BIT/vrchat-mcp`.
61
31
 
62
- For a source checkout, you can use the local harness:
63
-
64
- ```bash
65
- npm run mcp:login
66
- ```
32
+ ## MCP Client Config
67
33
 
68
- The login helper opens a local browser flow and stores cookies according to your config. The default development helper uses file-backed cookie storage so subsequent MCP sessions can reuse the login.
34
+ Most clients use one of these shapes. No environment variables are required for the default setup.
69
35
 
70
- ## MCP Client Config
36
+ ### OpenCode
71
37
 
72
- Use the npm package for day-to-day use and set a descriptive VRChat API user agent.
38
+ OpenCode uses an array-valued `command` field.
73
39
 
74
- For the npm package:
40
+ Add this to `~/.config/opencode/opencode.json`:
75
41
 
76
42
  ```json
77
43
  {
78
- "mcpServers": {
44
+ "mcp": {
79
45
  "vrchat": {
80
- "command": "npx",
81
- "args": ["-y", "@basicbit/vrchat-mcp"],
82
- "env": {
83
- "VRCHAT_MCP_USER_AGENT": "your-name (email@example.com)",
84
- "VRCHAT_MCP_COOKIE_STORE": "file"
85
- }
46
+ "type": "local",
47
+ "command": ["npx", "-y", "@basicbit/vrchat-mcp"],
48
+ "enabled": true
86
49
  }
87
50
  }
88
51
  }
89
52
  ```
90
53
 
91
- For a source checkout, replace the path with your local checkout:
54
+ ### Claude Desktop, Cursor, Kiro, Roo, Windsurf
55
+
56
+ These clients usually split the executable into `command` plus `args`.
57
+
58
+ Use this in clients that expect an `mcpServers` object:
92
59
 
93
60
  ```json
94
61
  {
95
62
  "mcpServers": {
96
63
  "vrchat": {
97
- "command": "node",
98
- "args": ["<ABS_PATH_TO_REPO>/dist/bin/cli.js"],
99
- "env": {
100
- "VRCHAT_MCP_USER_AGENT": "your-name (email@example.com)",
101
- "VRCHAT_MCP_COOKIE_STORE": "file"
102
- }
64
+ "command": "npx",
65
+ "args": ["-y", "@basicbit/vrchat-mcp"]
103
66
  }
104
67
  }
105
68
  }
106
69
  ```
107
70
 
108
- For active development, you can point your MCP client at the TypeScript entrypoint instead:
71
+ ### VS Code
72
+
73
+ VS Code uses a `servers` object instead of `mcpServers`.
74
+
75
+ Use this in `.vscode/mcp.json`:
109
76
 
110
77
  ```json
111
78
  {
112
- "mcpServers": {
113
- "vrchat-dev": {
79
+ "servers": {
80
+ "vrchat": {
81
+ "type": "stdio",
114
82
  "command": "npx",
115
- "args": ["tsx", "<ABS_PATH_TO_REPO>/src/index.ts"],
116
- "env": {
117
- "VRCHAT_MCP_USER_AGENT": "your-name (email@example.com)",
118
- "VRCHAT_MCP_COOKIE_STORE": "file"
119
- }
83
+ "args": ["-y", "@basicbit/vrchat-mcp"]
120
84
  }
121
85
  }
122
86
  }
123
87
  ```
124
88
 
125
- ## Configuration
126
-
127
- Defaults live in `src/config/defaults.json`. To override them, create a JSON config file and point to it with `VRCHAT_MCP_CONFIG_FILE`.
89
+ ### OpenAI Codex
128
90
 
129
- Example `vrchat-mcp.config.json`:
91
+ Add this to `~/.codex/config.toml` or `.codex/config.toml`:
130
92
 
131
- ```json
132
- {
133
- "api": { "userAgent": "your-name (email@example.com)" },
134
- "auth": { "cookieStore": "file" },
135
- "writes": { "allow": false },
136
- "groups": { "allowlist": ["grp_abc123"] },
137
- "cache": { "enabled": true }
138
- }
93
+ ```toml
94
+ [mcp_servers.vrchat]
95
+ command = "npx"
96
+ args = ["-y", "@basicbit/vrchat-mcp"]
97
+ startup_timeout_sec = 40
139
98
  ```
140
99
 
141
- Environment variables override the config file when set.
100
+ If your Windows client cannot spawn `npx` directly, use `cmd` as the command and put `/c`, `npx`, `-y`, and `@basicbit/vrchat-mcp` in the argument list.
142
101
 
143
- Common environment variables:
102
+ ## Login
144
103
 
145
- - `VRCHAT_MCP_CONFIG_FILE`: path to a JSON config file.
146
- - `VRCHAT_MCP_USER_AGENT`: descriptive user agent sent to the VRChat API. Include contact information when possible.
147
- - `VRCHAT_MCP_API_BASE`: override the API base URL. Defaults to `https://api.vrchat.cloud/api/1`.
148
- - `VRCHAT_MCP_SPEC_URL`: OpenAPI spec URL or local path. Supports `file:` and relative paths.
149
- - `VRCHAT_MCP_LOG_LEVEL`: `debug`, `info`, `warn`, or `error`.
150
- - `VRCHAT_MCP_COOKIE_STORE`: `memory`, `file`, or `keychain`.
151
- - `VRCHAT_MCP_COOKIE_FILE`: cookie file path when `VRCHAT_MCP_COOKIE_STORE=file`.
152
- - `VRCHAT_MCP_ALLOW_WRITES`: enable non-GET operations.
153
- - `VRCHAT_MCP_GROUP_ALLOWLIST`: comma-separated list of group IDs permitted for group write actions.
154
- - `VRCHAT_MCP_ENABLE_RAW_CALL`: enable the raw `vrchat_call` tool. Disabled by default.
155
- - `VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS`: disable auto-generated read tools.
156
- - `VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS`: disable auto-generated write tools.
104
+ After adding the server to your MCP client, ask it to call `vrchat_auth_begin`. The tool returns a local browser login URL.
157
105
 
158
- Cache and realtime pipeline tuning are configured in JSON. See `src/config/defaults.json` for the full set of defaults.
106
+ 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.
159
107
 
160
- ## Tool Surface
108
+ Useful auth tools:
161
109
 
162
- VRChat MCP exposes three layers:
110
+ - `vrchat_auth_begin`: start local browser login.
111
+ - `vrchat_auth_status`: check whether the server is logged in.
112
+ - `vrchat_auth_logout`: clear the stored session.
163
113
 
164
- - Curated tools for common tasks, such as `vrchat_me`, `vrchat_friends_search`, `vrchat_friend_details`, `vrchat_worlds_search`, `vrchat_group_profile`, `vrchat_events_upcoming`, and `vrchat_notifications_recent`.
165
- - Auto-generated read tools named `vrchat_read_<operationId>` for GET operations from the VRChat OpenAPI spec.
166
- - Auto-generated write tools named `vrchat_write_<operationId>` for non-GET operations. These remain gated by the write configuration.
114
+ ## What You Can Ask
167
115
 
168
- Local-only tools and resources include:
116
+ Examples:
169
117
 
170
- - `vrchat_auth_begin`, `vrchat_auth_status`, and `vrchat_auth_logout` for local authentication.
171
- - `vrchat_cache_invalidate` for MCP-local cache control.
172
- - `vrchat://friends/changes{?after,limit}` for friend change deltas.
173
- - `vrchat://friends/snapshot{?includeOffline,pageSize,maxPages}` for friend snapshots.
118
+ ```txt
119
+ Show my VRChat status and current location.
120
+ ```
174
121
 
175
- The generated catalog lives in `docs/tools.md`. The shorter usage guide lives in `docs/tools-guide.md`.
122
+ ```txt
123
+ Which friends are online, grouped by world?
124
+ ```
176
125
 
177
- ## Optional Swagger UI
126
+ ```txt
127
+ Search my friends for Alice and show their profile.
128
+ ```
178
129
 
179
- If you want a Swagger UI and OpenAPI-style proxy for the MCP tools, use `mcpo`:
130
+ ```txt
131
+ Find public VRChat events happening today.
132
+ ```
180
133
 
181
- ```bash
182
- uvx mcpo --port 8000 --api-key "top-secret" -- node <ABS_PATH_TO_REPO>/dist/bin/cli.js
134
+ ```txt
135
+ Invite Bob to my current instance.
136
+ ```
137
+
138
+ ```txt
139
+ Show recent worlds from my local VRCX history.
183
140
  ```
184
141
 
185
- Then open `http://localhost:8000/docs`.
142
+ ## Tools
186
143
 
187
- You can also run config mode against an MCP client config file:
144
+ VRChat MCP exposes curated tools for common tasks plus generated tools from the VRChat OpenAPI spec.
188
145
 
189
- ```bash
190
- mcpo --config <PATH_TO_MCP_CONFIG.json> --hot-reload --api-key "top-secret"
191
- ```
146
+ Common curated tools include:
192
147
 
193
- Each MCP server is exposed under its own route, such as `http://localhost:8000/vrchat`, with Swagger UI at `http://localhost:8000/vrchat/docs`.
148
+ - `vrchat_me`
149
+ - `vrchat_friends_overview`
150
+ - `vrchat_friends_search`
151
+ - `vrchat_friend_details`
152
+ - `vrchat_worlds_search`
153
+ - `vrchat_group_profile`
154
+ - `vrchat_events_upcoming`
155
+ - `vrchat_notifications_recent`
156
+ - `vrchat_invite_user_to_me`
157
+ - `vrcx_instances_recent`
194
158
 
195
- ## Development
159
+ Generated tools use these naming patterns:
196
160
 
197
- Useful scripts:
161
+ - `vrchat_read_<operationId>` for GET operations.
162
+ - `vrchat_write_<operationId>` for non-GET operations.
198
163
 
199
- - `npm run dev`: run `src/index.ts` through `tsx`.
200
- - `npm run build`: type-check and emit to `dist/`.
201
- - `npm run start`: run the built server from `dist/`.
202
- - `npm run lint`: run ESLint.
203
- - `npm run typecheck`: type-check without emit.
204
- - `npm test`: run Vitest.
205
- - `npm run check`: lint, type-check, and test.
206
- - `npm run mcp:login`: launch the local login helper.
207
- - `npm run mcp:status`: check local auth status through the harness.
208
- - `npm run mcp:logout`: clear the local auth session through the harness.
209
- - `npm run smoke:live`: run the opt-in read-only live smoke matrix against the built server.
210
- - `npm run generate:tools-docs`: regenerate `docs/tools.md`.
211
- - `npm run generate:schemas`: regenerate `src/generated/vrchat-schemas.ts` from the VRChat OpenAPI spec.
212
- - `npm run generate:test-schemas`: regenerate mock test schemas.
164
+ See `docs/tools-guide.md` for a short guide and `docs/tools.md` for the generated catalog.
213
165
 
214
- Project layout:
166
+ ## Write Controls
215
167
 
216
- - `src/index.ts`: server bootstrap.
217
- - `src/core/`: VRChat API plumbing, spec parsing, request dispatch, and read helpers.
218
- - `src/tools/`: MCP tool registration.
219
- - `src/schemas/`: shared Zod schemas for tool inputs and outputs.
220
- - `src/generated/`: generated OpenAPI Zod schemas.
221
- - `src/services/`: domain services for auth, cache, friends, worlds, groups, VRCX, and more.
222
- - `src/resources/`: MCP resources for snapshots and delta feeds.
223
- - `src/auth/`: local login flow and cookie storage.
224
- - `src/infra/`: logging and infrastructure utilities.
225
- - `src/utils/`: lightweight shared helpers.
226
- - `docs/`: architecture, tool inventory, evals, and design notes.
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.
227
169
 
228
- ## Testing And Evals
170
+ To force read-only mode, add this `env` fragment inside the server entry for your MCP client:
229
171
 
230
- Local checks:
172
+ ```json
173
+ {
174
+ "env": {
175
+ "VRCHAT_MCP_ALLOW_WRITES": "false"
176
+ }
177
+ }
178
+ ```
231
179
 
232
- ```bash
233
- npm run check
180
+ For group write tools, you can restrict writes to specific group IDs with a JSON config file:
181
+
182
+ ```json
183
+ {
184
+ "groups": {
185
+ "allowlist": ["grp_abc123"]
186
+ }
187
+ }
234
188
  ```
235
189
 
236
- Read-only live smoke checks are opt-in:
190
+ Then set `VRCHAT_MCP_CONFIG_FILE` to that file path in your MCP client config.
237
191
 
238
- ```bash
239
- npm run build
240
- npm run mcp:login
241
- npm run smoke:live
192
+ ## Configuration
193
+
194
+ Configuration is optional. Defaults cover normal local use.
195
+
196
+ Common environment variables:
197
+
198
+ | Variable | Use |
199
+ | ------------------------- | -------------------------------------------------------- |
200
+ | `VRCHAT_MCP_CONFIG_FILE` | Path to a JSON config file. |
201
+ | `VRCHAT_MCP_USER_AGENT` | Descriptive user agent for VRChat API requests. |
202
+ | `VRCHAT_MCP_LOG_LEVEL` | `debug`, `info`, `warn`, or `error`. |
203
+ | `VRCHAT_MCP_COOKIE_STORE` | `keychain`, `file`, or `memory`. Defaults to `keychain`. |
204
+ | `VRCHAT_MCP_COOKIE_FILE` | Cookie file path when `VRCHAT_MCP_COOKIE_STORE=file`. |
205
+ | `VRCHAT_MCP_ALLOW_WRITES` | Set to `false` for read-only mode. |
206
+
207
+ Example JSON config:
208
+
209
+ ```json
210
+ {
211
+ "auth": { "cookieStore": "file" },
212
+ "writes": { "allow": false },
213
+ "groups": { "allowlist": ["grp_abc123"] },
214
+ "cache": { "enabled": true }
215
+ }
242
216
  ```
243
217
 
244
- Live E2E and LLM evals use gitignored local fixture files:
218
+ See `src/config/defaults.json` for all defaults.
245
219
 
246
- - `test/fixtures/e2e.live.json`
247
- - `test/fixtures/evals.live.json`
220
+ ## Local Development
248
221
 
249
- Prefer keeping live fixture files outside the repository and pointing to them with `VRCHAT_MCP_LIVE_CONFIG_FILE` and `VRCHAT_MCP_EVAL_CONFIG_FILE`. Store LLM API keys in environment variables or a secret manager, not in JSON files.
222
+ ```bash
223
+ git clone https://github.com/BASIC-BIT/vrchat-mcp.git
224
+ cd vrchat-mcp
225
+ npm install
226
+ npm run build
227
+ npm run check
228
+ ```
250
229
 
251
- See `docs/evals.md` for the repeatable smoke, LLM, and manual MCP client evaluation workflow.
230
+ Useful scripts:
252
231
 
253
- ## Documentation
232
+ - `npm run dev`: run from `src/index.ts`.
233
+ - `npm run start`: run the built server from `dist/`.
234
+ - `npm run mcp:login`: start login through the local harness.
235
+ - `npm run mcp:status`: check auth through the local harness.
236
+ - `npm run smoke:live`: run the opt-in live smoke check.
237
+ - `npm run generate:tools-docs`: regenerate `docs/tools.md`.
238
+ - `npm run generate:schemas`: regenerate OpenAPI schemas.
254
239
 
255
- - `docs/tools.md`: generated tool catalog with schemas.
256
- - `docs/tools-guide.md`: short human guide for the tool surface.
257
- - `docs/architecture.md`: codebase overview and data flow.
258
- - `docs/curated-tools.md`: curated tool charter and risk tiers.
259
- - `docs/evals.md`: smoke, LLM, and manual MCP client eval workflow.
260
- - [`docs/public-launch-plan.md`](https://github.com/BASIC-BIT/vrchat-mcp/blob/main/docs/public-launch-plan.md): release awareness, registry, and launch-channel plan.
261
- - `docs/vrcx.md`: local VRCX integration notes.
262
- - `docs/design-notes.md`: archived design notes and future-facing ideas.
240
+ Live E2E tests and LLM evals are opt-in. See `docs/evals.md` for details.
263
241
 
264
242
  ## License
265
243
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basicbit/vrchat-mcp",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
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",
@@ -78,7 +78,11 @@ class FileStore {
78
78
  class KeychainStore {
79
79
  service = 'vrchat-mcp';
80
80
  account = 'default';
81
+ fallback;
81
82
  keytar = null;
83
+ constructor(fallback) {
84
+ this.fallback = fallback;
85
+ }
82
86
  async ensureKeytar() {
83
87
  if (this.keytar)
84
88
  return this.keytar;
@@ -88,38 +92,65 @@ class KeychainStore {
88
92
  return this.keytar;
89
93
  }
90
94
  catch (err) {
91
- logger.warn('keytar not available; falling back to memory', { message: err.message });
95
+ logger.warn('keytar not available; falling back to file cookie storage', {
96
+ message: err.message,
97
+ });
92
98
  return null;
93
99
  }
94
100
  }
95
101
  async load() {
96
102
  const keytar = await this.ensureKeytar();
97
103
  if (!keytar)
98
- return null;
99
- const val = await keytar.getPassword(this.service, this.account);
104
+ return await this.fallback.load();
105
+ let val;
106
+ try {
107
+ val = await keytar.getPassword(this.service, this.account);
108
+ }
109
+ catch (err) {
110
+ logger.warn('Failed to load cookies from keychain; falling back to file cookie storage', {
111
+ message: err.message,
112
+ });
113
+ return await this.fallback.load();
114
+ }
100
115
  if (!val)
101
- return null;
116
+ return await this.fallback.load();
102
117
  try {
103
118
  const obj = JSON.parse(val);
104
119
  return await deserializeJar(obj);
105
120
  }
106
121
  catch (err) {
107
122
  logger.warn('Failed to parse keychain cookie data', { message: err.message });
108
- return null;
123
+ return await this.fallback.load();
109
124
  }
110
125
  }
111
126
  async save(jar) {
112
127
  const keytar = await this.ensureKeytar();
113
- if (!keytar)
128
+ if (!keytar) {
129
+ await this.fallback.save(jar);
114
130
  return;
131
+ }
115
132
  const serialized = await serializeJar(jar);
116
- await keytar.setPassword(this.service, this.account, JSON.stringify(serialized));
133
+ try {
134
+ await keytar.setPassword(this.service, this.account, JSON.stringify(serialized));
135
+ }
136
+ catch (err) {
137
+ logger.warn('Failed to save cookies to keychain; falling back to file cookie storage', {
138
+ message: err.message,
139
+ });
140
+ await this.fallback.save(jar);
141
+ }
117
142
  }
118
143
  async clear() {
119
144
  const keytar = await this.ensureKeytar();
120
- if (!keytar)
121
- return;
122
- await keytar.deletePassword(this.service, this.account);
145
+ if (keytar) {
146
+ try {
147
+ await keytar.deletePassword(this.service, this.account);
148
+ }
149
+ catch (err) {
150
+ logger.warn('Failed to delete cookies from keychain', { message: err.message });
151
+ }
152
+ }
153
+ await this.fallback.clear();
123
154
  }
124
155
  }
125
156
  export function getCookieStore() {
@@ -129,7 +160,7 @@ export function getCookieStore() {
129
160
  return new FileStore(path.resolve(config.auth.cookieFile));
130
161
  }
131
162
  if (mode === 'keychain') {
132
- return new KeychainStore();
163
+ return new KeychainStore(new FileStore(path.resolve(config.auth.cookieFile)));
133
164
  }
134
165
  return new MemoryStore();
135
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cookieStore.js","sourceRoot":"","sources":["../../../src/auth/cookieStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookieStore.js","sourceRoot":"","sources":["../../../src/auth/cookieStore.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@
10
10
  "level": "info"
11
11
  },
12
12
  "auth": {
13
- "cookieStore": "memory",
13
+ "cookieStore": "keychain",
14
14
  "cookieFile": "~/.vrchat-mcp-cookies.json"
15
15
  },
16
16
  "writes": {
17
- "allow": false
17
+ "allow": true
18
18
  },
19
19
  "cache": {
20
20
  "enabled": true,
@@ -131,16 +131,6 @@ const EnvBoolean = z.preprocess((value) => {
131
131
  return false;
132
132
  return value;
133
133
  }, z.boolean().optional());
134
- const EnvPositiveInt = z.preprocess((value) => {
135
- if (value === undefined)
136
- return undefined;
137
- if (typeof value !== 'string')
138
- return value;
139
- const trimmed = value.trim();
140
- if (!trimmed)
141
- return value;
142
- return Number(trimmed);
143
- }, z.number().int().positive().optional());
144
134
  const EnvAllowlist = z.preprocess((value) => {
145
135
  if (value === undefined)
146
136
  return undefined;
@@ -166,18 +156,7 @@ const EnvSchema = z
166
156
  VRCHAT_MCP_COOKIE_FILE: EnvString,
167
157
  VRCHAT_MCP_ALLOW_WRITES: EnvBoolean,
168
158
  VRCHAT_MCP_CACHE_ENABLED: EnvBoolean,
169
- VRCHAT_MCP_CACHE_TTL_FRIENDS: EnvPositiveInt,
170
- VRCHAT_MCP_CACHE_STALE_TTL_FRIENDS: EnvPositiveInt,
171
- VRCHAT_MCP_CACHE_TTL_USER_GROUPS: EnvPositiveInt,
172
- VRCHAT_MCP_CACHE_STALE_TTL_USER_GROUPS: EnvPositiveInt,
173
- VRCHAT_MCP_CACHE_TTL_GROUPS: EnvPositiveInt,
174
- VRCHAT_MCP_CACHE_STALE_TTL_GROUPS: EnvPositiveInt,
175
- VRCHAT_MCP_CACHE_TTL_NOTIFICATIONS: EnvPositiveInt,
176
- VRCHAT_MCP_CACHE_STALE_TTL_NOTIFICATIONS: EnvPositiveInt,
177
159
  VRCHAT_MCP_PIPELINE_ENABLED: EnvBoolean,
178
- VRCHAT_MCP_PIPELINE_URL: EnvString,
179
- VRCHAT_MCP_PIPELINE_RECONNECT_MS: EnvPositiveInt,
180
- VRCHAT_MCP_PIPELINE_CHANGE_BUFFER: EnvPositiveInt,
181
160
  VRCHAT_MCP_GROUP_ALLOWLIST: EnvAllowlist,
182
161
  VRCHAT_MCP_ENABLE_RAW_CALL: EnvBoolean,
183
162
  VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS: EnvBoolean,
@@ -282,33 +261,9 @@ function applyWriteEnvOverrides(overrides, env) {
282
261
  }
283
262
  function applyCacheEnvOverrides(overrides, env) {
284
263
  const cacheOverrides = {};
285
- const ttlOverrides = {};
286
- const staleOverrides = {};
287
264
  if (env.VRCHAT_MCP_CACHE_ENABLED !== undefined) {
288
265
  cacheOverrides.enabled = env.VRCHAT_MCP_CACHE_ENABLED;
289
266
  }
290
- if (env.VRCHAT_MCP_CACHE_TTL_FRIENDS !== undefined)
291
- ttlOverrides.friends = env.VRCHAT_MCP_CACHE_TTL_FRIENDS;
292
- if (env.VRCHAT_MCP_CACHE_TTL_USER_GROUPS !== undefined)
293
- ttlOverrides.userGroups = env.VRCHAT_MCP_CACHE_TTL_USER_GROUPS;
294
- if (env.VRCHAT_MCP_CACHE_TTL_GROUPS !== undefined)
295
- ttlOverrides.groups = env.VRCHAT_MCP_CACHE_TTL_GROUPS;
296
- if (env.VRCHAT_MCP_CACHE_TTL_NOTIFICATIONS !== undefined)
297
- ttlOverrides.notifications = env.VRCHAT_MCP_CACHE_TTL_NOTIFICATIONS;
298
- if (env.VRCHAT_MCP_CACHE_STALE_TTL_FRIENDS !== undefined)
299
- staleOverrides.friends = env.VRCHAT_MCP_CACHE_STALE_TTL_FRIENDS;
300
- if (env.VRCHAT_MCP_CACHE_STALE_TTL_USER_GROUPS !== undefined)
301
- staleOverrides.userGroups = env.VRCHAT_MCP_CACHE_STALE_TTL_USER_GROUPS;
302
- if (env.VRCHAT_MCP_CACHE_STALE_TTL_GROUPS !== undefined)
303
- staleOverrides.groups = env.VRCHAT_MCP_CACHE_STALE_TTL_GROUPS;
304
- if (env.VRCHAT_MCP_CACHE_STALE_TTL_NOTIFICATIONS !== undefined)
305
- staleOverrides.notifications = env.VRCHAT_MCP_CACHE_STALE_TTL_NOTIFICATIONS;
306
- if (Object.keys(ttlOverrides).length > 0) {
307
- cacheOverrides.ttlSeconds = ttlOverrides;
308
- }
309
- if (Object.keys(staleOverrides).length > 0) {
310
- cacheOverrides.staleTtlSeconds = staleOverrides;
311
- }
312
267
  if (Object.keys(cacheOverrides).length > 0) {
313
268
  overrides.cache = cacheOverrides;
314
269
  }
@@ -318,15 +273,6 @@ function applyPipelineEnvOverrides(overrides, env) {
318
273
  if (env.VRCHAT_MCP_PIPELINE_ENABLED !== undefined) {
319
274
  pipelineOverrides.enabled = env.VRCHAT_MCP_PIPELINE_ENABLED;
320
275
  }
321
- if (env.VRCHAT_MCP_PIPELINE_URL) {
322
- pipelineOverrides.url = env.VRCHAT_MCP_PIPELINE_URL;
323
- }
324
- if (env.VRCHAT_MCP_PIPELINE_RECONNECT_MS !== undefined) {
325
- pipelineOverrides.reconnectMs = env.VRCHAT_MCP_PIPELINE_RECONNECT_MS;
326
- }
327
- if (env.VRCHAT_MCP_PIPELINE_CHANGE_BUFFER !== undefined) {
328
- pipelineOverrides.changeBuffer = env.VRCHAT_MCP_PIPELINE_CHANGE_BUFFER;
329
- }
330
276
  if (Object.keys(pipelineOverrides).length > 0) {
331
277
  overrides.pipeline = pipelineOverrides;
332
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,12 @@ without wading through hundreds of low-level endpoints.
9
9
  - Small and explicit: each tool has a single, obvious purpose.
10
10
  - Human-input friendly: accept names or natural inputs where reasonable.
11
11
  - Composable: outputs include IDs and metadata for follow-ups.
12
- - Safe by default: write tools are opt-in via `writes.allow`, with group allowlists for group-scoped writes.
12
+ - Practical by default: write tools are available out of the box, with `writes.allow` for read-only mode and group allowlists for group-scoped writes.
13
13
 
14
14
  ## Write controls
15
15
 
16
16
  - Read-only tools are always enabled.
17
- - Write tools require `writes.allow = true`.
17
+ - Write tools are enabled unless `writes.allow = false`.
18
18
  - Group-scoped writes additionally honor `groups.allowlist`.
19
19
 
20
20
  ## Current curated tools (implemented)
@@ -124,7 +124,7 @@ Automation hooks:
124
124
  ## Toolset toggles (planned)
125
125
 
126
126
  Auto-generated read tools are enabled by default (`vrchat_read_<operationId>`).
127
- Auto-generated write tools are enabled by default (`vrchat_write_<operationId>`, gated by `writes.allow`).
127
+ Auto-generated write tools are enabled by default (`vrchat_write_<operationId>`) unless disabled by `writes.allow`.
128
128
  The raw tool (`vrchat_call`) is disabled by default and can be enabled via config/environment flags.
129
129
 
130
130
  ## Group allowlist guard
package/docs/evals.md CHANGED
@@ -70,7 +70,7 @@ Search for worlds matching "club" and summarize three good candidates without du
70
70
  Show recent notifications and tell me which ones look actionable.
71
71
  ```
72
72
 
73
- Good write-flow prompts, only with `writes.allow=true` and disposable targets:
73
+ Good write-flow prompts, preferably with disposable targets:
74
74
 
75
75
  ```text
76
76
  Create a private instance in <world name> for me, then invite only me to it.
@@ -6,7 +6,7 @@ This is the human-oriented overview for how to use the tool surface. The full, g
6
6
 
7
7
  - Prefer **curated tools** first. They include search and summary flows for common VRChat tasks.
8
8
  - Use **auto-generated tools** (`vrchat_read_<operationId>`, `vrchat_write_<operationId>`) only when a curated tool does not exist.
9
- - **Writes are opt-in**. Set `writes.allow = true` (or `VRCHAT_MCP_ALLOW_WRITES=true`) to enable any non-GET operation.
9
+ - **Writes are enabled by default**. Set `writes.allow = false` (or `VRCHAT_MCP_ALLOW_WRITES=false`) for read-only mode.
10
10
  - Group write actions are restricted by `groups.allowlist` when set.
11
11
 
12
12
  ## MCP resources
package/docs/tools.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Tool Catalog (generated)
2
2
 
3
- Generated: 2026-05-04T22:14:24.918Z
3
+ Generated: 2026-05-18T09:05:56.266Z
4
4
 
5
5
  Spec: VRChat API Documentation (1.20.7)
6
6
 
@@ -288,9 +288,16 @@ Output schema:
288
288
  "maximum": 9007199254740991
289
289
  },
290
290
  "created_at": {
291
- "type": "string",
292
- "format": "date-time",
293
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
291
+ "anyOf": [
292
+ {
293
+ "type": "string",
294
+ "format": "date-time",
295
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
296
+ },
297
+ {
298
+ "type": "null"
299
+ }
300
+ ]
294
301
  },
295
302
  "id": {
296
303
  "type": "string"
@@ -358,8 +365,6 @@ Output schema:
358
365
  }
359
366
  },
360
367
  "required": [
361
- "assetVersion",
362
- "id",
363
368
  "platform",
364
369
  "unityVersion"
365
370
  ],
@@ -3512,7 +3517,6 @@ Output schema:
3512
3517
  "type": "array",
3513
3518
  "items": {
3514
3519
  "minItems": 2,
3515
- "maxItems": 2,
3516
3520
  "type": "array",
3517
3521
  "items": {}
3518
3522
  }
@@ -3631,9 +3635,16 @@ Output schema:
3631
3635
  "maximum": 9007199254740991
3632
3636
  },
3633
3637
  "created_at": {
3634
- "type": "string",
3635
- "format": "date-time",
3636
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
3638
+ "anyOf": [
3639
+ {
3640
+ "type": "string",
3641
+ "format": "date-time",
3642
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
3643
+ },
3644
+ {
3645
+ "type": "null"
3646
+ }
3647
+ ]
3637
3648
  },
3638
3649
  "id": {
3639
3650
  "type": "string"
@@ -3701,8 +3712,6 @@ Output schema:
3701
3712
  }
3702
3713
  },
3703
3714
  "required": [
3704
- "assetVersion",
3705
- "id",
3706
3715
  "platform",
3707
3716
  "unityVersion"
3708
3717
  ],
@@ -5516,7 +5525,6 @@ Output schema:
5516
5525
  "type": "array",
5517
5526
  "items": {
5518
5527
  "minItems": 2,
5519
- "maxItems": 2,
5520
5528
  "type": "array",
5521
5529
  "items": {}
5522
5530
  }
@@ -5635,9 +5643,16 @@ Output schema:
5635
5643
  "maximum": 9007199254740991
5636
5644
  },
5637
5645
  "created_at": {
5638
- "type": "string",
5639
- "format": "date-time",
5640
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
5646
+ "anyOf": [
5647
+ {
5648
+ "type": "string",
5649
+ "format": "date-time",
5650
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
5651
+ },
5652
+ {
5653
+ "type": "null"
5654
+ }
5655
+ ]
5641
5656
  },
5642
5657
  "id": {
5643
5658
  "type": "string"
@@ -5705,8 +5720,6 @@ Output schema:
5705
5720
  }
5706
5721
  },
5707
5722
  "required": [
5708
- "assetVersion",
5709
- "id",
5710
5723
  "platform",
5711
5724
  "unityVersion"
5712
5725
  ],
@@ -11427,7 +11440,6 @@ Output schema:
11427
11440
  "type": "array",
11428
11441
  "items": {
11429
11442
  "minItems": 2,
11430
- "maxItems": 2,
11431
11443
  "type": "array",
11432
11444
  "items": {}
11433
11445
  }
@@ -11546,9 +11558,16 @@ Output schema:
11546
11558
  "maximum": 9007199254740991
11547
11559
  },
11548
11560
  "created_at": {
11549
- "type": "string",
11550
- "format": "date-time",
11551
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
11561
+ "anyOf": [
11562
+ {
11563
+ "type": "string",
11564
+ "format": "date-time",
11565
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
11566
+ },
11567
+ {
11568
+ "type": "null"
11569
+ }
11570
+ ]
11552
11571
  },
11553
11572
  "id": {
11554
11573
  "type": "string"
@@ -11616,8 +11635,6 @@ Output schema:
11616
11635
  }
11617
11636
  },
11618
11637
  "required": [
11619
- "assetVersion",
11620
- "id",
11621
11638
  "platform",
11622
11639
  "unityVersion"
11623
11640
  ],
@@ -13668,7 +13685,7 @@ Output schema:
13668
13685
  - `vrchat_read_verifyLoginPlace` (GET /auth/verifyLoginPlace) - Verify Login Place
13669
13686
 
13670
13687
  ## Auto-generated write tools (non-GET operations)
13671
- Input schemas are derived per operation from OpenAPI parameters and request bodies (writes still require `writes.allow = true`).
13688
+ Input schemas are derived per operation from OpenAPI parameters and request bodies (set `writes.allow = false` for read-only mode).
13672
13689
  Write options are shared across write tools:
13673
13690
 
13674
13691
  ```json
package/docs/vrcx.md CHANGED
@@ -62,7 +62,7 @@ This enables tools to provide:
62
62
 
63
63
  ## Tooling philosophy
64
64
 
65
- - Read-only by default.
65
+ - VRCX tools are read-only.
66
66
  - Small, curated outputs.
67
67
  - No raw SQL passthrough.
68
68
  - Never return `cookies` or sensitive `configs` keys.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basicbit/vrchat-mcp",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
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",
package/server.json CHANGED
@@ -8,12 +8,12 @@
8
8
  "source": "github",
9
9
  "id": "1122295987"
10
10
  },
11
- "version": "0.1.2",
11
+ "version": "0.1.4",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "@basicbit/vrchat-mcp",
16
- "version": "0.1.2",
16
+ "version": "0.1.3",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
@@ -25,13 +25,6 @@
25
25
  "isRequired": false,
26
26
  "isSecret": false
27
27
  },
28
- {
29
- "name": "VRCHAT_MCP_API_BASE",
30
- "description": "VRChat API base URL override.",
31
- "format": "string",
32
- "isRequired": false,
33
- "isSecret": false
34
- },
35
28
  {
36
29
  "name": "VRCHAT_MCP_USER_AGENT",
37
30
  "description": "Descriptive User-Agent for VRChat API requests.",
@@ -39,13 +32,6 @@
39
32
  "isRequired": false,
40
33
  "isSecret": false
41
34
  },
42
- {
43
- "name": "VRCHAT_MCP_SPEC_URL",
44
- "description": "OpenAPI spec URL or file path override.",
45
- "format": "string",
46
- "isRequired": false,
47
- "isSecret": false
48
- },
49
35
  {
50
36
  "name": "VRCHAT_MCP_LOG_LEVEL",
51
37
  "description": "Log level for stderr diagnostics.",
@@ -57,10 +43,10 @@
57
43
  },
58
44
  {
59
45
  "name": "VRCHAT_MCP_COOKIE_STORE",
60
- "description": "Cookie storage backend for VRChat authentication.",
46
+ "description": "Cookie storage backend for VRChat authentication. The keychain mode falls back to file storage if the OS keychain is unavailable.",
61
47
  "format": "string",
62
48
  "choices": ["memory", "file", "keychain"],
63
- "default": "memory",
49
+ "default": "keychain",
64
50
  "isRequired": false,
65
51
  "isSecret": false
66
52
  },
@@ -73,145 +59,11 @@
73
59
  },
74
60
  {
75
61
  "name": "VRCHAT_MCP_ALLOW_WRITES",
76
- "description": "Enable non-GET VRChat API write operations.",
77
- "format": "boolean",
78
- "default": "false",
79
- "isRequired": false,
80
- "isSecret": false
81
- },
82
- {
83
- "name": "VRCHAT_MCP_GROUP_ALLOWLIST",
84
- "description": "Comma-separated group IDs permitted for group write actions.",
85
- "format": "string",
86
- "isRequired": false,
87
- "isSecret": false
88
- },
89
- {
90
- "name": "VRCHAT_MCP_CACHE_ENABLED",
91
- "description": "Enable in-memory caching for high-volume reads.",
92
- "format": "boolean",
93
- "default": "true",
94
- "isRequired": false,
95
- "isSecret": false
96
- },
97
- {
98
- "name": "VRCHAT_MCP_CACHE_TTL_FRIENDS",
99
- "description": "Fresh cache TTL in seconds for friends data.",
100
- "format": "number",
101
- "default": "120",
102
- "isRequired": false,
103
- "isSecret": false
104
- },
105
- {
106
- "name": "VRCHAT_MCP_CACHE_STALE_TTL_FRIENDS",
107
- "description": "Stale cache TTL in seconds for friends data.",
108
- "format": "number",
109
- "default": "600",
110
- "isRequired": false,
111
- "isSecret": false
112
- },
113
- {
114
- "name": "VRCHAT_MCP_CACHE_TTL_USER_GROUPS",
115
- "description": "Fresh cache TTL in seconds for user group data.",
116
- "format": "number",
117
- "default": "300",
118
- "isRequired": false,
119
- "isSecret": false
120
- },
121
- {
122
- "name": "VRCHAT_MCP_CACHE_STALE_TTL_USER_GROUPS",
123
- "description": "Stale cache TTL in seconds for user group data.",
124
- "format": "number",
125
- "default": "1800",
126
- "isRequired": false,
127
- "isSecret": false
128
- },
129
- {
130
- "name": "VRCHAT_MCP_CACHE_TTL_GROUPS",
131
- "description": "Fresh cache TTL in seconds for group data.",
132
- "format": "number",
133
- "default": "300",
134
- "isRequired": false,
135
- "isSecret": false
136
- },
137
- {
138
- "name": "VRCHAT_MCP_CACHE_STALE_TTL_GROUPS",
139
- "description": "Stale cache TTL in seconds for group data.",
140
- "format": "number",
141
- "default": "1800",
142
- "isRequired": false,
143
- "isSecret": false
144
- },
145
- {
146
- "name": "VRCHAT_MCP_CACHE_TTL_NOTIFICATIONS",
147
- "description": "Fresh cache TTL in seconds for notification data.",
148
- "format": "number",
149
- "default": "30",
150
- "isRequired": false,
151
- "isSecret": false
152
- },
153
- {
154
- "name": "VRCHAT_MCP_CACHE_STALE_TTL_NOTIFICATIONS",
155
- "description": "Stale cache TTL in seconds for notification data.",
156
- "format": "number",
157
- "default": "300",
158
- "isRequired": false,
159
- "isSecret": false
160
- },
161
- {
162
- "name": "VRCHAT_MCP_PIPELINE_ENABLED",
163
- "description": "Enable the VRChat realtime pipeline websocket after login.",
62
+ "description": "Allow non-GET VRChat API write operations. Set to false for read-only mode.",
164
63
  "format": "boolean",
165
64
  "default": "true",
166
65
  "isRequired": false,
167
66
  "isSecret": false
168
- },
169
- {
170
- "name": "VRCHAT_MCP_PIPELINE_URL",
171
- "description": "VRChat realtime pipeline websocket URL override.",
172
- "format": "string",
173
- "isRequired": false,
174
- "isSecret": false
175
- },
176
- {
177
- "name": "VRCHAT_MCP_PIPELINE_RECONNECT_MS",
178
- "description": "Realtime pipeline reconnect delay in milliseconds.",
179
- "format": "number",
180
- "default": "5000",
181
- "isRequired": false,
182
- "isSecret": false
183
- },
184
- {
185
- "name": "VRCHAT_MCP_PIPELINE_CHANGE_BUFFER",
186
- "description": "Maximum in-memory friend change events retained.",
187
- "format": "number",
188
- "default": "200",
189
- "isRequired": false,
190
- "isSecret": false
191
- },
192
- {
193
- "name": "VRCHAT_MCP_ENABLE_RAW_CALL",
194
- "description": "Enable the low-level raw VRChat API call tool.",
195
- "format": "boolean",
196
- "default": "false",
197
- "isRequired": false,
198
- "isSecret": false
199
- },
200
- {
201
- "name": "VRCHAT_MCP_DISABLE_GENERATED_READ_TOOLS",
202
- "description": "Disable generated read tools from the VRChat OpenAPI spec.",
203
- "format": "boolean",
204
- "default": "false",
205
- "isRequired": false,
206
- "isSecret": false
207
- },
208
- {
209
- "name": "VRCHAT_MCP_DISABLE_GENERATED_WRITE_TOOLS",
210
- "description": "Disable generated write tools from the VRChat OpenAPI spec.",
211
- "format": "boolean",
212
- "default": "false",
213
- "isRequired": false,
214
- "isSecret": false
215
67
  }
216
68
  ]
217
69
  }