mcp-shadow 0.1.6 → 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.
package/README.md CHANGED
@@ -54,7 +54,7 @@ Shadow is a drop-in replacement for real MCP servers. One config change. Your ag
54
54
  Shadow observes every action, scores it for risk, and produces a **trust report** — a 0-100 score that tells you whether your agent is safe to deploy.
55
55
 
56
56
  <p align="center">
57
- <img src="https://useshadow.dev/demo.gif" alt="Shadow Console — watch an AI agent fall for a phishing attack in real-time" width="100%" />
57
+ <img src="https://useshadow.dev/demo.gif?v=2" alt="Shadow Console — watch an AI agent fall for a phishing attack in real-time" width="100%" />
58
58
  </p>
59
59
 
60
60
  ## Try It Now
@@ -124,7 +124,7 @@ Risk Log:
124
124
  Use trust scores to gate CI/CD pipelines: agents that score below threshold don't ship.
125
125
 
126
126
  <p align="center">
127
- <img src="https://useshadow.dev/screenshots/console-report.png" alt="Shadow Report — Trust score 0/100, failed assertions" width="700" />
127
+ <img src="https://useshadow.dev/screenshots/console-report.png?v=2" alt="Shadow Report — Trust score 0/100, failed assertions" width="700" />
128
128
  <br><em>Shadow Report: trust score, failed assertions, risk log, impact summary</em>
129
129
  </p>
130
130
 
@@ -222,7 +222,7 @@ During a live simulation, inject chaos from the Console:
222
222
  Compose emails, post Slack messages, and create Stripe events as simulated personas. Watch how your agent reacts in real-time.
223
223
 
224
224
  <p align="center">
225
- <img src="https://useshadow.dev/screenshots/console-slack.png" alt="Shadow Console — Slack simulation with ShadowPlay" width="700" />
225
+ <img src="https://useshadow.dev/screenshots/console-slack.png?v=2" alt="Shadow Console — Slack simulation with ShadowPlay" width="700" />
226
226
  <br><em>ShadowPlay: inject chaos and watch your agent react in real-time</em>
227
227
  </p>
228
228
 
package/dist/cli.js CHANGED
@@ -11385,4 +11385,66 @@ function resolveServerPath(service) {
11385
11385
  return monorepo;
11386
11386
  return null;
11387
11387
  }
