@nerviq/cli 1.0.0 → 1.2.0
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/bin/cli.js +170 -73
- package/package.json +3 -5
- package/src/activity.js +20 -0
- package/src/aider/domain-packs.js +27 -2
- package/src/aider/mcp-packs.js +231 -0
- package/src/aider/techniques.js +3210 -1397
- package/src/audit.js +290 -9
- package/src/catalog.js +18 -2
- package/src/codex/domain-packs.js +23 -1
- package/src/codex/mcp-packs.js +254 -0
- package/src/codex/techniques.js +4738 -3257
- package/src/copilot/domain-packs.js +23 -1
- package/src/copilot/mcp-packs.js +254 -0
- package/src/copilot/techniques.js +3433 -1936
- package/src/cursor/domain-packs.js +23 -1
- package/src/cursor/mcp-packs.js +257 -0
- package/src/cursor/techniques.js +3697 -1869
- package/src/deprecation.js +98 -0
- package/src/domain-pack-expansion.js +571 -0
- package/src/domain-packs.js +25 -2
- package/src/formatters/otel.js +151 -0
- package/src/gemini/domain-packs.js +23 -1
- package/src/gemini/mcp-packs.js +257 -0
- package/src/gemini/techniques.js +3734 -2238
- package/src/integrations.js +194 -0
- package/src/mcp-packs.js +233 -0
- package/src/opencode/domain-packs.js +23 -1
- package/src/opencode/mcp-packs.js +231 -0
- package/src/opencode/techniques.js +3500 -1687
- package/src/org.js +68 -0
- package/src/source-urls.js +410 -260
- package/src/stack-checks.js +565 -0
- package/src/supplemental-checks.js +767 -0
- package/src/techniques.js +2929 -1449
- package/src/telemetry.js +160 -0
- package/src/windsurf/domain-packs.js +23 -1
- package/src/windsurf/mcp-packs.js +257 -0
- package/src/windsurf/techniques.js +3647 -1834
- package/src/workspace.js +233 -0
- package/CHANGELOG.md +0 -198
- package/content/case-study-template.md +0 -91
- package/content/claims-governance.md +0 -37
- package/content/claude-code/audit-repo/SKILL.md +0 -20
- package/content/claude-native-integration.md +0 -60
- package/content/devto-article.json +0 -9
- package/content/launch-posts.md +0 -226
- package/content/pilot-rollout-kit.md +0 -30
- package/content/release-checklist.md +0 -31
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* - copilot-setup-steps.yml (Copilot-unique)
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const { buildAdditionalDomainPacks, detectAdditionalDomainPacks } = require('../domain-pack-expansion');
|
|
12
|
+
|
|
13
|
+
const BASE_COPILOT_DOMAIN_PACKS = [
|
|
12
14
|
{
|
|
13
15
|
key: 'baseline-general',
|
|
14
16
|
label: 'Baseline General',
|
|
@@ -171,6 +173,13 @@ const COPILOT_DOMAIN_PACKS = [
|
|
|
171
173
|
},
|
|
172
174
|
];
|
|
173
175
|
|
|
176
|
+
const COPILOT_DOMAIN_PACKS = [
|
|
177
|
+
...BASE_COPILOT_DOMAIN_PACKS,
|
|
178
|
+
...buildAdditionalDomainPacks('copilot', {
|
|
179
|
+
existingKeys: new Set(BASE_COPILOT_DOMAIN_PACKS.map((pack) => pack.key)),
|
|
180
|
+
}),
|
|
181
|
+
];
|
|
182
|
+
|
|
174
183
|
function uniqueByKey(items) {
|
|
175
184
|
const seen = new Set();
|
|
176
185
|
const result = [];
|
|
@@ -332,6 +341,19 @@ function detectCopilotDomainPacks(ctx, stacks = [], assets = {}) {
|
|
|
332
341
|
addMatch('security-focused', ['Detected security-focused repo signals.', ctx.fileContent('SECURITY.md') ? 'SECURITY.md present.' : null]);
|
|
333
342
|
}
|
|
334
343
|
|
|
344
|
+
detectAdditionalDomainPacks({
|
|
345
|
+
ctx,
|
|
346
|
+
pkg,
|
|
347
|
+
deps,
|
|
348
|
+
stackKeys,
|
|
349
|
+
addMatch,
|
|
350
|
+
hasBackend,
|
|
351
|
+
hasFrontend,
|
|
352
|
+
hasInfra,
|
|
353
|
+
hasCi,
|
|
354
|
+
isEnterpriseGoverned,
|
|
355
|
+
});
|
|
356
|
+
|
|
335
357
|
if (matches.length === 0) {
|
|
336
358
|
addMatch('baseline-general', [
|
|
337
359
|
'No stronger platform-specific domain dominated, so a safe general Copilot baseline is the best starting point.',
|
package/src/copilot/mcp-packs.js
CHANGED
|
@@ -385,6 +385,260 @@ const COPILOT_MCP_PACKS = [
|
|
|
385
385
|
excludeTools: [],
|
|
386
386
|
cloudAgentCompatible: true,
|
|
387
387
|
},
|
|
388
|
+
// ── 23 new packs ─────────────────────────────────────────────────────────
|
|
389
|
+
{
|
|
390
|
+
key: 'supabase-mcp', label: 'Supabase',
|
|
391
|
+
description: 'Database, auth, and storage for Supabase.',
|
|
392
|
+
useWhen: 'Repos using Supabase.',
|
|
393
|
+
adoption: 'Requires: SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY.',
|
|
394
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['SUPABASE_URL', 'SUPABASE_SERVICE_ROLE_KEY'],
|
|
395
|
+
serverName: 'supabase',
|
|
396
|
+
jsonProjection: { command: 'npx', args: ['-y', '@supabase/mcp-server-supabase@latest'], env: { SUPABASE_URL: '${env:SUPABASE_URL}', SUPABASE_SERVICE_ROLE_KEY: '${env:SUPABASE_SERVICE_ROLE_KEY}' } },
|
|
397
|
+
excludeTools: ['delete_project', 'drop_table'],
|
|
398
|
+
cloudAgentCompatible: true,
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
key: 'prisma-mcp', label: 'Prisma ORM',
|
|
402
|
+
description: 'Schema inspection and migrations via Prisma.',
|
|
403
|
+
useWhen: 'Repos with a Prisma schema.',
|
|
404
|
+
adoption: 'Requires: DATABASE_URL.',
|
|
405
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['DATABASE_URL'],
|
|
406
|
+
serverName: 'prisma',
|
|
407
|
+
jsonProjection: { command: 'npx', args: ['-y', 'prisma-mcp-server@latest'], env: { DATABASE_URL: '${env:DATABASE_URL}' } },
|
|
408
|
+
excludeTools: ['drop_database'],
|
|
409
|
+
cloudAgentCompatible: true,
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
key: 'vercel-mcp', label: 'Vercel',
|
|
413
|
+
description: 'Deployment management via Vercel.',
|
|
414
|
+
useWhen: 'Repos deployed on Vercel.',
|
|
415
|
+
adoption: 'Requires: VERCEL_TOKEN.',
|
|
416
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['VERCEL_TOKEN'],
|
|
417
|
+
serverName: 'vercel',
|
|
418
|
+
jsonProjection: { command: 'npx', args: ['-y', '@vercel/mcp-server@latest'], env: { VERCEL_TOKEN: '${env:VERCEL_TOKEN}' } },
|
|
419
|
+
excludeTools: ['delete_project', 'delete_deployment'],
|
|
420
|
+
cloudAgentCompatible: true,
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
key: 'cloudflare-mcp', label: 'Cloudflare',
|
|
424
|
+
description: 'Workers, KV, R2, and D1 management.',
|
|
425
|
+
useWhen: 'Repos using Cloudflare edge.',
|
|
426
|
+
adoption: 'Requires: CLOUDFLARE_API_TOKEN.',
|
|
427
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CLOUDFLARE_API_TOKEN'],
|
|
428
|
+
serverName: 'cloudflare',
|
|
429
|
+
jsonProjection: { command: 'npx', args: ['-y', '@cloudflare/mcp-server-cloudflare@latest'], env: { CLOUDFLARE_API_TOKEN: '${env:CLOUDFLARE_API_TOKEN}' } },
|
|
430
|
+
excludeTools: ['delete_worker', 'purge_cache'],
|
|
431
|
+
cloudAgentCompatible: true,
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
key: 'aws-mcp', label: 'AWS',
|
|
435
|
+
description: 'S3, Lambda, DynamoDB access.',
|
|
436
|
+
useWhen: 'Repos using AWS.',
|
|
437
|
+
adoption: 'Requires: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION.',
|
|
438
|
+
trustLevel: 'low', transport: 'stdio', requiredAuth: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION'],
|
|
439
|
+
serverName: 'aws',
|
|
440
|
+
jsonProjection: { command: 'npx', args: ['-y', '@aws-samples/mcp-server-aws@latest'], env: { AWS_ACCESS_KEY_ID: '${env:AWS_ACCESS_KEY_ID}', AWS_SECRET_ACCESS_KEY: '${env:AWS_SECRET_ACCESS_KEY}', AWS_REGION: '${env:AWS_REGION}' } },
|
|
441
|
+
excludeTools: ['delete_stack', 'terminate_instances', 'delete_bucket'],
|
|
442
|
+
cloudAgentCompatible: true,
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
key: 'redis-mcp', label: 'Redis',
|
|
446
|
+
description: 'Cache and session management.',
|
|
447
|
+
useWhen: 'Repos using Redis.',
|
|
448
|
+
adoption: 'Requires: REDIS_URL.',
|
|
449
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['REDIS_URL'],
|
|
450
|
+
serverName: 'redis',
|
|
451
|
+
jsonProjection: { command: 'npx', args: ['-y', 'redis-mcp-server@latest'], env: { REDIS_URL: '${env:REDIS_URL}' } },
|
|
452
|
+
excludeTools: ['flushall', 'flushdb'],
|
|
453
|
+
cloudAgentCompatible: true,
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
key: 'mongodb-mcp', label: 'MongoDB',
|
|
457
|
+
description: 'Document database access.',
|
|
458
|
+
useWhen: 'Repos using MongoDB.',
|
|
459
|
+
adoption: 'Requires: MONGODB_URI.',
|
|
460
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['MONGODB_URI'],
|
|
461
|
+
serverName: 'mongodb',
|
|
462
|
+
jsonProjection: { command: 'npx', args: ['-y', '@mongodb-js/mongodb-mcp-server@latest'], env: { MONGODB_URI: '${env:MONGODB_URI}' } },
|
|
463
|
+
excludeTools: ['drop_collection', 'drop_database'],
|
|
464
|
+
cloudAgentCompatible: true,
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
key: 'twilio-mcp', label: 'Twilio',
|
|
468
|
+
description: 'SMS, voice, and messaging.',
|
|
469
|
+
useWhen: 'Repos using Twilio.',
|
|
470
|
+
adoption: 'Requires: TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN.',
|
|
471
|
+
trustLevel: 'low', transport: 'stdio', requiredAuth: ['TWILIO_ACCOUNT_SID', 'TWILIO_AUTH_TOKEN'],
|
|
472
|
+
serverName: 'twilio',
|
|
473
|
+
jsonProjection: { command: 'npx', args: ['-y', 'twilio-mcp-server@latest'], env: { TWILIO_ACCOUNT_SID: '${env:TWILIO_ACCOUNT_SID}', TWILIO_AUTH_TOKEN: '${env:TWILIO_AUTH_TOKEN}' } },
|
|
474
|
+
excludeTools: ['delete_message'],
|
|
475
|
+
cloudAgentCompatible: true,
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
key: 'sendgrid-mcp', label: 'SendGrid',
|
|
479
|
+
description: 'Transactional email delivery.',
|
|
480
|
+
useWhen: 'Repos using SendGrid.',
|
|
481
|
+
adoption: 'Requires: SENDGRID_API_KEY.',
|
|
482
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['SENDGRID_API_KEY'],
|
|
483
|
+
serverName: 'sendgrid',
|
|
484
|
+
jsonProjection: { command: 'npx', args: ['-y', 'sendgrid-mcp-server@latest'], env: { SENDGRID_API_KEY: '${env:SENDGRID_API_KEY}' } },
|
|
485
|
+
excludeTools: [],
|
|
486
|
+
cloudAgentCompatible: true,
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
key: 'algolia-mcp', label: 'Algolia Search',
|
|
490
|
+
description: 'Search indexing via Algolia.',
|
|
491
|
+
useWhen: 'Repos using Algolia.',
|
|
492
|
+
adoption: 'Requires: ALGOLIA_APP_ID, ALGOLIA_API_KEY.',
|
|
493
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['ALGOLIA_APP_ID', 'ALGOLIA_API_KEY'],
|
|
494
|
+
serverName: 'algolia',
|
|
495
|
+
jsonProjection: { command: 'npx', args: ['-y', 'algolia-mcp-server@latest'], env: { ALGOLIA_APP_ID: '${env:ALGOLIA_APP_ID}', ALGOLIA_API_KEY: '${env:ALGOLIA_API_KEY}' } },
|
|
496
|
+
excludeTools: ['delete_index'],
|
|
497
|
+
cloudAgentCompatible: true,
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
key: 'planetscale-mcp', label: 'PlanetScale',
|
|
501
|
+
description: 'Serverless MySQL via PlanetScale.',
|
|
502
|
+
useWhen: 'Repos on PlanetScale.',
|
|
503
|
+
adoption: 'Requires: PLANETSCALE_TOKEN.',
|
|
504
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['PLANETSCALE_TOKEN'],
|
|
505
|
+
serverName: 'planetscale',
|
|
506
|
+
jsonProjection: { command: 'npx', args: ['-y', 'planetscale-mcp-server@latest'], env: { PLANETSCALE_TOKEN: '${env:PLANETSCALE_TOKEN}' } },
|
|
507
|
+
excludeTools: ['delete_database'],
|
|
508
|
+
cloudAgentCompatible: true,
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
key: 'neon-mcp', label: 'Neon Serverless Postgres',
|
|
512
|
+
description: 'Serverless Postgres via Neon.',
|
|
513
|
+
useWhen: 'Repos using Neon.',
|
|
514
|
+
adoption: 'Requires: NEON_API_KEY.',
|
|
515
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['NEON_API_KEY'],
|
|
516
|
+
serverName: 'neon',
|
|
517
|
+
jsonProjection: { command: 'npx', args: ['-y', '@neondatabase/mcp-server-neon@latest'], env: { NEON_API_KEY: '${env:NEON_API_KEY}' } },
|
|
518
|
+
excludeTools: ['delete_project'],
|
|
519
|
+
cloudAgentCompatible: true,
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
key: 'turso-mcp', label: 'Turso Edge SQLite',
|
|
523
|
+
description: 'Edge SQLite via Turso.',
|
|
524
|
+
useWhen: 'Repos using Turso.',
|
|
525
|
+
adoption: 'Requires: TURSO_DATABASE_URL, TURSO_AUTH_TOKEN.',
|
|
526
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['TURSO_DATABASE_URL', 'TURSO_AUTH_TOKEN'],
|
|
527
|
+
serverName: 'turso',
|
|
528
|
+
jsonProjection: { command: 'npx', args: ['-y', 'turso-mcp-server@latest'], env: { TURSO_DATABASE_URL: '${env:TURSO_DATABASE_URL}', TURSO_AUTH_TOKEN: '${env:TURSO_AUTH_TOKEN}' } },
|
|
529
|
+
excludeTools: ['destroy_database'],
|
|
530
|
+
cloudAgentCompatible: true,
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
key: 'upstash-mcp', label: 'Upstash Redis+Kafka',
|
|
534
|
+
description: 'Serverless Redis and Kafka.',
|
|
535
|
+
useWhen: 'Repos using Upstash.',
|
|
536
|
+
adoption: 'Requires: UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN.',
|
|
537
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['UPSTASH_REDIS_REST_URL', 'UPSTASH_REDIS_REST_TOKEN'],
|
|
538
|
+
serverName: 'upstash',
|
|
539
|
+
jsonProjection: { command: 'npx', args: ['-y', '@upstash/mcp-server@latest'], env: { UPSTASH_REDIS_REST_URL: '${env:UPSTASH_REDIS_REST_URL}', UPSTASH_REDIS_REST_TOKEN: '${env:UPSTASH_REDIS_REST_TOKEN}' } },
|
|
540
|
+
excludeTools: [],
|
|
541
|
+
cloudAgentCompatible: true,
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
key: 'convex-mcp', label: 'Convex',
|
|
545
|
+
description: 'Reactive backend via Convex.',
|
|
546
|
+
useWhen: 'Repos using Convex.',
|
|
547
|
+
adoption: 'Requires: CONVEX_DEPLOYMENT.',
|
|
548
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CONVEX_DEPLOYMENT'],
|
|
549
|
+
serverName: 'convex',
|
|
550
|
+
jsonProjection: { command: 'npx', args: ['-y', '@convex-dev/mcp-server@latest'], env: { CONVEX_DEPLOYMENT: '${env:CONVEX_DEPLOYMENT}' } },
|
|
551
|
+
excludeTools: ['delete_deployment'],
|
|
552
|
+
cloudAgentCompatible: true,
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
key: 'clerk-mcp', label: 'Clerk Authentication',
|
|
556
|
+
description: 'User auth via Clerk.',
|
|
557
|
+
useWhen: 'Repos using Clerk.',
|
|
558
|
+
adoption: 'Requires: CLERK_SECRET_KEY.',
|
|
559
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CLERK_SECRET_KEY'],
|
|
560
|
+
serverName: 'clerk',
|
|
561
|
+
jsonProjection: { command: 'npx', args: ['-y', '@clerk/mcp-server@latest'], env: { CLERK_SECRET_KEY: '${env:CLERK_SECRET_KEY}' } },
|
|
562
|
+
excludeTools: ['delete_user'],
|
|
563
|
+
cloudAgentCompatible: true,
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
key: 'resend-mcp', label: 'Resend Email',
|
|
567
|
+
description: 'Transactional email via Resend.',
|
|
568
|
+
useWhen: 'Repos using Resend.',
|
|
569
|
+
adoption: 'Requires: RESEND_API_KEY.',
|
|
570
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['RESEND_API_KEY'],
|
|
571
|
+
serverName: 'resend',
|
|
572
|
+
jsonProjection: { command: 'npx', args: ['-y', 'resend-mcp-server@latest'], env: { RESEND_API_KEY: '${env:RESEND_API_KEY}' } },
|
|
573
|
+
excludeTools: [],
|
|
574
|
+
cloudAgentCompatible: true,
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
key: 'temporal-mcp', label: 'Temporal Workflow',
|
|
578
|
+
description: 'Workflow orchestration via Temporal.',
|
|
579
|
+
useWhen: 'Repos using Temporal.',
|
|
580
|
+
adoption: 'Requires: TEMPORAL_ADDRESS.',
|
|
581
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['TEMPORAL_ADDRESS'],
|
|
582
|
+
serverName: 'temporal',
|
|
583
|
+
jsonProjection: { command: 'npx', args: ['-y', 'temporal-mcp-server@latest'], env: { TEMPORAL_ADDRESS: '${env:TEMPORAL_ADDRESS}' } },
|
|
584
|
+
excludeTools: ['terminate_workflow'],
|
|
585
|
+
cloudAgentCompatible: true,
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
key: 'launchdarkly-mcp', label: 'LaunchDarkly',
|
|
589
|
+
description: 'Feature flags via LaunchDarkly.',
|
|
590
|
+
useWhen: 'Repos using LaunchDarkly.',
|
|
591
|
+
adoption: 'Requires: LAUNCHDARKLY_ACCESS_TOKEN.',
|
|
592
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['LAUNCHDARKLY_ACCESS_TOKEN'],
|
|
593
|
+
serverName: 'launchdarkly',
|
|
594
|
+
jsonProjection: { command: 'npx', args: ['-y', 'launchdarkly-mcp-server@latest'], env: { LAUNCHDARKLY_ACCESS_TOKEN: '${env:LAUNCHDARKLY_ACCESS_TOKEN}' } },
|
|
595
|
+
excludeTools: ['delete_flag'],
|
|
596
|
+
cloudAgentCompatible: true,
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
key: 'datadog-mcp', label: 'Datadog',
|
|
600
|
+
description: 'Monitoring and APM via Datadog.',
|
|
601
|
+
useWhen: 'Repos using Datadog.',
|
|
602
|
+
adoption: 'Requires: DATADOG_API_KEY, DATADOG_APP_KEY.',
|
|
603
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['DATADOG_API_KEY', 'DATADOG_APP_KEY'],
|
|
604
|
+
serverName: 'datadog',
|
|
605
|
+
jsonProjection: { command: 'npx', args: ['-y', '@datadog/mcp-server@latest'], env: { DATADOG_API_KEY: '${env:DATADOG_API_KEY}', DATADOG_APP_KEY: '${env:DATADOG_APP_KEY}' } },
|
|
606
|
+
excludeTools: ['delete_monitor'],
|
|
607
|
+
cloudAgentCompatible: true,
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
key: 'grafana-mcp', label: 'Grafana',
|
|
611
|
+
description: 'Dashboards via Grafana.',
|
|
612
|
+
useWhen: 'Repos using Grafana.',
|
|
613
|
+
adoption: 'Requires: GRAFANA_URL, GRAFANA_API_KEY.',
|
|
614
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['GRAFANA_URL', 'GRAFANA_API_KEY'],
|
|
615
|
+
serverName: 'grafana',
|
|
616
|
+
jsonProjection: { command: 'npx', args: ['-y', 'grafana-mcp-server@latest'], env: { GRAFANA_URL: '${env:GRAFANA_URL}', GRAFANA_API_KEY: '${env:GRAFANA_API_KEY}' } },
|
|
617
|
+
excludeTools: ['delete_dashboard'],
|
|
618
|
+
cloudAgentCompatible: true,
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
key: 'circleci-mcp', label: 'CircleCI',
|
|
622
|
+
description: 'CI/CD via CircleCI.',
|
|
623
|
+
useWhen: 'Repos using CircleCI.',
|
|
624
|
+
adoption: 'Requires: CIRCLECI_TOKEN.',
|
|
625
|
+
trustLevel: 'medium', transport: 'stdio', requiredAuth: ['CIRCLECI_TOKEN'],
|
|
626
|
+
serverName: 'circleci',
|
|
627
|
+
jsonProjection: { command: 'npx', args: ['-y', 'circleci-mcp-server@latest'], env: { CIRCLECI_TOKEN: '${env:CIRCLECI_TOKEN}' } },
|
|
628
|
+
excludeTools: ['cancel_pipeline'],
|
|
629
|
+
cloudAgentCompatible: true,
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
key: 'anthropic-mcp', label: 'Anthropic Claude API',
|
|
633
|
+
description: 'Claude API for AI-powered apps.',
|
|
634
|
+
useWhen: 'Repos building on Claude API.',
|
|
635
|
+
adoption: 'Requires: ANTHROPIC_API_KEY.',
|
|
636
|
+
trustLevel: 'high', transport: 'stdio', requiredAuth: ['ANTHROPIC_API_KEY'],
|
|
637
|
+
serverName: 'anthropic',
|
|
638
|
+
jsonProjection: { command: 'npx', args: ['-y', '@anthropic-ai/mcp-server@latest'], env: { ANTHROPIC_API_KEY: '${env:ANTHROPIC_API_KEY}' } },
|
|
639
|
+
excludeTools: [],
|
|
640
|
+
cloudAgentCompatible: true,
|
|
641
|
+
},
|
|
388
642
|
];
|
|
389
643
|
|
|
390
644
|
// --- Helpers ---
|