@revealui/mcp 0.1.0 → 0.1.3
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/LICENSE +22 -0
- package/LICENSE.commercial +111 -0
- package/README.md +3 -0
- package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
- package/dist/adapters/db.d.ts.map +1 -0
- package/dist/adapters/db.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
- package/dist/hypervisor.d.ts.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
- package/dist/hypervisor.js.map +1 -0
- package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/{packages/mcp/src/index.js → index.js} +8 -4
- package/dist/index.js.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
- package/dist/servers/adapter.d.ts.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
- package/dist/servers/adapter.js.map +1 -0
- package/dist/servers/revealui-content.d.ts +21 -0
- package/dist/servers/revealui-content.d.ts.map +1 -0
- package/dist/servers/revealui-content.js +211 -0
- package/dist/servers/revealui-content.js.map +1 -0
- package/dist/servers/revealui-email.d.ts +18 -0
- package/dist/servers/revealui-email.d.ts.map +1 -0
- package/dist/servers/revealui-email.js +190 -0
- package/dist/servers/revealui-email.js.map +1 -0
- package/dist/servers/revealui-stripe.d.ts +19 -0
- package/dist/servers/revealui-stripe.d.ts.map +1 -0
- package/dist/servers/revealui-stripe.js +228 -0
- package/dist/servers/revealui-stripe.js.map +1 -0
- package/package.json +50 -11
- package/.env.example +0 -9
- package/MCP_MAINTENANCE.md +0 -265
- package/__tests__/crdt.integration.test.ts +0 -156
- package/configs/README.md +0 -77
- package/configs/claude-template.json +0 -54
- package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
- package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
- package/dist/packages/core/src/database/ssl-config.js +0 -8
- package/dist/packages/core/src/database/ssl-config.js.map +0 -1
- package/dist/packages/core/src/features.d.ts +0 -86
- package/dist/packages/core/src/features.d.ts.map +0 -1
- package/dist/packages/core/src/features.js +0 -93
- package/dist/packages/core/src/features.js.map +0 -1
- package/dist/packages/core/src/license.d.ts +0 -75
- package/dist/packages/core/src/license.d.ts.map +0 -1
- package/dist/packages/core/src/license.js +0 -174
- package/dist/packages/core/src/license.js.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
- package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.js +0 -325
- package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
- package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
- package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
- package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
- package/dist/packages/core/src/monitoring/index.d.ts +0 -14
- package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/index.js +0 -18
- package/dist/packages/core/src/monitoring/index.js.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
- package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.js +0 -223
- package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
- package/dist/packages/core/src/monitoring/types.d.ts +0 -231
- package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/types.js +0 -43
- package/dist/packages/core/src/monitoring/types.js.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
- package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
- package/dist/packages/core/src/observability/logger.d.ts +0 -47
- package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
- package/dist/packages/core/src/observability/logger.js +0 -141
- package/dist/packages/core/src/observability/logger.js.map +0 -1
- package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
- package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
- package/dist/packages/core/src/utils/logger-server.js +0 -69
- package/dist/packages/core/src/utils/logger-server.js.map +0 -1
- package/dist/packages/core/src/utils/request-context.d.ts +0 -143
- package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
- package/dist/packages/core/src/utils/request-context.js +0 -169
- package/dist/packages/core/src/utils/request-context.js.map +0 -1
- package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
- package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/index.js +0 -20
- package/dist/packages/dev/src/code-validator/index.js.map +0 -1
- package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
- package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/types.js +0 -7
- package/dist/packages/dev/src/code-validator/types.js.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
- package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.js +0 -176
- package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
- package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
- package/dist/packages/mcp/src/adapters/db.js.map +0 -1
- package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/config/index.js.map +0 -1
- package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
- package/dist/packages/mcp/src/contracts.js.map +0 -1
- package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
- package/dist/packages/mcp/src/hypervisor.js.map +0 -1
- package/dist/packages/mcp/src/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/index.js.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
- package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.js +0 -156
- package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
- package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
- package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/neon.js +0 -90
- package/dist/packages/mcp/src/servers/neon.js.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
- package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
- package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
- package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.js +0 -68
- package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
- package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.js +0 -86
- package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
- package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.js +0 -144
- package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
- package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.js +0 -87
- package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
- package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
- package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
- package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
- package/dist/scripts/lib/analyzers/index.d.ts +0 -11
- package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/index.js +0 -11
- package/dist/scripts/lib/analyzers/index.js.map +0 -1
- package/dist/scripts/lib/args.d.ts +0 -104
- package/dist/scripts/lib/args.d.ts.map +0 -1
- package/dist/scripts/lib/args.js +0 -304
- package/dist/scripts/lib/args.js.map +0 -1
- package/dist/scripts/lib/cache.d.ts +0 -185
- package/dist/scripts/lib/cache.d.ts.map +0 -1
- package/dist/scripts/lib/cache.js +0 -390
- package/dist/scripts/lib/cache.js.map +0 -1
- package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
- package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
- package/dist/scripts/lib/cli/dispatch.js +0 -206
- package/dist/scripts/lib/cli/dispatch.js.map +0 -1
- package/dist/scripts/lib/cli/index.d.ts +0 -10
- package/dist/scripts/lib/cli/index.d.ts.map +0 -1
- package/dist/scripts/lib/cli/index.js +0 -10
- package/dist/scripts/lib/cli/index.js.map +0 -1
- package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
- package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
- package/dist/scripts/lib/database/ssl-config.js +0 -47
- package/dist/scripts/lib/database/ssl-config.js.map +0 -1
- package/dist/scripts/lib/errors.d.ts +0 -218
- package/dist/scripts/lib/errors.d.ts.map +0 -1
- package/dist/scripts/lib/errors.js +0 -543
- package/dist/scripts/lib/errors.js.map +0 -1
- package/dist/scripts/lib/exec.d.ts +0 -107
- package/dist/scripts/lib/exec.d.ts.map +0 -1
- package/dist/scripts/lib/exec.js +0 -232
- package/dist/scripts/lib/exec.js.map +0 -1
- package/dist/scripts/lib/index.d.ts +0 -50
- package/dist/scripts/lib/index.d.ts.map +0 -1
- package/dist/scripts/lib/index.js +0 -65
- package/dist/scripts/lib/index.js.map +0 -1
- package/dist/scripts/lib/logger.d.ts +0 -50
- package/dist/scripts/lib/logger.d.ts.map +0 -1
- package/dist/scripts/lib/logger.js +0 -159
- package/dist/scripts/lib/logger.js.map +0 -1
- package/dist/scripts/lib/output.d.ts +0 -149
- package/dist/scripts/lib/output.d.ts.map +0 -1
- package/dist/scripts/lib/output.js +0 -263
- package/dist/scripts/lib/output.js.map +0 -1
- package/dist/scripts/lib/parallel.d.ts +0 -164
- package/dist/scripts/lib/parallel.d.ts.map +0 -1
- package/dist/scripts/lib/parallel.js +0 -355
- package/dist/scripts/lib/parallel.js.map +0 -1
- package/dist/scripts/lib/paths.d.ts +0 -92
- package/dist/scripts/lib/paths.d.ts.map +0 -1
- package/dist/scripts/lib/paths.js +0 -171
- package/dist/scripts/lib/paths.js.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
- package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.js +0 -110
- package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
- package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.js +0 -256
- package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
- package/dist/scripts/lib/state/index.d.ts +0 -16
- package/dist/scripts/lib/state/index.d.ts.map +0 -1
- package/dist/scripts/lib/state/index.js +0 -16
- package/dist/scripts/lib/state/index.js.map +0 -1
- package/dist/scripts/lib/state/types.d.ts +0 -111
- package/dist/scripts/lib/state/types.d.ts.map +0 -1
- package/dist/scripts/lib/state/types.js +0 -8
- package/dist/scripts/lib/state/types.js.map +0 -1
- package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
- package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
- package/dist/scripts/lib/state/workflow-state.js +0 -331
- package/dist/scripts/lib/state/workflow-state.js.map +0 -1
- package/dist/scripts/lib/telemetry.d.ts +0 -194
- package/dist/scripts/lib/telemetry.d.ts.map +0 -1
- package/dist/scripts/lib/telemetry.js +0 -394
- package/dist/scripts/lib/telemetry.js.map +0 -1
- package/dist/scripts/lib/utils.d.ts +0 -270
- package/dist/scripts/lib/utils.d.ts.map +0 -1
- package/dist/scripts/lib/utils.js +0 -473
- package/dist/scripts/lib/utils.js.map +0 -1
- package/dist/scripts/lib/validation/database.d.ts +0 -83
- package/dist/scripts/lib/validation/database.d.ts.map +0 -1
- package/dist/scripts/lib/validation/database.js +0 -199
- package/dist/scripts/lib/validation/database.js.map +0 -1
- package/dist/scripts/lib/validation/env.d.ts +0 -80
- package/dist/scripts/lib/validation/env.d.ts.map +0 -1
- package/dist/scripts/lib/validation/env.js +0 -246
- package/dist/scripts/lib/validation/env.js.map +0 -1
- package/dist/scripts/lib/validation/index.d.ts +0 -16
- package/dist/scripts/lib/validation/index.d.ts.map +0 -1
- package/dist/scripts/lib/validation/index.js +0 -16
- package/dist/scripts/lib/validation/index.js.map +0 -1
- package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
- package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/post-execution.js +0 -110
- package/dist/scripts/lib/validation/post-execution.js.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
- package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.js +0 -466
- package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
- package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.js +0 -584
- package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
- package/dist/scripts/lib/validators/index.d.ts +0 -11
- package/dist/scripts/lib/validators/index.d.ts.map +0 -1
- package/dist/scripts/lib/validators/index.js +0 -11
- package/dist/scripts/lib/validators/index.js.map +0 -1
- package/docker-compose.yml +0 -46
- package/docs/INDEX.md +0 -88
- package/docs/README.md +0 -774
- package/docs/SETUP.md +0 -264
- package/docs/servers/code-validator.md +0 -586
- package/eslint.config.js +0 -7
- package/migrations/0001_add_crdt_columns.sql +0 -8
- package/migrations/0001_rollback.sql +0 -6
- package/migrations/005_performance_indexes.sql +0 -190
- package/migrations/backfill_crdt_meta.js +0 -45
- package/src/__tests__/hypervisor.test.ts +0 -212
- package/src/adapters/db.ts +0 -180
- package/src/config/config.json +0 -49
- package/src/config/index.ts +0 -30
- package/src/contracts.ts +0 -221
- package/src/hypervisor.ts +0 -464
- package/src/index.ts +0 -87
- package/src/servers/adapter.ts +0 -643
- package/src/servers/code-validator.ts +0 -188
- package/src/servers/neon.ts +0 -103
- package/src/servers/next-devtools.ts +0 -230
- package/src/servers/playwright.ts +0 -77
- package/src/servers/stripe.ts +0 -99
- package/src/servers/supabase.ts +0 -161
- package/src/servers/vercel.ts +0 -100
- package/src/servers/vultr-test.ts +0 -97
- package/tsconfig.json +0 -12
- package/vitest.config.ts +0 -22
- /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
- /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
- /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* Next.js DevTools MCP Server Launcher
|
|
4
|
-
*
|
|
5
|
-
* Starts the Next.js DevTools MCP server for AI-powered Next.js development.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* pnpm mcp:next-devtools
|
|
9
|
-
*/
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import { createServer } from 'node:net';
|
|
12
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts';
|
|
13
|
-
import { ErrorCode } from '@revealui/scripts/errors';
|
|
14
|
-
import { config } from 'dotenv';
|
|
15
|
-
import { checkMcpLicense } from '../index.js';
|
|
16
|
-
const logger = createLogger();
|
|
17
|
-
// Load environment variables
|
|
18
|
-
config();
|
|
19
|
-
async function checkPort(port) {
|
|
20
|
-
return new Promise((resolve) => {
|
|
21
|
-
const server = createServer();
|
|
22
|
-
server.listen(port, () => {
|
|
23
|
-
server.once('close', () => resolve(false));
|
|
24
|
-
server.close();
|
|
25
|
-
});
|
|
26
|
-
server.on('error', () => resolve(true));
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
async function startNextDevToolsMCP() {
|
|
30
|
-
try {
|
|
31
|
-
await getProjectRoot(import.meta.url);
|
|
32
|
-
// Check if we're being invoked by an MCP client (non-TTY stdin)
|
|
33
|
-
// MCP servers need clean stdio pipes for JSON-RPC protocol
|
|
34
|
-
const isMCPSession = !process.stdin.isTTY;
|
|
35
|
-
const stdioConfig = isMCPSession
|
|
36
|
-
? ['pipe', 'pipe', 'pipe'] // stdin, stdout, stderr as pipes for MCP protocol
|
|
37
|
-
: 'inherit'; // Use inherit for interactive/debugging sessions
|
|
38
|
-
// Only log when running interactively (not via MCP client)
|
|
39
|
-
if (!isMCPSession) {
|
|
40
|
-
logger.header('Starting Next.js DevTools MCP Server');
|
|
41
|
-
logger.info(' This server provides Next.js 16+ development tools for coding agents');
|
|
42
|
-
logger.info(' Features: Runtime diagnostics, upgrade automation, Cache Components setup');
|
|
43
|
-
}
|
|
44
|
-
// Spawn the next-devtools-mcp process
|
|
45
|
-
// Use pnpm exec for locally installed package
|
|
46
|
-
// next-devtools-mcp automatically discovers Next.js dev servers and connects to them
|
|
47
|
-
const child = spawn('pnpm', ['exec', 'next-devtools-mcp'], {
|
|
48
|
-
stdio: stdioConfig,
|
|
49
|
-
env: {
|
|
50
|
-
...process.env,
|
|
51
|
-
// Disable telemetry if NEXT_TELEMETRY_DISABLED is set
|
|
52
|
-
NEXT_TELEMETRY_DISABLED: process.env.NEXT_TELEMETRY_DISABLED || '0',
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
// Pipe stdio when running as MCP server (for JSON-RPC protocol)
|
|
56
|
-
if (isMCPSession) {
|
|
57
|
-
const { stdin, stdout, stderr } = child;
|
|
58
|
-
if (stdin) {
|
|
59
|
-
process.stdin.pipe(stdin);
|
|
60
|
-
}
|
|
61
|
-
stdout?.pipe(process.stdout);
|
|
62
|
-
stderr?.pipe(process.stderr);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
// Check CMS dev server
|
|
66
|
-
const cmsPort = 4000;
|
|
67
|
-
const cmsRunning = await checkPort(cmsPort);
|
|
68
|
-
// In interactive mode, provide feedback that the server is running
|
|
69
|
-
// MCP servers don't produce output until they receive JSON-RPC messages
|
|
70
|
-
logger.info('\n📊 Server Discovery');
|
|
71
|
-
logger.info('📝 Next Steps');
|
|
72
|
-
if (!cmsRunning) {
|
|
73
|
-
logger.info('1. Start your CMS dev server:');
|
|
74
|
-
logger.info(' cd apps/cms && pnpm dev');
|
|
75
|
-
logger.info('');
|
|
76
|
-
}
|
|
77
|
-
logger.info('2. Ensure Next.js DevTools MCP is running:');
|
|
78
|
-
logger.info(' pnpm mcp:next-devtools');
|
|
79
|
-
logger.info(' (or pnpm mcp:all for all servers)');
|
|
80
|
-
logger.info('');
|
|
81
|
-
logger.info('3. In Cursor, you can now ask:');
|
|
82
|
-
logger.info(' - "What errors are in my Next.js app?"');
|
|
83
|
-
logger.info(' - "Show me my application routes"');
|
|
84
|
-
logger.info(' - "Help me upgrade to Next.js 16"');
|
|
85
|
-
logger.info(' - "Enable Cache Components in my app"');
|
|
86
|
-
logger.info('');
|
|
87
|
-
if (cmsRunning) {
|
|
88
|
-
logger.success(`Next.js CMS app detected on port ${cmsPort}`);
|
|
89
|
-
logger.info(` URL: http://localhost:${cmsPort}`);
|
|
90
|
-
logger.info(` MCP Endpoint: http://localhost:${cmsPort}/_next/mcp`);
|
|
91
|
-
logger.info(' Server started successfully ✓');
|
|
92
|
-
logger.info(' Waiting for MCP client connections...');
|
|
93
|
-
logger.info(' (This server communicates via JSON-RPC protocol on stdin/stdout)');
|
|
94
|
-
logger.info('');
|
|
95
|
-
logger.info(' To use this with Cursor IDE:');
|
|
96
|
-
logger.info(" • Ensure it's configured in .cursor/mcp-config.json");
|
|
97
|
-
logger.info(' • Cursor will automatically start it when needed');
|
|
98
|
-
logger.info('');
|
|
99
|
-
logger.info('');
|
|
100
|
-
logger.info('🛠️ Available Next.js DevTools MCP Tools');
|
|
101
|
-
logger.info('1. nextjs_index');
|
|
102
|
-
logger.info(' - Discovers all running Next.js 16+ dev servers');
|
|
103
|
-
logger.info(' - Lists available diagnostic tools');
|
|
104
|
-
logger.info(' - Shows server metadata (port, PID, URL)');
|
|
105
|
-
logger.info('');
|
|
106
|
-
logger.info('2. nextjs_call');
|
|
107
|
-
logger.info(' - Executes runtime diagnostics on dev server');
|
|
108
|
-
logger.info(' - Can query:');
|
|
109
|
-
logger.info(' • Real-time build/runtime errors');
|
|
110
|
-
logger.info(' • Application routes and pages');
|
|
111
|
-
logger.info(' • Component metadata');
|
|
112
|
-
logger.info(' • Development server logs');
|
|
113
|
-
logger.info(' • Server Actions');
|
|
114
|
-
logger.info('');
|
|
115
|
-
logger.info('3. upgrade_nextjs_16');
|
|
116
|
-
logger.info(' - Automated Next.js 16 upgrade');
|
|
117
|
-
logger.info(' - Runs official codemods');
|
|
118
|
-
logger.info(' - Handles async API changes');
|
|
119
|
-
logger.info(' - Fixes deprecated features');
|
|
120
|
-
logger.info('');
|
|
121
|
-
logger.info('4. enable_cache_components');
|
|
122
|
-
logger.info(' - Complete Cache Components setup');
|
|
123
|
-
logger.info(' - Automated error detection and fixing');
|
|
124
|
-
logger.info(' - Route verification');
|
|
125
|
-
logger.info(' - Intelligent boundary setup');
|
|
126
|
-
logger.info('');
|
|
127
|
-
logger.info('💡 How to Use with Your CMS App');
|
|
128
|
-
logger.info('Once your CMS dev server is running (pnpm dev in apps/cms):');
|
|
129
|
-
logger.info('');
|
|
130
|
-
logger.info('1. Auto-discovery:');
|
|
131
|
-
logger.info(' The MCP server will automatically detect your CMS app');
|
|
132
|
-
logger.info(" when it's running on http://localhost:4000");
|
|
133
|
-
logger.info('');
|
|
134
|
-
logger.info('2. Query runtime errors:');
|
|
135
|
-
logger.info(' "Next Devtools, what errors are in my Next.js app?"');
|
|
136
|
-
logger.info(' → Returns real-time build and runtime errors');
|
|
137
|
-
logger.info('');
|
|
138
|
-
logger.info('3. Check application routes:');
|
|
139
|
-
logger.info(' "Next Devtools, show me my application routes"');
|
|
140
|
-
logger.info(' → Lists all routes, pages, and dynamic segments');
|
|
141
|
-
logger.info('');
|
|
142
|
-
logger.info('4. View dev server logs:');
|
|
143
|
-
logger.info(' "Next Devtools, what\'s in the dev server logs?"');
|
|
144
|
-
logger.info(' → Shows recent development server output');
|
|
145
|
-
logger.info('');
|
|
146
|
-
logger.info('5. Upgrade assistance:');
|
|
147
|
-
logger.info(' "Next Devtools, help me upgrade to Next.js 16"');
|
|
148
|
-
logger.info(' → Guides through upgrade with automated codemods');
|
|
149
|
-
logger.info('');
|
|
150
|
-
logger.info('6. Cache Components setup:');
|
|
151
|
-
logger.info(' "Next Devtools, enable Cache Components"');
|
|
152
|
-
logger.info(' → Automated setup with error detection/fixing');
|
|
153
|
-
logger.info('');
|
|
154
|
-
logger.info('🔗 Integration with Your Setup');
|
|
155
|
-
logger.success('Next.js DevTools MCP is configured in:');
|
|
156
|
-
logger.info(' - .cursor/mcp-config.json');
|
|
157
|
-
logger.info(' - package.json scripts (mcp:next-devtools)');
|
|
158
|
-
logger.info(' - Included in mcp:all command');
|
|
159
|
-
logger.info('');
|
|
160
|
-
logger.success('Your CMS app is Next.js 16.1.1 - fully compatible!');
|
|
161
|
-
logger.success('Dev server runs on port 4000 with Turbopack');
|
|
162
|
-
logger.success('MCP endpoint available at: /_next/mcp');
|
|
163
|
-
logger.info('');
|
|
164
|
-
logger.info(' Press Ctrl+C to stop the server');
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
logger.warning(`Next.js CMS app not running on port ${cmsPort}`);
|
|
168
|
-
logger.info(` Start it with: cd apps/cms && pnpm dev`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
child.on('error', (error) => {
|
|
172
|
-
if (!isMCPSession) {
|
|
173
|
-
logger.error(`Failed to start Next.js DevTools MCP server: ${error.message}`);
|
|
174
|
-
}
|
|
175
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
176
|
-
});
|
|
177
|
-
child.on('exit', (code) => {
|
|
178
|
-
process.exit(code ?? 0);
|
|
179
|
-
});
|
|
180
|
-
// Handle termination signals
|
|
181
|
-
process.on('SIGINT', () => {
|
|
182
|
-
if (!isMCPSession) {
|
|
183
|
-
logger.info('\n🛑 Stopping Next.js DevTools MCP Server...');
|
|
184
|
-
}
|
|
185
|
-
child.kill('SIGINT');
|
|
186
|
-
});
|
|
187
|
-
process.on('SIGTERM', () => {
|
|
188
|
-
if (!isMCPSession) {
|
|
189
|
-
logger.info('\n🛑 Stopping Next.js DevTools MCP Server...');
|
|
190
|
-
}
|
|
191
|
-
child.kill('SIGTERM');
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
196
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Main function
|
|
201
|
-
*/
|
|
202
|
-
async function main() {
|
|
203
|
-
try {
|
|
204
|
-
if (!(await checkMcpLicense())) {
|
|
205
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
206
|
-
}
|
|
207
|
-
await startNextDevToolsMCP();
|
|
208
|
-
}
|
|
209
|
-
catch (error) {
|
|
210
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
211
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
main();
|
|
215
|
-
//# sourceMappingURL=next-devtools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"next-devtools.js","sourceRoot":"","sources":["../../../../../src/servers/next-devtools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../../../src/servers/playwright.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* Playwright MCP Server Launcher
|
|
4
|
-
*
|
|
5
|
-
* Starts the Playwright MCP server for AI-powered browser automation.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* pnpm mcp:playwright
|
|
9
|
-
*/
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts';
|
|
12
|
-
import { ErrorCode } from '@revealui/scripts/errors';
|
|
13
|
-
import { config } from 'dotenv';
|
|
14
|
-
import { checkMcpLicense } from '../index.js';
|
|
15
|
-
const logger = createLogger();
|
|
16
|
-
// Load environment variables
|
|
17
|
-
config();
|
|
18
|
-
async function startPlaywrightMCP() {
|
|
19
|
-
try {
|
|
20
|
-
await getProjectRoot(import.meta.url);
|
|
21
|
-
logger.header('Starting Playwright MCP Server');
|
|
22
|
-
// Spawn the Playwright MCP server
|
|
23
|
-
// Using @executeautomation/playwright-mcp-server which is the most popular option
|
|
24
|
-
const child = spawn('pnpm', ['dlx', '@executeautomation/playwright-mcp-server'], {
|
|
25
|
-
stdio: 'inherit',
|
|
26
|
-
env: {
|
|
27
|
-
...process.env,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
child.on('error', (error) => {
|
|
31
|
-
logger.error(`Failed to start Playwright MCP server: ${error.message}`);
|
|
32
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
33
|
-
});
|
|
34
|
-
child.on('exit', (code) => {
|
|
35
|
-
process.exit(code ?? 0);
|
|
36
|
-
});
|
|
37
|
-
// Handle termination signals
|
|
38
|
-
process.on('SIGINT', () => {
|
|
39
|
-
logger.info('\n🛑 Stopping Playwright MCP Server...');
|
|
40
|
-
child.kill('SIGINT');
|
|
41
|
-
});
|
|
42
|
-
process.on('SIGTERM', () => {
|
|
43
|
-
logger.info('\n🛑 Stopping Playwright MCP Server...');
|
|
44
|
-
child.kill('SIGTERM');
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
49
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Main function
|
|
54
|
-
*/
|
|
55
|
-
async function main() {
|
|
56
|
-
try {
|
|
57
|
-
if (!(await checkMcpLicense())) {
|
|
58
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
59
|
-
}
|
|
60
|
-
await startPlaywrightMCP();
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
64
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
main();
|
|
68
|
-
//# sourceMappingURL=playwright.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../../../../src/servers/playwright.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;AAE7B,6BAA6B;AAC7B,MAAM,EAAE,CAAA;AAER,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAA;QAE/C,kCAAkC;QAClC,kFAAkF;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,0CAA0C,CAAC,EAAE;YAC/E,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;aACf;SACF,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACvE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,6BAA6B;QAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;YACrD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;YACrD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC;QACD,MAAM,kBAAkB,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IACzC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../../../../src/servers/stripe.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* Stripe MCP Server Launcher
|
|
4
|
-
*
|
|
5
|
-
* Starts the Stripe MCP server for AI-powered payment management.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* pnpm mcp:stripe
|
|
9
|
-
*/
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts';
|
|
12
|
-
import { ErrorCode } from '@revealui/scripts/errors';
|
|
13
|
-
import { config } from 'dotenv';
|
|
14
|
-
import { checkMcpLicense } from '../index.js';
|
|
15
|
-
const logger = createLogger();
|
|
16
|
-
// Load environment variables
|
|
17
|
-
config();
|
|
18
|
-
const MAX_RESTARTS = 3;
|
|
19
|
-
const RESTART_DELAYS_MS = [2000, 4000, 8000];
|
|
20
|
-
async function spawnStripe(stripeSecretKey) {
|
|
21
|
-
return new Promise((resolve) => {
|
|
22
|
-
const child = spawn('pnpm', ['dlx', '@stripe/mcp', '--tools=all'], {
|
|
23
|
-
stdio: 'inherit',
|
|
24
|
-
env: { ...process.env, STRIPE_SECRET_KEY: stripeSecretKey },
|
|
25
|
-
});
|
|
26
|
-
child.on('error', (error) => {
|
|
27
|
-
logger.error(`Failed to start Stripe MCP server: ${error.message}`);
|
|
28
|
-
resolve(ErrorCode.CONFIG_ERROR);
|
|
29
|
-
});
|
|
30
|
-
child.on('exit', (code) => resolve(code ?? 0));
|
|
31
|
-
process.on('SIGINT', () => {
|
|
32
|
-
child.kill('SIGINT');
|
|
33
|
-
});
|
|
34
|
-
process.on('SIGTERM', () => {
|
|
35
|
-
child.kill('SIGTERM');
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
async function startStripeMCP() {
|
|
40
|
-
try {
|
|
41
|
-
await getProjectRoot(import.meta.url);
|
|
42
|
-
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
43
|
-
if (!stripeSecretKey) {
|
|
44
|
-
logger.error('STRIPE_SECRET_KEY environment variable is required');
|
|
45
|
-
logger.info(' Get your key from: https://dashboard.stripe.com/apikeys');
|
|
46
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
47
|
-
}
|
|
48
|
-
const withRestart = process.argv.includes('--restart');
|
|
49
|
-
logger.header('Starting Stripe MCP Server');
|
|
50
|
-
logger.info(` Secret Key: ${stripeSecretKey.substring(0, 12)}...`);
|
|
51
|
-
if (withRestart)
|
|
52
|
-
logger.info(' Restart mode: enabled (up to 3 attempts)');
|
|
53
|
-
let attempt = 0;
|
|
54
|
-
while (true) {
|
|
55
|
-
const code = await spawnStripe(stripeSecretKey);
|
|
56
|
-
if (!withRestart || attempt >= MAX_RESTARTS) {
|
|
57
|
-
process.exit(code ?? 0);
|
|
58
|
-
}
|
|
59
|
-
const delay = RESTART_DELAYS_MS[attempt] ?? 8000;
|
|
60
|
-
attempt++;
|
|
61
|
-
logger.warning(` Server exited (code ${code}). Restarting in ${delay / 1000}s (attempt ${attempt}/${MAX_RESTARTS})...`);
|
|
62
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
67
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Main function
|
|
72
|
-
*/
|
|
73
|
-
async function main() {
|
|
74
|
-
try {
|
|
75
|
-
if (!(await checkMcpLicense())) {
|
|
76
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
77
|
-
}
|
|
78
|
-
await startStripeMCP();
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
main();
|
|
86
|
-
//# sourceMappingURL=stripe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../../../../src/servers/stripe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../../../../src/servers/supabase.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* Supabase MCP Server Launcher
|
|
4
|
-
*
|
|
5
|
-
* Starts the Supabase MCP server for AI-powered database management.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* pnpm mcp:supabase
|
|
9
|
-
*/
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import { randomBytes } from 'node:crypto';
|
|
12
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts';
|
|
13
|
-
import { ErrorCode } from '@revealui/scripts/errors';
|
|
14
|
-
import { config } from 'dotenv';
|
|
15
|
-
import { checkMcpLicense } from '../index.js';
|
|
16
|
-
const logger = createLogger();
|
|
17
|
-
// Load environment variables
|
|
18
|
-
config();
|
|
19
|
-
async function startSupabaseMCP() {
|
|
20
|
-
try {
|
|
21
|
-
await getProjectRoot(import.meta.url);
|
|
22
|
-
// Supabase MCP uses local package supabase-mcp
|
|
23
|
-
// Verified: Package expects SUPABASE_URL, SUPABASE_ANON_KEY, and SUPABASE_SERVICE_ROLE_KEY
|
|
24
|
-
// Source: node_modules/supabase-mcp/dist/esm/config.js and services/supabase.js
|
|
25
|
-
//
|
|
26
|
-
// NEW API KEY SUPPORT (2025):
|
|
27
|
-
// Supabase introduced new API keys: sb_publishable_... (replaces anon) and sb_secret_... (replaces service_role)
|
|
28
|
-
// Legacy keys (anon/service_role JWT) still work but will be deprecated in Nov 2025
|
|
29
|
-
// The @supabase/supabase-js client accepts any key format, so we support both
|
|
30
|
-
// Reference: https://github.com/orgs/supabase/discussions/29260
|
|
31
|
-
const supabaseUrl = process.env.SUPABASE_URL;
|
|
32
|
-
// Support both legacy and new API key formats
|
|
33
|
-
// New format: SUPABASE_PUBLISHABLE_KEY (sb_publishable_...) or SUPABASE_ANON_KEY (legacy)
|
|
34
|
-
// New format: SUPABASE_SECRET_KEY (sb_secret_...) or SUPABASE_SERVICE_ROLE_KEY (legacy)
|
|
35
|
-
const supabaseAnonKey = process.env.SUPABASE_PUBLISHABLE_KEY || process.env.SUPABASE_ANON_KEY;
|
|
36
|
-
const supabaseServiceRoleKey = process.env.SUPABASE_SECRET_KEY || process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
37
|
-
if (!supabaseUrl) {
|
|
38
|
-
logger.error('SUPABASE_URL is required');
|
|
39
|
-
logger.info(' Get your credentials from: https://supabase.com/dashboard → Settings → API');
|
|
40
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
41
|
-
}
|
|
42
|
-
if (!supabaseAnonKey) {
|
|
43
|
-
logger.error('SUPABASE_ANON_KEY or SUPABASE_PUBLISHABLE_KEY is required');
|
|
44
|
-
logger.info(' Legacy: SUPABASE_ANON_KEY (anon JWT key)');
|
|
45
|
-
logger.info(' New: SUPABASE_PUBLISHABLE_KEY (sb_publishable_... key)');
|
|
46
|
-
logger.info(' Get from: https://supabase.com/dashboard → Settings → API');
|
|
47
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
48
|
-
}
|
|
49
|
-
if (!supabaseServiceRoleKey) {
|
|
50
|
-
logger.error('SUPABASE_SERVICE_ROLE_KEY or SUPABASE_SECRET_KEY is required');
|
|
51
|
-
logger.info(' Legacy: SUPABASE_SERVICE_ROLE_KEY (service_role JWT key)');
|
|
52
|
-
logger.info(' New: SUPABASE_SECRET_KEY (sb_secret_... key)');
|
|
53
|
-
logger.info(' Note: Required for MCP server operations (full database access)');
|
|
54
|
-
logger.info(' Get from: https://supabase.com/dashboard → Settings → API');
|
|
55
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
56
|
-
}
|
|
57
|
-
// MCP_API_KEY is required by supabase-mcp package for server authentication
|
|
58
|
-
// This is NOT a Supabase key - it's a key you generate yourself to secure the MCP server
|
|
59
|
-
let mcpApiKey = process.env.MCP_API_KEY;
|
|
60
|
-
if (!mcpApiKey) {
|
|
61
|
-
// Auto-generate a secure random key if not provided
|
|
62
|
-
mcpApiKey = randomBytes(32).toString('hex');
|
|
63
|
-
logger.warning('⚠️ MCP_API_KEY not set - auto-generated a secure key');
|
|
64
|
-
logger.warning(' Add this to your .env file to persist it:');
|
|
65
|
-
logger.warning(` MCP_API_KEY=${mcpApiKey}`);
|
|
66
|
-
logger.warning(' (This key secures your MCP server endpoint)');
|
|
67
|
-
}
|
|
68
|
-
const withRestart = process.argv.includes('--restart');
|
|
69
|
-
logger.header('Starting Supabase MCP Server (Local)');
|
|
70
|
-
logger.info(` Supabase URL: ${supabaseUrl}`);
|
|
71
|
-
if (withRestart)
|
|
72
|
-
logger.info(' Restart mode: enabled (up to 3 attempts)');
|
|
73
|
-
// Detect key format for logging
|
|
74
|
-
const usingNewKeys = process.env.SUPABASE_PUBLISHABLE_KEY || process.env.SUPABASE_SECRET_KEY;
|
|
75
|
-
if (usingNewKeys) {
|
|
76
|
-
logger.info(' Using new API key format (sb_publishable_/sb_secret_)');
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
logger.info(' Using legacy API key format (anon/service_role JWT)');
|
|
80
|
-
logger.warning(' ⚠️ Consider migrating to new keys before Nov 2025');
|
|
81
|
-
logger.info(' See: https://github.com/orgs/supabase/discussions/29260');
|
|
82
|
-
}
|
|
83
|
-
// Build env once — used for all spawn attempts
|
|
84
|
-
// Package validates: SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, MCP_API_KEY
|
|
85
|
-
// We map new keys to legacy variable names for package compatibility
|
|
86
|
-
const spawnEnv = {
|
|
87
|
-
...process.env,
|
|
88
|
-
SUPABASE_URL: supabaseUrl,
|
|
89
|
-
SUPABASE_ANON_KEY: supabaseAnonKey,
|
|
90
|
-
SUPABASE_SERVICE_ROLE_KEY: supabaseServiceRoleKey,
|
|
91
|
-
MCP_API_KEY: mcpApiKey,
|
|
92
|
-
SUPABASE_PUBLISHABLE_KEY: process.env.SUPABASE_PUBLISHABLE_KEY,
|
|
93
|
-
SUPABASE_SECRET_KEY: process.env.SUPABASE_SECRET_KEY,
|
|
94
|
-
};
|
|
95
|
-
const MaxRestarts = 3;
|
|
96
|
-
const RestartDelaysMs = [2000, 4000, 8000];
|
|
97
|
-
const spawnSupabase = () => new Promise((resolve) => {
|
|
98
|
-
const child = spawn('pnpm', ['dlx', 'supabase-mcp'], { stdio: 'inherit', env: spawnEnv });
|
|
99
|
-
child.on('error', (error) => {
|
|
100
|
-
logger.error(`Failed to start Supabase MCP server: ${error.message}`);
|
|
101
|
-
resolve(ErrorCode.CONFIG_ERROR);
|
|
102
|
-
});
|
|
103
|
-
child.on('exit', (code) => resolve(code ?? 0));
|
|
104
|
-
process.on('SIGINT', () => {
|
|
105
|
-
child.kill('SIGINT');
|
|
106
|
-
});
|
|
107
|
-
process.on('SIGTERM', () => {
|
|
108
|
-
child.kill('SIGTERM');
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
let attempt = 0;
|
|
112
|
-
while (true) {
|
|
113
|
-
const code = await spawnSupabase();
|
|
114
|
-
if (!withRestart || attempt >= MaxRestarts) {
|
|
115
|
-
process.exit(code ?? 0);
|
|
116
|
-
}
|
|
117
|
-
const delay = RestartDelaysMs[attempt] ?? 8000;
|
|
118
|
-
attempt++;
|
|
119
|
-
logger.warning(` Server exited (code ${code}). Restarting in ${delay / 1000}s (attempt ${attempt}/${MaxRestarts})...`);
|
|
120
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
125
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Main function
|
|
130
|
-
*/
|
|
131
|
-
async function main() {
|
|
132
|
-
try {
|
|
133
|
-
if (!(await checkMcpLicense())) {
|
|
134
|
-
process.exit(ErrorCode.CONFIG_ERROR);
|
|
135
|
-
}
|
|
136
|
-
await startSupabaseMCP();
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
140
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
main();
|
|
144
|
-
//# sourceMappingURL=supabase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../../../../src/servers/supabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../../../src/servers/vercel.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|