@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
package/src/servers/supabase.ts
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Supabase MCP Server Launcher
|
|
5
|
-
*
|
|
6
|
-
* Starts the Supabase MCP server for AI-powered database management.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* pnpm mcp:supabase
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { spawn } from 'node:child_process'
|
|
13
|
-
import { randomBytes } from 'node:crypto'
|
|
14
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts'
|
|
15
|
-
import { ErrorCode } from '@revealui/scripts/errors'
|
|
16
|
-
import { config } from 'dotenv'
|
|
17
|
-
import { checkMcpLicense } from '../index.js'
|
|
18
|
-
|
|
19
|
-
const logger = createLogger()
|
|
20
|
-
|
|
21
|
-
// Load environment variables
|
|
22
|
-
config()
|
|
23
|
-
|
|
24
|
-
async function startSupabaseMCP() {
|
|
25
|
-
try {
|
|
26
|
-
await getProjectRoot(import.meta.url)
|
|
27
|
-
// Supabase MCP uses local package supabase-mcp
|
|
28
|
-
// Verified: Package expects SUPABASE_URL, SUPABASE_ANON_KEY, and SUPABASE_SERVICE_ROLE_KEY
|
|
29
|
-
// Source: node_modules/supabase-mcp/dist/esm/config.js and services/supabase.js
|
|
30
|
-
//
|
|
31
|
-
// NEW API KEY SUPPORT (2025):
|
|
32
|
-
// Supabase introduced new API keys: sb_publishable_... (replaces anon) and sb_secret_... (replaces service_role)
|
|
33
|
-
// Legacy keys (anon/service_role JWT) still work but will be deprecated in Nov 2025
|
|
34
|
-
// The @supabase/supabase-js client accepts any key format, so we support both
|
|
35
|
-
// Reference: https://github.com/orgs/supabase/discussions/29260
|
|
36
|
-
const supabaseUrl = process.env.SUPABASE_URL
|
|
37
|
-
|
|
38
|
-
// Support both legacy and new API key formats
|
|
39
|
-
// New format: SUPABASE_PUBLISHABLE_KEY (sb_publishable_...) or SUPABASE_ANON_KEY (legacy)
|
|
40
|
-
// New format: SUPABASE_SECRET_KEY (sb_secret_...) or SUPABASE_SERVICE_ROLE_KEY (legacy)
|
|
41
|
-
const supabaseAnonKey = process.env.SUPABASE_PUBLISHABLE_KEY || process.env.SUPABASE_ANON_KEY
|
|
42
|
-
const supabaseServiceRoleKey =
|
|
43
|
-
process.env.SUPABASE_SECRET_KEY || process.env.SUPABASE_SERVICE_ROLE_KEY
|
|
44
|
-
|
|
45
|
-
if (!supabaseUrl) {
|
|
46
|
-
logger.error('SUPABASE_URL is required')
|
|
47
|
-
logger.info(' Get your credentials from: https://supabase.com/dashboard → Settings → API')
|
|
48
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!supabaseAnonKey) {
|
|
52
|
-
logger.error('SUPABASE_ANON_KEY or SUPABASE_PUBLISHABLE_KEY is required')
|
|
53
|
-
logger.info(' Legacy: SUPABASE_ANON_KEY (anon JWT key)')
|
|
54
|
-
logger.info(' New: SUPABASE_PUBLISHABLE_KEY (sb_publishable_... key)')
|
|
55
|
-
logger.info(' Get from: https://supabase.com/dashboard → Settings → API')
|
|
56
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (!supabaseServiceRoleKey) {
|
|
60
|
-
logger.error('SUPABASE_SERVICE_ROLE_KEY or SUPABASE_SECRET_KEY is required')
|
|
61
|
-
logger.info(' Legacy: SUPABASE_SERVICE_ROLE_KEY (service_role JWT key)')
|
|
62
|
-
logger.info(' New: SUPABASE_SECRET_KEY (sb_secret_... key)')
|
|
63
|
-
logger.info(' Note: Required for MCP server operations (full database access)')
|
|
64
|
-
logger.info(' Get from: https://supabase.com/dashboard → Settings → API')
|
|
65
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// MCP_API_KEY is required by supabase-mcp package for server authentication
|
|
69
|
-
// This is NOT a Supabase key - it's a key you generate yourself to secure the MCP server
|
|
70
|
-
let mcpApiKey = process.env.MCP_API_KEY
|
|
71
|
-
if (!mcpApiKey) {
|
|
72
|
-
// Auto-generate a secure random key if not provided
|
|
73
|
-
mcpApiKey = randomBytes(32).toString('hex')
|
|
74
|
-
logger.warning('⚠️ MCP_API_KEY not set - auto-generated a secure key')
|
|
75
|
-
logger.warning(' Add this to your .env file to persist it:')
|
|
76
|
-
logger.warning(` MCP_API_KEY=${mcpApiKey}`)
|
|
77
|
-
logger.warning(' (This key secures your MCP server endpoint)')
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const withRestart = process.argv.includes('--restart')
|
|
81
|
-
logger.header('Starting Supabase MCP Server (Local)')
|
|
82
|
-
logger.info(` Supabase URL: ${supabaseUrl}`)
|
|
83
|
-
if (withRestart) logger.info(' Restart mode: enabled (up to 3 attempts)')
|
|
84
|
-
|
|
85
|
-
// Detect key format for logging
|
|
86
|
-
const usingNewKeys = process.env.SUPABASE_PUBLISHABLE_KEY || process.env.SUPABASE_SECRET_KEY
|
|
87
|
-
if (usingNewKeys) {
|
|
88
|
-
logger.info(' Using new API key format (sb_publishable_/sb_secret_)')
|
|
89
|
-
} else {
|
|
90
|
-
logger.info(' Using legacy API key format (anon/service_role JWT)')
|
|
91
|
-
logger.warning(' ⚠️ Consider migrating to new keys before Nov 2025')
|
|
92
|
-
logger.info(' See: https://github.com/orgs/supabase/discussions/29260')
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Build env once — used for all spawn attempts
|
|
96
|
-
// Package validates: SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, MCP_API_KEY
|
|
97
|
-
// We map new keys to legacy variable names for package compatibility
|
|
98
|
-
const spawnEnv = {
|
|
99
|
-
...process.env,
|
|
100
|
-
SUPABASE_URL: supabaseUrl,
|
|
101
|
-
SUPABASE_ANON_KEY: supabaseAnonKey,
|
|
102
|
-
SUPABASE_SERVICE_ROLE_KEY: supabaseServiceRoleKey,
|
|
103
|
-
MCP_API_KEY: mcpApiKey,
|
|
104
|
-
SUPABASE_PUBLISHABLE_KEY: process.env.SUPABASE_PUBLISHABLE_KEY,
|
|
105
|
-
SUPABASE_SECRET_KEY: process.env.SUPABASE_SECRET_KEY,
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const MaxRestarts = 3
|
|
109
|
-
const RestartDelaysMs = [2000, 4000, 8000]
|
|
110
|
-
|
|
111
|
-
const spawnSupabase = (): Promise<number | null> =>
|
|
112
|
-
new Promise((resolve) => {
|
|
113
|
-
const child = spawn('pnpm', ['dlx', 'supabase-mcp'], { stdio: 'inherit', env: spawnEnv })
|
|
114
|
-
child.on('error', (error) => {
|
|
115
|
-
logger.error(`Failed to start Supabase MCP server: ${error.message}`)
|
|
116
|
-
resolve(ErrorCode.CONFIG_ERROR)
|
|
117
|
-
})
|
|
118
|
-
child.on('exit', (code) => resolve(code ?? 0))
|
|
119
|
-
process.on('SIGINT', () => {
|
|
120
|
-
child.kill('SIGINT')
|
|
121
|
-
})
|
|
122
|
-
process.on('SIGTERM', () => {
|
|
123
|
-
child.kill('SIGTERM')
|
|
124
|
-
})
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
let attempt = 0
|
|
128
|
-
while (true) {
|
|
129
|
-
const code = await spawnSupabase()
|
|
130
|
-
if (!withRestart || attempt >= MaxRestarts) {
|
|
131
|
-
process.exit(code ?? 0)
|
|
132
|
-
}
|
|
133
|
-
const delay = RestartDelaysMs[attempt] ?? 8000
|
|
134
|
-
attempt++
|
|
135
|
-
logger.warning(
|
|
136
|
-
` Server exited (code ${code}). Restarting in ${delay / 1000}s (attempt ${attempt}/${MaxRestarts})...`,
|
|
137
|
-
)
|
|
138
|
-
await new Promise((resolve) => setTimeout(resolve, delay))
|
|
139
|
-
}
|
|
140
|
-
} catch (error) {
|
|
141
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`)
|
|
142
|
-
process.exit(ErrorCode.EXECUTION_ERROR)
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Main function
|
|
148
|
-
*/
|
|
149
|
-
async function main() {
|
|
150
|
-
try {
|
|
151
|
-
if (!(await checkMcpLicense())) {
|
|
152
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
153
|
-
}
|
|
154
|
-
await startSupabaseMCP()
|
|
155
|
-
} catch (error) {
|
|
156
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`)
|
|
157
|
-
process.exit(ErrorCode.EXECUTION_ERROR)
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
main()
|
package/src/servers/vercel.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Vercel MCP Server Launcher
|
|
5
|
-
*
|
|
6
|
-
* Starts the Vercel MCP server for AI-powered Vercel management.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* pnpm mcp:vercel
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { spawn } from 'node:child_process'
|
|
13
|
-
import { createLogger, getProjectRoot } from '@revealui/scripts'
|
|
14
|
-
import { ErrorCode } from '@revealui/scripts/errors'
|
|
15
|
-
import { config } from 'dotenv'
|
|
16
|
-
import { checkMcpLicense } from '../index.js'
|
|
17
|
-
|
|
18
|
-
const logger = createLogger()
|
|
19
|
-
|
|
20
|
-
// Load environment variables
|
|
21
|
-
config()
|
|
22
|
-
|
|
23
|
-
const MAX_RESTARTS = 3
|
|
24
|
-
const RESTART_DELAYS_MS = [2000, 4000, 8000]
|
|
25
|
-
|
|
26
|
-
async function spawnVercel(vercelApiKey: string): Promise<number | null> {
|
|
27
|
-
return new Promise((resolve) => {
|
|
28
|
-
// Pass credentials via environment only — never as CLI arguments (visible in ps aux).
|
|
29
|
-
const child = spawn('pnpm', ['exec', 'vercel-mcp'], {
|
|
30
|
-
stdio: 'inherit',
|
|
31
|
-
env: { ...process.env, VERCEL_API_KEY: vercelApiKey },
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
child.on('error', (error) => {
|
|
35
|
-
logger.error(`Failed to start Vercel MCP server: ${error.message}`)
|
|
36
|
-
resolve(ErrorCode.CONFIG_ERROR)
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
child.on('exit', (code) => resolve(code ?? 0))
|
|
40
|
-
|
|
41
|
-
process.on('SIGINT', () => {
|
|
42
|
-
child.kill('SIGINT')
|
|
43
|
-
})
|
|
44
|
-
process.on('SIGTERM', () => {
|
|
45
|
-
child.kill('SIGTERM')
|
|
46
|
-
})
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async function startVercelMCP() {
|
|
51
|
-
try {
|
|
52
|
-
await getProjectRoot(import.meta.url)
|
|
53
|
-
const vercelApiKey = process.env.VERCEL_API_KEY ?? process.env.VERCEL_TOKEN
|
|
54
|
-
|
|
55
|
-
if (!vercelApiKey) {
|
|
56
|
-
logger.error('VERCEL_API_KEY environment variable is required')
|
|
57
|
-
logger.info(' Get your token from: https://vercel.com/account/tokens')
|
|
58
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const withRestart = process.argv.includes('--restart')
|
|
62
|
-
logger.header('Starting Vercel MCP Server')
|
|
63
|
-
logger.info(` API Key: ${vercelApiKey.substring(0, 8)}...`)
|
|
64
|
-
if (withRestart) logger.info(' Restart mode: enabled (up to 3 attempts)')
|
|
65
|
-
|
|
66
|
-
let attempt = 0
|
|
67
|
-
while (true) {
|
|
68
|
-
const code = await spawnVercel(vercelApiKey)
|
|
69
|
-
if (!withRestart || attempt >= MAX_RESTARTS) {
|
|
70
|
-
process.exit(code ?? 0)
|
|
71
|
-
}
|
|
72
|
-
const delay = RESTART_DELAYS_MS[attempt] ?? 8000
|
|
73
|
-
attempt++
|
|
74
|
-
logger.warning(
|
|
75
|
-
` Server exited (code ${code}). Restarting in ${delay / 1000}s (attempt ${attempt}/${MAX_RESTARTS})...`,
|
|
76
|
-
)
|
|
77
|
-
await new Promise((resolve) => setTimeout(resolve, delay))
|
|
78
|
-
}
|
|
79
|
-
} catch (error) {
|
|
80
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`)
|
|
81
|
-
process.exit(ErrorCode.EXECUTION_ERROR)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Main function
|
|
87
|
-
*/
|
|
88
|
-
async function main() {
|
|
89
|
-
try {
|
|
90
|
-
if (!(await checkMcpLicense())) {
|
|
91
|
-
process.exit(ErrorCode.CONFIG_ERROR)
|
|
92
|
-
}
|
|
93
|
-
await startVercelMCP()
|
|
94
|
-
} catch (error) {
|
|
95
|
-
logger.error(`Script failed: ${error instanceof Error ? error.message : String(error)}`)
|
|
96
|
-
process.exit(ErrorCode.EXECUTION_ERROR)
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
main()
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Demo script to exercise Vultr Inference (chat + embeddings)
|
|
3
|
-
// Usage:
|
|
4
|
-
// Use ts-node or compile to JS. Example with ts-node:
|
|
5
|
-
// VULTR_API_KEY=your_key VULTR_MODEL=your-model-id ts-node packages/ai/scripts/test-vultr.ts
|
|
6
|
-
|
|
7
|
-
import { logger } from '@revealui/core/observability/logger'
|
|
8
|
-
import { checkMcpLicense } from '../index.js'
|
|
9
|
-
|
|
10
|
-
const KEY = process.env.VULTR_API_KEY
|
|
11
|
-
const MODEL = process.env.VULTR_MODEL
|
|
12
|
-
const BASE = process.env.VULTR_BASE_URL || 'https://api.vultrinference.com/v1'
|
|
13
|
-
|
|
14
|
-
if (!(KEY && MODEL)) {
|
|
15
|
-
logger.error(
|
|
16
|
-
'Missing VULTR_API_KEY or VULTR_MODEL environment variables',
|
|
17
|
-
new Error('Missing required environment variables'),
|
|
18
|
-
)
|
|
19
|
-
process.exit(1)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const headers = {
|
|
23
|
-
'Content-Type': 'application/json',
|
|
24
|
-
// biome-ignore lint/style/useNamingConvention: API field name
|
|
25
|
-
Authorization: `Bearer ${KEY}`,
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function chat(prompt: string) {
|
|
29
|
-
const body = {
|
|
30
|
-
model: MODEL,
|
|
31
|
-
messages: [{ role: 'user', content: prompt }],
|
|
32
|
-
max_tokens: 256,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const res = await fetch(`${BASE}/chat/completions`, {
|
|
36
|
-
method: 'POST',
|
|
37
|
-
headers,
|
|
38
|
-
body: JSON.stringify(body),
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
if (!res.ok) {
|
|
42
|
-
const err = await res.text().catch(() => res.statusText)
|
|
43
|
-
throw new Error(`Chat request failed: ${res.status} ${err}`)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const data = (await res.json()) as { choices?: unknown[] }
|
|
47
|
-
logger.info('Chat response', { data })
|
|
48
|
-
const choice = Array.isArray(data.choices)
|
|
49
|
-
? (data.choices[0] as { message?: { content: string }; text?: string } | undefined)
|
|
50
|
-
: undefined
|
|
51
|
-
const message = choice?.message
|
|
52
|
-
? choice.message
|
|
53
|
-
: choice?.text
|
|
54
|
-
? { content: choice.text }
|
|
55
|
-
: undefined
|
|
56
|
-
if (message) {
|
|
57
|
-
logger.info('Assistant output', {
|
|
58
|
-
content: typeof message.content === 'string' ? message.content : JSON.stringify(message),
|
|
59
|
-
})
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function embed(inputs: string | string[]) {
|
|
64
|
-
const body = {
|
|
65
|
-
model: MODEL,
|
|
66
|
-
input: Array.isArray(inputs) ? inputs : [inputs],
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const res = await fetch(`${BASE}/embeddings`, {
|
|
70
|
-
method: 'POST',
|
|
71
|
-
headers,
|
|
72
|
-
body: JSON.stringify(body),
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
if (!res.ok) {
|
|
76
|
-
const err = await res.text().catch(() => res.statusText)
|
|
77
|
-
throw new Error(`Embeddings request failed: ${res.status} ${err}`)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const data = await res.json()
|
|
81
|
-
logger.info('Embeddings response', { data })
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async function main() {
|
|
85
|
-
if (!(await checkMcpLicense())) {
|
|
86
|
-
process.exit(2)
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
await chat('What is the capital of France?')
|
|
90
|
-
await embed('This is a test embedding.')
|
|
91
|
-
} catch (err) {
|
|
92
|
-
logger.error('Error during demo', err instanceof Error ? err : new Error(String(err)))
|
|
93
|
-
process.exitCode = 2
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
await main()
|
package/tsconfig.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "./dist",
|
|
5
|
-
"declaration": true,
|
|
6
|
-
"declarationMap": true,
|
|
7
|
-
"sourceMap": true,
|
|
8
|
-
"noEmit": false
|
|
9
|
-
},
|
|
10
|
-
"include": ["src/**/*"],
|
|
11
|
-
"exclude": ["node_modules", "dist", "__tests__", "**/*.test.ts", "**/*.spec.ts"]
|
|
12
|
-
}
|
package/vitest.config.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vitest/config'
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
resolve: {
|
|
5
|
-
conditions: ['import', 'module', 'browser', 'default'],
|
|
6
|
-
},
|
|
7
|
-
test: {
|
|
8
|
-
globals: true,
|
|
9
|
-
environment: 'node',
|
|
10
|
-
include: ['__tests__/**/*.test.ts', 'src/**/*.test.ts'],
|
|
11
|
-
env: {
|
|
12
|
-
// Set NODE_ENV to 'test' to skip integration tests that require database setup
|
|
13
|
-
// Integration tests will check for TEST_DATABASE_URL and skip if not present
|
|
14
|
-
NODE_ENV: 'test',
|
|
15
|
-
},
|
|
16
|
-
coverage: {
|
|
17
|
-
provider: 'v8',
|
|
18
|
-
reporter: ['text', 'json', 'html', 'lcov'],
|
|
19
|
-
exclude: ['node_modules/', 'dist/', '**/*.test.ts', '**/__tests__/**'],
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|