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 +3 -3
- package/dist/cli.js +62 -0
- package/dist/demo-agent.cjs +17 -0
- package/package.json +1 -1
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();
|
package/dist/demo-agent.cjs
CHANGED
|
@@ -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
|
|