@rvry/mcp 0.11.0 → 0.11.2
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/README.md +7 -4
- package/dist/client.d.ts +1 -1
- package/dist/client.js +4 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +23 -2
- package/dist/setup.d.ts +4 -4
- package/dist/setup.js +11 -9
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ RVRY is an MCP server that improves AI reliability by forcing your model to fini
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx @rvry/mcp@latest setup
|
|
10
|
+
npx --yes --package @rvry/mcp@latest rvry-mcp setup
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
The wizard will:
|
|
@@ -27,7 +27,7 @@ For any MCP client that supports **stdio transport** (runs a local process), add
|
|
|
27
27
|
{
|
|
28
28
|
"rvry": {
|
|
29
29
|
"command": "npx",
|
|
30
|
-
"args": ["@rvry/mcp"],
|
|
30
|
+
"args": ["--yes", "--package", "@rvry/mcp", "rvry-mcp"],
|
|
31
31
|
"env": {
|
|
32
32
|
"RVRY_TOKEN": "your_rvry_token"
|
|
33
33
|
}
|
|
@@ -51,7 +51,7 @@ RVRY supports both **stdio** and **HTTP** transports:
|
|
|
51
51
|
|
|
52
52
|
| Transport | Client | Setup |
|
|
53
53
|
|-----------|--------|-------|
|
|
54
|
-
| stdio | Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, Anti-Gravity | `npx @rvry/mcp@latest setup` |
|
|
54
|
+
| stdio | Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, Anti-Gravity | `npx --yes --package @rvry/mcp@latest rvry-mcp setup` |
|
|
55
55
|
| stdio | Any client with `command` + `args` config | Manual JSON config (see above) |
|
|
56
56
|
| HTTP | ChatGPT (custom GPTs), Perplexity, any HTTP MCP client | URL: `https://engine.rvry.ai/mcp` |
|
|
57
57
|
|
|
@@ -60,6 +60,7 @@ RVRY supports both **stdio** and **HTTP** transports:
|
|
|
60
60
|
| Tool | What it does | Tier |
|
|
61
61
|
|------|-------------|------|
|
|
62
62
|
| **`RVRY_deepthink`** | Extended multi-round analysis. Catches assumptions, tests them, and doesn't let your AI wrap up until it's dealt with what it found. | All |
|
|
63
|
+
| **`RVRY_think`** | Lighter single-session analysis for questions that need structure but not the full deepthink loop. | All |
|
|
63
64
|
| **`RVRY_problem_solve`** | Structured decision-making. Forces orientation, anticipation, and evaluation before committing to a recommendation. | Pro+ |
|
|
64
65
|
| **`RVRY_challenge`** | Adversarial stress-testing. Finds weaknesses, tests assumptions, and surfaces failure modes in a proposal before you commit. | Pro+ |
|
|
65
66
|
| **`RVRY_meta`** | Sustained metacognitive observation. Examines how your AI is thinking, not just what it's thinking. | Max |
|
|
@@ -78,7 +79,7 @@ All tools accept:
|
|
|
78
79
|
|
|
79
80
|
## Slash Commands (Claude Code)
|
|
80
81
|
|
|
81
|
-
When you run `npx @rvry/mcp@latest setup` and select Claude Code, the wizard installs 4 slash commands:
|
|
82
|
+
When you run `npx --yes --package @rvry/mcp@latest rvry-mcp setup` and select Claude Code, the wizard installs 4 slash commands:
|
|
82
83
|
|
|
83
84
|
| Command | Tool | What it does |
|
|
84
85
|
|---------|------|-------------|
|
|
@@ -89,6 +90,8 @@ When you run `npx @rvry/mcp@latest setup` and select Claude Code, the wizard ins
|
|
|
89
90
|
|
|
90
91
|
Usage: type `/deepthink [your question]` in Claude Code. Each command routes directly to the corresponding RVRY MCP tool.
|
|
91
92
|
|
|
93
|
+
`RVRY_think` is available as a tool, but the setup wizard does not install a `/think` slash command. Use it from clients that show the full MCP tool list or invoke it manually.
|
|
94
|
+
|
|
92
95
|
Commands are installed to `~/.claude/commands/`. Existing files are never overwritten — re-running setup is safe.
|
|
93
96
|
|
|
94
97
|
## How it Works
|
package/dist/client.d.ts
CHANGED
|
@@ -39,4 +39,4 @@ export interface ThinkResponse {
|
|
|
39
39
|
* Call the RVRY engine /api/v1/think endpoint with a specific tool.
|
|
40
40
|
* Start a new session by omitting sessionId, or continue by providing one.
|
|
41
41
|
*/
|
|
42
|
-
export declare function callTool(tool: RvryTool, input: string, token: string, sessionId?: string, skipScoping?: boolean, userConstraints?: string[]): Promise<ThinkResponse>;
|
|
42
|
+
export declare function callTool(tool: RvryTool, input: string, token: string, sessionId?: string, skipScoping?: boolean, userConstraints?: string[], requiresCurrentData?: boolean): Promise<ThinkResponse>;
|
package/dist/client.js
CHANGED
|
@@ -7,7 +7,7 @@ const DEFAULT_ENGINE_URL = 'https://engine.rvry.ai';
|
|
|
7
7
|
* Call the RVRY engine /api/v1/think endpoint with a specific tool.
|
|
8
8
|
* Start a new session by omitting sessionId, or continue by providing one.
|
|
9
9
|
*/
|
|
10
|
-
export async function callTool(tool, input, token, sessionId, skipScoping, userConstraints) {
|
|
10
|
+
export async function callTool(tool, input, token, sessionId, skipScoping, userConstraints, requiresCurrentData) {
|
|
11
11
|
const baseUrl = process.env.RVRY_ENGINE_URL ?? DEFAULT_ENGINE_URL;
|
|
12
12
|
const body = { input, tool };
|
|
13
13
|
if (sessionId) {
|
|
@@ -19,6 +19,9 @@ export async function callTool(tool, input, token, sessionId, skipScoping, userC
|
|
|
19
19
|
if (userConstraints && userConstraints.length > 0) {
|
|
20
20
|
body.userConstraints = userConstraints;
|
|
21
21
|
}
|
|
22
|
+
if (requiresCurrentData) {
|
|
23
|
+
body.requiresCurrentData = true;
|
|
24
|
+
}
|
|
22
25
|
const res = await fetch(`${baseUrl}/api/v1/think`, {
|
|
23
26
|
method: 'POST',
|
|
24
27
|
headers: {
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
|
|
9
9
|
*
|
|
10
|
-
* Also supports `npx @rvry/mcp setup` to install Claude Code commands.
|
|
10
|
+
* Also supports `npx --yes --package @rvry/mcp rvry-mcp setup` to install Claude Code commands.
|
|
11
11
|
*/
|
|
12
12
|
import { type Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
13
13
|
import { type RvryTool, type ThinkResponse } from './client.js';
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
|
|
9
9
|
*
|
|
10
|
-
* Also supports `npx @rvry/mcp setup` to install Claude Code commands.
|
|
10
|
+
* Also supports `npx --yes --package @rvry/mcp rvry-mcp setup` to install Claude Code commands.
|
|
11
11
|
*/
|
|
12
12
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
13
13
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
@@ -67,6 +67,10 @@ const TOOL_DEFS = [
|
|
|
67
67
|
items: { type: 'string' },
|
|
68
68
|
description: 'User-stated directives or requirements to track throughout the session.',
|
|
69
69
|
},
|
|
70
|
+
requiresCurrentData: {
|
|
71
|
+
type: 'boolean',
|
|
72
|
+
description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
|
|
73
|
+
},
|
|
70
74
|
},
|
|
71
75
|
required: ['input'],
|
|
72
76
|
},
|
|
@@ -101,6 +105,10 @@ const TOOL_DEFS = [
|
|
|
101
105
|
items: { type: 'string' },
|
|
102
106
|
description: 'User-stated directives or requirements to track throughout the session.',
|
|
103
107
|
},
|
|
108
|
+
requiresCurrentData: {
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
|
|
111
|
+
},
|
|
104
112
|
},
|
|
105
113
|
required: ['input'],
|
|
106
114
|
},
|
|
@@ -134,6 +142,10 @@ const TOOL_DEFS = [
|
|
|
134
142
|
items: { type: 'string' },
|
|
135
143
|
description: 'User-stated directives or requirements to track throughout the session.',
|
|
136
144
|
},
|
|
145
|
+
requiresCurrentData: {
|
|
146
|
+
type: 'boolean',
|
|
147
|
+
description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
|
|
148
|
+
},
|
|
137
149
|
},
|
|
138
150
|
required: ['input'],
|
|
139
151
|
},
|
|
@@ -167,6 +179,10 @@ const TOOL_DEFS = [
|
|
|
167
179
|
items: { type: 'string' },
|
|
168
180
|
description: 'User-stated directives or requirements to track throughout the session.',
|
|
169
181
|
},
|
|
182
|
+
requiresCurrentData: {
|
|
183
|
+
type: 'boolean',
|
|
184
|
+
description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
|
|
185
|
+
},
|
|
170
186
|
},
|
|
171
187
|
required: ['input'],
|
|
172
188
|
},
|
|
@@ -191,6 +207,10 @@ const TOOL_DEFS = [
|
|
|
191
207
|
type: 'string',
|
|
192
208
|
description: 'Session ID for continuing an existing session. Omit to start a new session.',
|
|
193
209
|
},
|
|
210
|
+
requiresCurrentData: {
|
|
211
|
+
type: 'boolean',
|
|
212
|
+
description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
|
|
213
|
+
},
|
|
194
214
|
},
|
|
195
215
|
required: ['input'],
|
|
196
216
|
},
|
|
@@ -262,6 +282,7 @@ async function main() {
|
|
|
262
282
|
}
|
|
263
283
|
const sessionId = typeof typedArgs?.sessionId === 'string' ? typedArgs.sessionId : undefined;
|
|
264
284
|
const skipScoping = typedArgs?.skipScoping === true;
|
|
285
|
+
const requiresCurrentData = typedArgs?.requiresCurrentData === true;
|
|
265
286
|
const userConstraints = Array.isArray(typedArgs?.userConstraints)
|
|
266
287
|
? typedArgs.userConstraints.filter(s => typeof s === 'string')
|
|
267
288
|
: undefined;
|
|
@@ -275,7 +296,7 @@ async function main() {
|
|
|
275
296
|
question = questionCache.get(sessionId) ?? input;
|
|
276
297
|
}
|
|
277
298
|
try {
|
|
278
|
-
const result = await callTool(rvryTool, input, token, sessionId, skipScoping || undefined, userConstraints);
|
|
299
|
+
const result = await callTool(rvryTool, input, token, sessionId, skipScoping || undefined, userConstraints, requiresCurrentData || undefined);
|
|
279
300
|
// Cache question on first call (now we have the sessionId)
|
|
280
301
|
if (!sessionId) {
|
|
281
302
|
questionCache.set(result.sessionId, input);
|
package/dist/setup.d.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Interactive setup: device auth flow (browser-based) or manual token paste.
|
|
5
5
|
* Auto-detects Claude Code CLI and Claude Desktop, configures both.
|
|
6
6
|
*
|
|
7
|
-
* Usage: npx @rvry/mcp@latest setup
|
|
8
|
-
* npx @rvry/mcp@latest setup --token <value>
|
|
9
|
-
* npx @rvry/mcp@latest setup --client code (Claude Code only)
|
|
10
|
-
* npx @rvry/mcp@latest setup --client desktop (Claude Desktop only)
|
|
7
|
+
* Usage: npx --yes --package @rvry/mcp@latest rvry-mcp setup
|
|
8
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --token <value>
|
|
9
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --client code (Claude Code only)
|
|
10
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --client desktop (Claude Desktop only)
|
|
11
11
|
*/
|
|
12
12
|
export declare function runSetup(): Promise<void>;
|
package/dist/setup.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Interactive setup: device auth flow (browser-based) or manual token paste.
|
|
5
5
|
* Auto-detects Claude Code CLI and Claude Desktop, configures both.
|
|
6
6
|
*
|
|
7
|
-
* Usage: npx @rvry/mcp@latest setup
|
|
8
|
-
* npx @rvry/mcp@latest setup --token <value>
|
|
9
|
-
* npx @rvry/mcp@latest setup --client code (Claude Code only)
|
|
10
|
-
* npx @rvry/mcp@latest setup --client desktop (Claude Desktop only)
|
|
7
|
+
* Usage: npx --yes --package @rvry/mcp@latest rvry-mcp setup
|
|
8
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --token <value>
|
|
9
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --client code (Claude Code only)
|
|
10
|
+
* npx --yes --package @rvry/mcp@latest rvry-mcp setup --client desktop (Claude Desktop only)
|
|
11
11
|
*/
|
|
12
12
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
13
13
|
import { join, dirname } from 'path';
|
|
@@ -25,10 +25,12 @@ const TOKEN_REGEX = /^rvry_[0-9a-f]{32,}$/;
|
|
|
25
25
|
const POLL_INTERVAL_MS = 3000;
|
|
26
26
|
/** Max polling duration: 10 minutes */
|
|
27
27
|
const POLL_TIMEOUT_MS = 10 * 60 * 1000;
|
|
28
|
+
/** Explicit launcher avoids fragile bin resolution from `npx @rvry/mcp`. */
|
|
29
|
+
const RVRY_NPX_ARGS = ['--yes', '--package', '@rvry/mcp', 'rvry-mcp'];
|
|
28
30
|
/** RVRY MCP server config block (reused across Desktop + manual output) */
|
|
29
31
|
const RVRY_SERVER_ENTRY = (token) => ({
|
|
30
32
|
command: 'npx',
|
|
31
|
-
args:
|
|
33
|
+
args: RVRY_NPX_ARGS,
|
|
32
34
|
env: { RVRY_TOKEN: token },
|
|
33
35
|
});
|
|
34
36
|
// ── Utility functions ──────────────────────────────────────────────
|
|
@@ -206,7 +208,7 @@ function registerClaudeCode(token) {
|
|
|
206
208
|
execSync('claude mcp remove rvry', { stdio: 'pipe' });
|
|
207
209
|
}
|
|
208
210
|
catch { /* not registered */ }
|
|
209
|
-
execSync(`claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx @rvry/mcp`, { stdio: 'inherit' });
|
|
211
|
+
execSync(`claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx --yes --package @rvry/mcp rvry-mcp`, { stdio: 'inherit' });
|
|
210
212
|
return 'ok';
|
|
211
213
|
}
|
|
212
214
|
catch {
|
|
@@ -262,7 +264,7 @@ function configureTomlMcp(configPath, token) {
|
|
|
262
264
|
const block = [
|
|
263
265
|
'[mcp_servers.rvry]',
|
|
264
266
|
'command = "npx"',
|
|
265
|
-
'args = ["@rvry/mcp"]',
|
|
267
|
+
'args = ["--yes", "--package", "@rvry/mcp", "rvry-mcp"]',
|
|
266
268
|
'',
|
|
267
269
|
'[mcp_servers.rvry.env]',
|
|
268
270
|
`RVRY_TOKEN = "${token}"`,
|
|
@@ -922,7 +924,7 @@ export async function runSetup() {
|
|
|
922
924
|
console.log(' Manual configuration:');
|
|
923
925
|
console.log('');
|
|
924
926
|
console.log(' Option A — Claude Code (if you install it later):');
|
|
925
|
-
console.log(` claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx @rvry/mcp`);
|
|
927
|
+
console.log(` claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx --yes --package @rvry/mcp rvry-mcp`);
|
|
926
928
|
console.log('');
|
|
927
929
|
console.log(' Option B — JSON config (Claude Desktop, Anti-Gravity, etc.):');
|
|
928
930
|
const manualConfig = { mcpServers: { RVRY: RVRY_SERVER_ENTRY(token) } };
|
|
@@ -935,7 +937,7 @@ export async function runSetup() {
|
|
|
935
937
|
console.log('');
|
|
936
938
|
console.log(' [mcp_servers.rvry]');
|
|
937
939
|
console.log(' command = "npx"');
|
|
938
|
-
console.log(' args = ["@rvry/mcp"]');
|
|
940
|
+
console.log(' args = ["--yes", "--package", "@rvry/mcp", "rvry-mcp"]');
|
|
939
941
|
console.log('');
|
|
940
942
|
console.log(' [mcp_servers.rvry.env]');
|
|
941
943
|
console.log(` RVRY_TOKEN = "${token}"`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rvry/mcp",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.2",
|
|
4
4
|
"description": "RVRY reasoning depth enforcement (RDE) engine client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"node": ">=18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"
|
|
18
|
+
"build": "tsc && chmod 755 dist/index.js",
|
|
19
|
+
"prepack": "npm run build",
|
|
20
20
|
"typecheck": "tsc --noEmit"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|