@rvry/mcp 0.9.0 → 0.10.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 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 setup
10
+ npx @rvry/mcp@latest setup
11
11
  ```
12
12
 
13
13
  The wizard will:
@@ -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 setup` |
54
+ | stdio | Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, Anti-Gravity | `npx @rvry/mcp@latest 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
 
@@ -64,6 +64,21 @@ RVRY supports both **stdio** and **HTTP** transports:
64
64
  | **`RVRY_challenge`** | Adversarial stress-testing. Finds weaknesses, tests assumptions, and surfaces failure modes in a proposal before you commit. | Pro+ |
65
65
  | **`RVRY_meta`** | Sustained metacognitive observation. Examines how your AI is thinking, not just what it's thinking. | Max |
66
66
 
67
+ ## Slash Commands (Claude Code)
68
+
69
+ When you run `npx @rvry/mcp@latest setup` and select Claude Code, the wizard installs 4 slash commands:
70
+
71
+ | Command | Tool | What it does |
72
+ |---------|------|-------------|
73
+ | `/deepthink` | RVRY_deepthink | Deep multi-round analysis |
74
+ | `/problem-solve` | RVRY_problem_solve | Structured decision-making |
75
+ | `/challenge` | RVRY_challenge | Adversarial stress-testing |
76
+ | `/meta` | RVRY_meta | Metacognitive observation |
77
+
78
+ Usage: type `/deepthink [your question]` in Claude Code. Each command routes directly to the corresponding RVRY MCP tool.
79
+
80
+ Commands are installed to `~/.claude/commands/`. Existing files are never overwritten — re-running setup is safe.
81
+
67
82
  ## How it Works
68
83
 
69
84
  Same model. Same question. Different answer.
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 setup
8
- * npx @rvry/mcp setup --token <value>
9
- * npx @rvry/mcp setup --client code (Claude Code only)
10
- * npx @rvry/mcp setup --client desktop (Claude Desktop only)
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)
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 setup
8
- * npx @rvry/mcp setup --token <value>
9
- * npx @rvry/mcp setup --client code (Claude Code only)
10
- * npx @rvry/mcp setup --client desktop (Claude Desktop only)
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)
11
11
  */
12
12
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
13
13
  import { join, dirname } from 'path';
@@ -707,6 +707,57 @@ function ensureGitignore() {
707
707
  // Non-fatal -- read-only filesystem, permissions, etc.
708
708
  }
709
709
  }
710
+ // ── Slash commands for Claude Code ──────────────────────────────────
711
+ const SLASH_COMMANDS = [
712
+ {
713
+ file: "deepthink.md",
714
+ content: "Use the RVRY_deepthink MCP tool to deeply analyze this question: $ARGUMENTS",
715
+ label: "/deepthink — deep analysis",
716
+ },
717
+ {
718
+ file: "problem-solve.md",
719
+ content: "Use the RVRY_problem_solve MCP tool to work through this problem: $ARGUMENTS",
720
+ label: "/problem-solve — structured decision-making",
721
+ },
722
+ {
723
+ file: "challenge.md",
724
+ content: "Use the RVRY_challenge MCP tool to stress-test this proposal: $ARGUMENTS",
725
+ label: "/challenge — adversarial stress-testing",
726
+ },
727
+ {
728
+ file: "meta.md",
729
+ content: "Use the RVRY_meta MCP tool to reflect on: $ARGUMENTS",
730
+ label: "/meta — metacognitive observation (Max tier)",
731
+ },
732
+ ];
733
+ /**
734
+ * Install RVRY slash commands to ~/.claude/commands/.
735
+ * Only called when Claude Code is the selected client.
736
+ * Skips files that already exist to avoid overwriting user customizations.
737
+ */
738
+ function installSlashCommands() {
739
+ const commandsDir = join(homedir(), ".claude", "commands");
740
+ const installed = [];
741
+ try {
742
+ if (!existsSync(commandsDir)) {
743
+ mkdirSync(commandsDir, { recursive: true });
744
+ }
745
+ for (const cmd of SLASH_COMMANDS) {
746
+ const filePath = join(commandsDir, cmd.file);
747
+ if (existsSync(filePath)) {
748
+ console.log(` Skipping ${cmd.file} — command already exists`);
749
+ continue;
750
+ }
751
+ writeFileSync(filePath, cmd.content + "\n", "utf-8");
752
+ installed.push(cmd.label);
753
+ }
754
+ }
755
+ catch (err) {
756
+ const msg = err instanceof Error ? err.message : String(err);
757
+ console.log(` Could not install slash commands: ${msg}`);
758
+ }
759
+ return installed;
760
+ }
710
761
  // ── Main setup flow ────────────────────────────────────────────────
711
762
  const BANNER = `
712
763
  8888888b. 888 888 8888888b. Y88b d88P
@@ -848,6 +899,20 @@ export async function runSetup() {
848
899
  if (result !== 'error')
849
900
  anyConfigured = true;
850
901
  }
902
+ // Install slash commands if Claude Code was configured
903
+ const claudeCodeConfigured = selectedIndices.some((idx) => detected[idx].client.id === "code") && configuredClients.some((c) => c.name === "Claude Code" && c.status !== "Failed");
904
+ let installedCommands = [];
905
+ if (claudeCodeConfigured) {
906
+ console.log("");
907
+ console.log(" Installing slash commands...");
908
+ installedCommands = installSlashCommands();
909
+ if (installedCommands.length > 0) {
910
+ console.log(` Installed ${installedCommands.length} command(s):`);
911
+ for (const label of installedCommands) {
912
+ console.log(` ${label}`);
913
+ }
914
+ }
915
+ }
851
916
  if (selectedIndices.length === 0) {
852
917
  console.log(' No clients selected.');
853
918
  }
@@ -920,7 +985,12 @@ export async function runSetup() {
920
985
  console.log('');
921
986
  step++;
922
987
  if (hasCodeStyle || hasDesktopStyle) {
923
- console.log(` ${step}. Try: "Use RVRY_deepthink to analyze..." or "Use RVRY_problem_solve for..."`);
988
+ if (installedCommands.length > 0) {
989
+ console.log(` ${step}. Try a slash command: /deepthink [your question]`);
990
+ }
991
+ else {
992
+ console.log(` ${step}. Try: "Use RVRY_deepthink to analyze..." or "Use RVRY_problem_solve for..."`);
993
+ }
924
994
  step++;
925
995
  }
926
996
  if (!anyConfigured) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rvry/mcp",
3
- "version": "0.9.0",
3
+ "version": "0.10.2",
4
4
  "description": "RVRY reasoning depth enforcement (RDE) engine client.",
5
5
  "type": "module",
6
6
  "bin": {