@kya-os/create-mcpi-app 1.7.42-canary.40 ā 1.7.42-canary.42
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/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @kya-os/create-mcpi-app@1.7.42-canary.
|
|
2
|
+
> @kya-os/create-mcpi-app@1.7.42-canary.40 build /Users/dylanhobbs/Documents/@kya-os/xmcp-i/packages/create-mcpi-app
|
|
3
3
|
> tsc && chmod +x dist/index.js
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAOA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,yBAAyB,GAAG,MAAM,GAC1C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAOA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,yBAAyB,GAAG,MAAM,GAC1C,OAAO,CAAC,IAAI,CAAC,CAqlBf"}
|
|
@@ -2,7 +2,6 @@ import fs from "fs-extra";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { spawn } from "child_process";
|
|
5
|
-
import crypto from "crypto";
|
|
6
5
|
import { generateIdentity } from "./generate-identity.js";
|
|
7
6
|
/**
|
|
8
7
|
* Fetches the Cloudflare MCP-I template
|
|
@@ -52,7 +51,7 @@ export async function fetchCloudflareMcpiTemplate(targetDir, options) {
|
|
|
52
51
|
"kv:create-tool-protection": `wrangler kv:namespace create ${projectNameUpper}_TOOL_PROTECTION_KV`
|
|
53
52
|
},
|
|
54
53
|
dependencies: {
|
|
55
|
-
"@kya-os/mcp-i-cloudflare": "^1.5.8-canary.
|
|
54
|
+
"@kya-os/mcp-i-cloudflare": "^1.5.8-canary.49",
|
|
56
55
|
"@modelcontextprotocol/sdk": "^0.6.0",
|
|
57
56
|
"agents": "^0.2.21",
|
|
58
57
|
"hono": "^4.6.3"
|
|
@@ -80,8 +79,9 @@ MCP_IDENTITY_PRIVATE_KEY="${identity.privateKey}"
|
|
|
80
79
|
${apikey ? `AGENTSHIELD_API_KEY="${apikey}"` : '# AGENTSHIELD_API_KEY="sk_YOUR_API_KEY_HERE"'}
|
|
81
80
|
|
|
82
81
|
# Admin API Key for cache management
|
|
83
|
-
#
|
|
84
|
-
|
|
82
|
+
# Uses the same key as AGENTSHIELD_API_KEY for convenience
|
|
83
|
+
# You can change this to a different key if you need separate admin access
|
|
84
|
+
${apikey ? `ADMIN_API_KEY="${apikey}"` : '# ADMIN_API_KEY="sk_YOUR_ADMIN_KEY_HERE"'}
|
|
85
85
|
`;
|
|
86
86
|
await fs.writeFile(path.join(targetDir, ".dev.vars"), devVarsContent);
|
|
87
87
|
// 5. Create wrangler.toml with all KV namespaces (placeholders initially)
|
|
@@ -219,10 +219,17 @@ MCPI_ENV = "development"
|
|
|
219
219
|
# Secrets (NOT declared here - see instructions below)
|
|
220
220
|
# For local development: Add secrets to .dev.vars file
|
|
221
221
|
# For production: Use wrangler secret put COMMAND_NAME
|
|
222
|
+
#
|
|
223
|
+
# Required secrets:
|
|
222
224
|
# $ wrangler secret put MCP_IDENTITY_PRIVATE_KEY
|
|
223
|
-
#
|
|
224
|
-
#
|
|
225
|
-
|
|
225
|
+
#
|
|
226
|
+
# Optional secrets (recommended for production):
|
|
227
|
+
# $ wrangler secret put AGENTSHIELD_API_KEY # For AgentShield integration
|
|
228
|
+
#
|
|
229
|
+
# Optional secrets (advanced):
|
|
230
|
+
# $ wrangler secret put ADMIN_API_KEY # For cache management endpoints
|
|
231
|
+
# # Falls back to AGENTSHIELD_API_KEY if not set
|
|
232
|
+
#
|
|
226
233
|
# Note: .dev.vars is git-ignored and contains actual secret values for local dev
|
|
227
234
|
|
|
228
235
|
# Optional: MCP Server URL for tool discovery and consent page generation
|
|
@@ -345,6 +352,18 @@ const projectNameUpper = '${projectNameUpper}';
|
|
|
345
352
|
console.log('š Setting up MCP-I Cloudflare Worker...');
|
|
346
353
|
console.log('');
|
|
347
354
|
|
|
355
|
+
// Check if user is logged in to Cloudflare
|
|
356
|
+
console.log('š Checking Cloudflare authentication...');
|
|
357
|
+
try {
|
|
358
|
+
execSync('wrangler whoami', { encoding: 'utf8', stdio: 'pipe' });
|
|
359
|
+
console.log('ā
Logged in to Cloudflare\\n');
|
|
360
|
+
} catch (error) {
|
|
361
|
+
console.error('ā Not logged in to Cloudflare!\\n');
|
|
362
|
+
console.error('Please run: wrangler login\\n');
|
|
363
|
+
console.error('Then run this setup script again: npm run setup\\n');
|
|
364
|
+
process.exit(1);
|
|
365
|
+
}
|
|
366
|
+
|
|
348
367
|
// Function to execute command and capture output
|
|
349
368
|
function exec(command, silent = false) {
|
|
350
369
|
try {
|
|
@@ -354,8 +373,11 @@ function exec(command, silent = false) {
|
|
|
354
373
|
if (!silent) {
|
|
355
374
|
console.error(\`ā Command failed: \${command}\`);
|
|
356
375
|
console.error(error.message);
|
|
376
|
+
if (error.stderr) {
|
|
377
|
+
console.error('Error output:', error.stderr.toString());
|
|
378
|
+
}
|
|
357
379
|
}
|
|
358
|
-
|
|
380
|
+
throw error; // Re-throw to handle in caller
|
|
359
381
|
}
|
|
360
382
|
}
|
|
361
383
|
|
|
@@ -393,44 +415,97 @@ const namespaces = [
|
|
|
393
415
|
console.log('š¦ Creating KV namespaces...');
|
|
394
416
|
console.log('');
|
|
395
417
|
|
|
418
|
+
let successCount = 0;
|
|
419
|
+
let failureCount = 0;
|
|
420
|
+
|
|
396
421
|
for (const ns of namespaces) {
|
|
397
|
-
console.log(
|
|
398
|
-
|
|
399
|
-
// Try to create the namespace
|
|
400
|
-
const output = exec(\`wrangler kv:namespace create \${ns.binding}\`, true);
|
|
422
|
+
console.log(\`\\nš¦ Creating \${ns.name}...\`);
|
|
423
|
+
console.log(\` Description: \${ns.description}\`);
|
|
401
424
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
425
|
+
try {
|
|
426
|
+
// Try to create the namespace
|
|
427
|
+
const output = exec(\`wrangler kv:namespace create \${ns.binding}\`, true);
|
|
428
|
+
|
|
429
|
+
if (output) {
|
|
430
|
+
console.log(\` Raw output: \${output.substring(0, 200)}\`);
|
|
431
|
+
|
|
432
|
+
const namespaceId = extractNamespaceId(output);
|
|
433
|
+
if (namespaceId) {
|
|
434
|
+
updateWranglerToml(ns.binding, namespaceId);
|
|
435
|
+
console.log(\` ā
Created successfully!\`);
|
|
436
|
+
successCount++;
|
|
437
|
+
} else {
|
|
438
|
+
console.log(\` ā ļø Could not extract namespace ID from output.\`);
|
|
439
|
+
console.log(\` Full output: \${output}\`);
|
|
440
|
+
console.log(\` You may need to update wrangler.toml manually.\`);
|
|
441
|
+
failureCount++;
|
|
442
|
+
}
|
|
406
443
|
} else {
|
|
407
|
-
console.log(
|
|
408
|
-
|
|
444
|
+
console.log(\` ā ļø No output from wrangler command.\`);
|
|
445
|
+
failureCount++;
|
|
409
446
|
}
|
|
410
|
-
}
|
|
411
|
-
// Namespace might already exist
|
|
412
|
-
console.log(\`
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
447
|
+
} catch (error) {
|
|
448
|
+
// Namespace might already exist
|
|
449
|
+
console.log(\` ā¹ļø Namespace may already exist. Checking...\`);
|
|
450
|
+
try {
|
|
451
|
+
const listOutput = exec(\`wrangler kv:namespace list\`, true);
|
|
452
|
+
if (listOutput && listOutput.includes(ns.binding)) {
|
|
453
|
+
console.log(\` ā Namespace \${ns.binding} already exists\`);
|
|
454
|
+
|
|
455
|
+
// Try to extract ID from list output
|
|
456
|
+
const listJson = JSON.parse(listOutput);
|
|
457
|
+
const existing = listJson.find(item => item.title.includes(ns.binding));
|
|
458
|
+
if (existing && existing.id) {
|
|
459
|
+
updateWranglerToml(ns.binding, existing.id);
|
|
460
|
+
console.log(\` ā
Updated wrangler.toml with existing ID: \${existing.id}\`);
|
|
461
|
+
successCount++;
|
|
462
|
+
} else {
|
|
463
|
+
console.log(\` ā ļø Found namespace but could not extract ID. Update wrangler.toml manually.\`);
|
|
464
|
+
failureCount++;
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
console.log(\` ā Could not create or find namespace \${ns.binding}.\`);
|
|
468
|
+
console.log(\` Error: \${error.message}\`);
|
|
469
|
+
console.log(\` You may need to create it manually with: wrangler kv:namespace create \${ns.binding}\`);
|
|
470
|
+
failureCount++;
|
|
471
|
+
}
|
|
472
|
+
} catch (listError) {
|
|
473
|
+
console.log(\` ā Failed to list namespaces: \${listError.message}\`);
|
|
474
|
+
failureCount++;
|
|
418
475
|
}
|
|
419
476
|
}
|
|
420
477
|
}
|
|
421
478
|
|
|
422
479
|
console.log('');
|
|
423
|
-
console.log('
|
|
424
|
-
console.log('');
|
|
425
|
-
console.log(
|
|
480
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
481
|
+
console.log('š Setup Summary:');
|
|
482
|
+
console.log(\` ā
Success: \${successCount}/\${namespaces.length} namespaces\`);
|
|
483
|
+
console.log(\` ā Failed: \${failureCount}/\${namespaces.length} namespaces\`);
|
|
484
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\\n');
|
|
485
|
+
|
|
486
|
+
if (failureCount > 0) {
|
|
487
|
+
console.log('ā ļø Some namespaces failed to create.\\n');
|
|
488
|
+
console.log('Manual steps required:');
|
|
489
|
+
console.log('1. Check wrangler.toml for any "TODO_REPLACE_WITH_ID" entries');
|
|
490
|
+
console.log('2. Create missing namespaces manually with:');
|
|
491
|
+
console.log(' wrangler kv:namespace create NAMESPACE_BINDING\\n');
|
|
492
|
+
console.log('3. Copy the ID from the output to wrangler.toml\\n');
|
|
493
|
+
} else {
|
|
494
|
+
console.log('⨠Setup complete!\\n');
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
console.log('š Next steps:');
|
|
426
498
|
console.log('1. Review wrangler.toml to ensure all namespace IDs are populated');
|
|
427
|
-
console.log('2.
|
|
428
|
-
console.log('3. Run "npm run
|
|
429
|
-
console.log('');
|
|
430
|
-
|
|
431
|
-
console.log('
|
|
432
|
-
console.log('
|
|
433
|
-
|
|
499
|
+
console.log('2. Review .dev.vars for secrets configuration');
|
|
500
|
+
console.log('3. Run "npm run dev" to start the development server');
|
|
501
|
+
console.log('4. Run "npm run deploy" to deploy to Cloudflare Workers\\n');
|
|
502
|
+
|
|
503
|
+
console.log('š For production deployment:');
|
|
504
|
+
console.log(' wrangler secret put MCP_IDENTITY_PRIVATE_KEY');
|
|
505
|
+
if (failureCount === 0) {
|
|
506
|
+
console.log(' wrangler secret put AGENTSHIELD_API_KEY');
|
|
507
|
+
console.log(' # ADMIN_API_KEY is optional - falls back to AGENTSHIELD_API_KEY if not set');
|
|
508
|
+
}
|
|
434
509
|
`;
|
|
435
510
|
await fs.writeFile(path.join(targetDir, "scripts/setup.js"), setupJs);
|
|
436
511
|
await fs.chmod(path.join(targetDir, "scripts/setup.js"), '755');
|
|
@@ -470,12 +545,43 @@ dist
|
|
|
470
545
|
console.log(chalk.blue("\nš§ Running setup script to create KV namespaces..."));
|
|
471
546
|
try {
|
|
472
547
|
await runCommand("node", ["scripts/setup.js"], targetDir);
|
|
548
|
+
console.log(chalk.green("\nā
KV namespaces created successfully!"));
|
|
473
549
|
}
|
|
474
550
|
catch (error) {
|
|
475
|
-
console.log(chalk.yellow("\nā ļø
|
|
476
|
-
console.log(chalk.yellow("
|
|
477
|
-
console.log(chalk.yellow("
|
|
551
|
+
console.log(chalk.yellow("\nā ļø KV namespace setup encountered issues."));
|
|
552
|
+
console.log(chalk.yellow("\nMost likely cause: You're not logged in to Cloudflare."));
|
|
553
|
+
console.log(chalk.yellow("\nTo fix this:"));
|
|
554
|
+
console.log(chalk.cyan(" 1. cd " + projectName));
|
|
555
|
+
console.log(chalk.cyan(" 2. wrangler login"));
|
|
556
|
+
console.log(chalk.cyan(" 3. npm run setup"));
|
|
557
|
+
console.log(chalk.gray("\nThe setup script will create all required KV namespaces and update wrangler.toml."));
|
|
478
558
|
}
|
|
559
|
+
// 15. Final instructions
|
|
560
|
+
console.log(chalk.blue("\n" + "=".repeat(60)));
|
|
561
|
+
console.log(chalk.bold.green("š Cloudflare MCP-I project created successfully!"));
|
|
562
|
+
console.log(chalk.blue("=".repeat(60)));
|
|
563
|
+
console.log(chalk.bold("\nš Important Configuration Notes:"));
|
|
564
|
+
console.log(chalk.gray("\n1. ADMIN_API_KEY (in .dev.vars):"));
|
|
565
|
+
console.log(chalk.gray(" - Set to same value as AGENTSHIELD_API_KEY for convenience"));
|
|
566
|
+
console.log(chalk.gray(" - You can change it if you need separate admin endpoint security"));
|
|
567
|
+
console.log(chalk.gray(" - Required for admin endpoints like /admin/clear-cache\n"));
|
|
568
|
+
console.log(chalk.gray("2. KV Namespaces (in wrangler.toml):"));
|
|
569
|
+
console.log(chalk.gray(" - Required for MCP-I security features"));
|
|
570
|
+
console.log(chalk.gray(" - Auto-created by 'npm run setup' script"));
|
|
571
|
+
console.log(chalk.gray(" - Check wrangler.toml for 'TODO_REPLACE_WITH_ID' if setup failed\n"));
|
|
572
|
+
console.log(chalk.bold("š Next Steps:"));
|
|
573
|
+
console.log(chalk.cyan(" cd " + projectName));
|
|
574
|
+
// Check if they need to run setup
|
|
575
|
+
const wranglerPath = path.join(targetDir, "wrangler.toml");
|
|
576
|
+
if (fs.existsSync(wranglerPath)) {
|
|
577
|
+
const wranglerContent = await fs.readFile(wranglerPath, 'utf-8');
|
|
578
|
+
if (wranglerContent.includes('TODO_REPLACE_WITH_ID')) {
|
|
579
|
+
console.log(chalk.yellow(" wrangler login # Login to Cloudflare first!"));
|
|
580
|
+
console.log(chalk.yellow(" npm run setup # Create KV namespaces"));
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
console.log(chalk.cyan(" npm run dev # Start local development"));
|
|
584
|
+
console.log(chalk.cyan(" npm run deploy # Deploy to Cloudflare\n"));
|
|
479
585
|
}
|
|
480
586
|
function toPascalCase(str) {
|
|
481
587
|
return str
|
|
@@ -485,10 +591,6 @@ function toPascalCase(str) {
|
|
|
485
591
|
.replace(/\s+/g, "")
|
|
486
592
|
.replace(/-/g, "");
|
|
487
593
|
}
|
|
488
|
-
function generateAdminApiKey() {
|
|
489
|
-
// Generate a secure random API key
|
|
490
|
-
return Buffer.from(crypto.randomBytes(32)).toString('base64');
|
|
491
|
-
}
|
|
492
594
|
function runCommand(command, args, cwd) {
|
|
493
595
|
return new Promise((resolve, reject) => {
|
|
494
596
|
const child = spawn(command, args, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"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"}
|