11388
+ if (process.argv.length <= 2) {
11389
+ const readline = await import("readline");
11390
+ const purple = (s) => `\x1B[38;5;141m${s}\x1B[0m`;
11391
+ const bold = (s) => `\x1B[1m${s}\x1B[0m`;
11392
+ const dim = (s) => `\x1B[2m${s}\x1B[0m`;
11393
+ const cyan = (s) => `\x1B[36m${s}\x1B[0m`;
11394
+ console.log("");
11395
+ console.log(` ${purple("\u25C8 Shadow")} \u2014 The staging environment for AI agents`);
11396
+ console.log("");
11397
+ console.log(` ${bold("[1]")} Watch the demo ${dim("First time? Start here (60 sec)")}`);
11398
+ console.log(` ${bold("[2]")} Set up Claude Desktop ${dim("Auto-install Shadow (one command)")}`);
11399
+ console.log(` ${bold("[3]")} Connect any agent ${dim("OpenClaw, Cursor, Windsurf, any MCP client")}`);
11400
+ console.log("");
11401
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
11402
+ const answer = await new Promise((resolve2) => {
11403
+ rl.question(" Choose [1-3]: ", resolve2);
11404
+ });
11405
+ rl.close();
11406
+ console.log("");
11407
+ const choice = answer.trim();
11408
+ if (choice === "1") {
11409
+ process.argv.push("demo");
11410
+ } else if (choice === "2") {
11411
+ process.argv.push("install");
11412
+ } else if (choice === "3") {
11413
+ console.log(` ${purple("\u25C8 Connect Any Agent")}`);
11414
+ console.log("");
11415
+ console.log(` Add this to your MCP client config \u2014 works with:`);
11416
+ console.log(` ${dim("Claude Desktop \xB7 OpenClaw \xB7 Cursor \xB7 Windsurf \xB7 any MCP client")}`);
11417
+ console.log("");
11418
+ console.log(cyan(" {"));
11419
+ console.log(cyan(' "shadow-slack": {'));
11420
+ console.log(cyan(' "command": "npx",'));
11421
+ console.log(cyan(' "args": ["-y", "mcp-shadow", "run", "--services=slack"]'));
11422
+ console.log(cyan(" },"));
11423
+ console.log(cyan(' "shadow-gmail": {'));
11424
+ console.log(cyan(' "command": "npx",'));
11425
+ console.log(cyan(' "args": ["-y", "mcp-shadow", "run", "--services=gmail"]'));
11426
+ console.log(cyan(" },"));
11427
+ console.log(cyan(' "shadow-stripe": {'));
11428
+ console.log(cyan(' "command": "npx",'));
11429
+ console.log(cyan(' "args": ["-y", "mcp-shadow", "run", "--services=stripe"]'));
11430
+ console.log(cyan(" }"));
11431
+ console.log(cyan(" }"));
11432
+ console.log("");
11433
+ console.log(` ${bold("Then:")}`);
11434
+ console.log(` 1. Restart your MCP client`);
11435
+ console.log(` 2. Ask your agent to do something \u2014 ${dim('"check my Slack messages"')}`);
11436
+ console.log(` 3. Shadow Console opens at ${bold("http://localhost:3000")}`);
11437
+ console.log("");
11438
+ console.log(` ${dim("Your agent will see 32 simulated tools across Slack, Gmail, and Stripe.")}`);
11439
+ console.log(` ${dim("Every action is scored for risk. Nothing real happens.")}`);
11440
+ console.log("");
11441
+ console.log(` ${dim("Docs: https://useshadow.dev")}`);
11442
+ console.log(` ${dim("GitHub: https://github.com/shadow-mcp/shadow-mcp")}`);
11443
+ console.log("");
11444
+ process.exit(0);
11445
+ } else {
11446
+ console.log(` ${dim("Starting demo...")}`);
11447
+ process.argv.push("demo");
11448
+ }
11449
+ }
11388
11450
  program2.parse();
@@ -344,6 +344,23 @@ async function runDemo() {
344
344
  console.error(' ' + '═'.repeat(56));
345
345
  console.error('');
346
346
  console.error(' Check the \x1b[1mShadow Report\x1b[0m tab in the Console for full details.');
347
+ console.error('');
348
+ console.error('\x1b[38;5;141m ◈ What\'s Next?\x1b[0m');
349
+ console.error('');
350
+ console.error(' \x1b[1mTest your own agent:\x1b[0m');
351
+ console.error(' Add this to your claude_desktop_config.json (or any MCP client):');
352
+ console.error('');
353
+ console.error(' \x1b[36m"shadow-slack": {\x1b[0m');
354
+ console.error(' \x1b[36m "command": "npx",\x1b[0m');
355
+ console.error(' \x1b[36m "args": ["-y", "mcp-shadow", "run", "--services=slack"]\x1b[0m');
356
+ console.error(' \x1b[36m}\x1b[0m');
357
+ console.error('');
358
+ console.error(' Or auto-install into Claude Desktop:');
359
+ console.error(' \x1b[1m$ npx mcp-shadow install\x1b[0m');
360
+ console.error('');
361
+ console.error(' \x1b[2mDocs & examples: https://useshadow.dev\x1b[0m');
362
+ console.error(' \x1b[2mGitHub: https://github.com/shadow-mcp/shadow-mcp\x1b[0m');
363
+ console.error('');
347
364
  console.error(' Press \x1b[1mCtrl+C\x1b[0m to exit.');
348
365
  console.error('');
349
366
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-shadow",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "description": "The staging environment for AI agents. Rehearse every action before it hits production.",
6
6
  "bin": {