@l4yercak3/cli 1.3.1 → 2.0.0-alpha.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/README.md +10 -220
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +37 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/platform.d.ts +161 -0
- package/dist/api/platform.d.ts.map +1 -0
- package/dist/api/platform.js +70 -0
- package/dist/api/platform.js.map +1 -0
- package/dist/bin/sevenlayers.d.ts +3 -0
- package/dist/bin/sevenlayers.d.ts.map +1 -0
- package/dist/bin/sevenlayers.js +198 -0
- package/dist/bin/sevenlayers.js.map +1 -0
- package/dist/commands/agent/catalog.d.ts +5 -0
- package/dist/commands/agent/catalog.d.ts.map +1 -0
- package/dist/commands/agent/catalog.js +142 -0
- package/dist/commands/agent/catalog.js.map +1 -0
- package/dist/commands/agent/drift.d.ts +5 -0
- package/dist/commands/agent/drift.d.ts.map +1 -0
- package/dist/commands/agent/drift.js +113 -0
- package/dist/commands/agent/drift.js.map +1 -0
- package/dist/commands/agent/init.d.ts +5 -0
- package/dist/commands/agent/init.d.ts.map +1 -0
- package/dist/commands/agent/init.js +75 -0
- package/dist/commands/agent/init.js.map +1 -0
- package/dist/commands/agent/permissions.d.ts +5 -0
- package/dist/commands/agent/permissions.d.ts.map +1 -0
- package/dist/commands/agent/permissions.js +88 -0
- package/dist/commands/agent/permissions.js.map +1 -0
- package/dist/commands/agent/runner.d.ts +14 -0
- package/dist/commands/agent/runner.d.ts.map +1 -0
- package/dist/commands/agent/runner.js +59 -0
- package/dist/commands/agent/runner.js.map +1 -0
- package/dist/commands/agent/shared.d.ts +13 -0
- package/dist/commands/agent/shared.d.ts.map +1 -0
- package/dist/commands/agent/shared.js +31 -0
- package/dist/commands/agent/shared.js.map +1 -0
- package/dist/commands/agent/template.d.ts +5 -0
- package/dist/commands/agent/template.d.ts.map +1 -0
- package/dist/commands/agent/template.js +104 -0
- package/dist/commands/agent/template.js.map +1 -0
- package/dist/commands/app/connect.d.ts +7 -0
- package/dist/commands/app/connect.d.ts.map +1 -0
- package/dist/commands/app/connect.js +12 -0
- package/dist/commands/app/connect.js.map +1 -0
- package/dist/commands/app/init.d.ts +7 -0
- package/dist/commands/app/init.d.ts.map +1 -0
- package/dist/commands/app/init.js +12 -0
- package/dist/commands/app/init.js.map +1 -0
- package/dist/commands/app/link.d.ts +3 -0
- package/dist/commands/app/link.d.ts.map +1 -0
- package/dist/commands/app/link.js +92 -0
- package/dist/commands/app/link.js.map +1 -0
- package/dist/commands/app/pages.d.ts +15 -0
- package/dist/commands/app/pages.d.ts.map +1 -0
- package/dist/commands/app/pages.js +180 -0
- package/dist/commands/app/pages.js.map +1 -0
- package/dist/commands/app/register.d.ts +3 -0
- package/dist/commands/app/register.d.ts.map +1 -0
- package/dist/commands/app/register.js +120 -0
- package/dist/commands/app/register.js.map +1 -0
- package/dist/commands/app/remote.d.ts +14 -0
- package/dist/commands/app/remote.d.ts.map +1 -0
- package/dist/commands/app/remote.js +44 -0
- package/dist/commands/app/remote.js.map +1 -0
- package/dist/commands/app/setup.d.ts +3 -0
- package/dist/commands/app/setup.d.ts.map +1 -0
- package/dist/commands/app/setup.js +299 -0
- package/dist/commands/app/setup.js.map +1 -0
- package/dist/commands/app/shared.d.ts +9 -0
- package/dist/commands/app/shared.d.ts.map +1 -0
- package/dist/commands/app/shared.js +122 -0
- package/dist/commands/app/shared.js.map +1 -0
- package/dist/commands/app/sync.d.ts +7 -0
- package/dist/commands/app/sync.d.ts.map +1 -0
- package/dist/commands/app/sync.js +107 -0
- package/dist/commands/app/sync.js.map +1 -0
- package/dist/commands/booking/check.d.ts +3 -0
- package/dist/commands/booking/check.d.ts.map +1 -0
- package/dist/commands/booking/check.js +68 -0
- package/dist/commands/booking/check.js.map +1 -0
- package/dist/commands/booking/setup.d.ts +3 -0
- package/dist/commands/booking/setup.d.ts.map +1 -0
- package/dist/commands/booking/setup.js +95 -0
- package/dist/commands/booking/setup.js.map +1 -0
- package/dist/commands/booking/shared.d.ts +31 -0
- package/dist/commands/booking/shared.d.ts.map +1 -0
- package/dist/commands/booking/shared.js +112 -0
- package/dist/commands/booking/shared.js.map +1 -0
- package/dist/commands/booking/smoke.d.ts +3 -0
- package/dist/commands/booking/smoke.d.ts.map +1 -0
- package/dist/commands/booking/smoke.js +101 -0
- package/dist/commands/booking/smoke.js.map +1 -0
- package/dist/commands/cms/bind.d.ts +3 -0
- package/dist/commands/cms/bind.d.ts.map +1 -0
- package/dist/commands/cms/bind.js +212 -0
- package/dist/commands/cms/bind.js.map +1 -0
- package/dist/commands/cms/content.d.ts +40 -0
- package/dist/commands/cms/content.d.ts.map +1 -0
- package/dist/commands/cms/content.js +169 -0
- package/dist/commands/cms/content.js.map +1 -0
- package/dist/commands/cms/doctor.d.ts +3 -0
- package/dist/commands/cms/doctor.d.ts.map +1 -0
- package/dist/commands/cms/doctor.js +69 -0
- package/dist/commands/cms/doctor.js.map +1 -0
- package/dist/commands/cms/migrate.d.ts +3 -0
- package/dist/commands/cms/migrate.d.ts.map +1 -0
- package/dist/commands/cms/migrate.js +78 -0
- package/dist/commands/cms/migrate.js.map +1 -0
- package/dist/commands/cms/registry.d.ts +3 -0
- package/dist/commands/cms/registry.d.ts.map +1 -0
- package/dist/commands/cms/registry.js +161 -0
- package/dist/commands/cms/registry.js.map +1 -0
- package/dist/commands/cms/seed.d.ts +3 -0
- package/dist/commands/cms/seed.d.ts.map +1 -0
- package/dist/commands/cms/seed.js +102 -0
- package/dist/commands/cms/seed.js.map +1 -0
- package/dist/commands/cms/shared.d.ts +22 -0
- package/dist/commands/cms/shared.d.ts.map +1 -0
- package/dist/commands/cms/shared.js +82 -0
- package/dist/commands/cms/shared.js.map +1 -0
- package/dist/commands/doctor/target.d.ts +3 -0
- package/dist/commands/doctor/target.d.ts.map +1 -0
- package/dist/commands/doctor/target.js +46 -0
- package/dist/commands/doctor/target.js.map +1 -0
- package/dist/commands/env/list.d.ts +3 -0
- package/dist/commands/env/list.d.ts.map +1 -0
- package/dist/commands/env/list.js +28 -0
- package/dist/commands/env/list.js.map +1 -0
- package/dist/commands/env/set.d.ts +3 -0
- package/dist/commands/env/set.d.ts.map +1 -0
- package/dist/commands/env/set.js +36 -0
- package/dist/commands/env/set.js.map +1 -0
- package/dist/commands/env/use.d.ts +3 -0
- package/dist/commands/env/use.d.ts.map +1 -0
- package/dist/commands/env/use.js +15 -0
- package/dist/commands/env/use.js.map +1 -0
- package/dist/commands/legacy/connect.d.ts +3 -0
- package/dist/commands/legacy/connect.d.ts.map +1 -0
- package/dist/commands/legacy/connect.js +8 -0
- package/dist/commands/legacy/connect.js.map +1 -0
- package/dist/commands/legacy/pages.d.ts +3 -0
- package/dist/commands/legacy/pages.d.ts.map +1 -0
- package/dist/commands/legacy/pages.js +16 -0
- package/dist/commands/legacy/pages.js.map +1 -0
- package/dist/commands/legacy/spread.d.ts +3 -0
- package/dist/commands/legacy/spread.d.ts.map +1 -0
- package/dist/commands/legacy/spread.js +8 -0
- package/dist/commands/legacy/spread.js.map +1 -0
- package/dist/commands/legacy/sync.d.ts +3 -0
- package/dist/commands/legacy/sync.d.ts.map +1 -0
- package/dist/commands/legacy/sync.js +8 -0
- package/dist/commands/legacy/sync.js.map +1 -0
- package/dist/config/env-diff.d.ts +10 -0
- package/dist/config/env-diff.d.ts.map +1 -0
- package/dist/config/env-diff.js +24 -0
- package/dist/config/env-diff.js.map +1 -0
- package/dist/config/env-parser.d.ts +20 -0
- package/dist/config/env-parser.d.ts.map +1 -0
- package/dist/config/env-parser.js +70 -0
- package/dist/config/env-parser.js.map +1 -0
- package/dist/config/env-writer.d.ts +22 -0
- package/dist/config/env-writer.d.ts.map +1 -0
- package/dist/config/env-writer.js +172 -0
- package/dist/config/env-writer.js.map +1 -0
- package/dist/config/profile-store.d.ts +29 -0
- package/dist/config/profile-store.d.ts.map +1 -0
- package/dist/config/profile-store.js +257 -0
- package/dist/config/profile-store.js.map +1 -0
- package/dist/core/args.d.ts +11 -0
- package/dist/core/args.d.ts.map +1 -0
- package/dist/core/args.js +106 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/colors.d.ts +6 -0
- package/dist/core/colors.d.ts.map +1 -0
- package/dist/core/colors.js +29 -0
- package/dist/core/colors.js.map +1 -0
- package/dist/safety/target-guard.d.ts +16 -0
- package/dist/safety/target-guard.d.ts.map +1 -0
- package/dist/safety/target-guard.js +55 -0
- package/dist/safety/target-guard.js.map +1 -0
- package/dist/testing/booking-smoke.d.ts +17 -0
- package/dist/testing/booking-smoke.d.ts.map +1 -0
- package/dist/testing/booking-smoke.js +43 -0
- package/dist/testing/booking-smoke.js.map +1 -0
- package/dist/tests/agent-commands.test.d.ts +2 -0
- package/dist/tests/agent-commands.test.d.ts.map +1 -0
- package/dist/tests/agent-commands.test.js +180 -0
- package/dist/tests/agent-commands.test.js.map +1 -0
- package/dist/tests/agent-governance.test.d.ts +2 -0
- package/dist/tests/agent-governance.test.d.ts.map +1 -0
- package/dist/tests/agent-governance.test.js +233 -0
- package/dist/tests/agent-governance.test.js.map +1 -0
- package/dist/tests/app-commands.test.d.ts +2 -0
- package/dist/tests/app-commands.test.d.ts.map +1 -0
- package/dist/tests/app-commands.test.js +462 -0
- package/dist/tests/app-commands.test.js.map +1 -0
- package/dist/tests/booking-commands.test.d.ts +2 -0
- package/dist/tests/booking-commands.test.d.ts.map +1 -0
- package/dist/tests/booking-commands.test.js +204 -0
- package/dist/tests/booking-commands.test.js.map +1 -0
- package/dist/tests/booking-smoke.test.d.ts +2 -0
- package/dist/tests/booking-smoke.test.d.ts.map +1 -0
- package/dist/tests/booking-smoke.test.js +183 -0
- package/dist/tests/booking-smoke.test.js.map +1 -0
- package/dist/tests/cms-commands.test.d.ts +2 -0
- package/dist/tests/cms-commands.test.d.ts.map +1 -0
- package/dist/tests/cms-commands.test.js +254 -0
- package/dist/tests/cms-commands.test.js.map +1 -0
- package/dist/tests/cms-ops.test.d.ts +2 -0
- package/dist/tests/cms-ops.test.d.ts.map +1 -0
- package/dist/tests/cms-ops.test.js +125 -0
- package/dist/tests/cms-ops.test.js.map +1 -0
- package/dist/tests/env-writer.test.d.ts +2 -0
- package/dist/tests/env-writer.test.d.ts.map +1 -0
- package/dist/tests/env-writer.test.js +90 -0
- package/dist/tests/env-writer.test.js.map +1 -0
- package/dist/tests/profile-store.test.d.ts +2 -0
- package/dist/tests/profile-store.test.d.ts.map +1 -0
- package/dist/tests/profile-store.test.js +88 -0
- package/dist/tests/profile-store.test.js.map +1 -0
- package/dist/tests/target-guard.test.d.ts +2 -0
- package/dist/tests/target-guard.test.d.ts.map +1 -0
- package/dist/tests/target-guard.test.js +132 -0
- package/dist/tests/target-guard.test.js.map +1 -0
- package/dist/ui/logo.d.ts +2 -0
- package/dist/ui/logo.d.ts.map +1 -0
- package/dist/ui/logo.js +22 -0
- package/dist/ui/logo.js.map +1 -0
- package/package.json +17 -53
- package/.claude/settings.local.json +0 -36
- package/.cursor/rules.md +0 -203
- package/.eslintrc.js +0 -31
- package/CLAUDE.md +0 -100
- package/bin/cli.js +0 -116
- package/docs/ADDING_FRAMEWORK_DETECTORS.md +0 -391
- package/docs/ADDING_NEW_PROJECT_TYPE.md +0 -156
- package/docs/ARCHITECTURE_RELATIONSHIPS.md +0 -411
- package/docs/CLI_AUTHENTICATION.md +0 -214
- package/docs/CLI_PAGE_DETECTION_REQUIREMENTS.md +0 -519
- package/docs/CRM-PIPELINES-SEQUENCES-SPEC.md +0 -429
- package/docs/DETECTOR_ARCHITECTURE.md +0 -326
- package/docs/DEVELOPMENT.md +0 -194
- package/docs/IMPLEMENTATION_PHASES.md +0 -468
- package/docs/INTEGRATION_PATHS_ARCHITECTURE.md +0 -1543
- package/docs/OAUTH_CLARIFICATION.md +0 -258
- package/docs/OAUTH_SETUP_GUIDE_TEMPLATE.md +0 -211
- package/docs/PHASE_0_PROGRESS.md +0 -120
- package/docs/PHASE_1_COMPLETE.md +0 -366
- package/docs/PHASE_SUMMARY.md +0 -149
- package/docs/PLAN.md +0 -511
- package/docs/README.md +0 -56
- package/docs/STRIPE_INTEGRATION.md +0 -447
- package/docs/SUMMARY.md +0 -230
- package/docs/UPDATED_PLAN.md +0 -447
- package/docs/mcp_server/MCP_EXTENSION_GUIDE.md +0 -1313
- package/docs/mcp_server/MCP_SERVER_ARCHITECTURE.md +0 -1481
- package/docs/mcp_server/applicationOntology.ts +0 -817
- package/docs/mcp_server/cliApplications.ts +0 -639
- package/docs/mcp_server/crmOntology.ts +0 -1063
- package/docs/mcp_server/eventOntology.ts +0 -1183
- package/docs/mcp_server/formsOntology.ts +0 -1401
- package/docs/mcp_server/ontologySchemas.ts +0 -185
- package/docs/mcp_server/schema.ts +0 -250
- package/docs/microsass_production_machine/CLI_API_REFERENCE.md +0 -1197
- package/docs/microsass_production_machine/CLI_PRODUCT_VISION.md +0 -676
- package/docs/microsass_production_machine/CLI_REQUIREMENTS.md +0 -606
- package/docs/microsass_production_machine/CONNECTED_APPLICATIONS_SPEC.md +0 -390
- package/docs/microsass_production_machine/IMPLEMENTATION_ROADMAP.md +0 -725
- package/docs/microsass_production_machine/OBJECT_MAPPINGS.md +0 -808
- package/docs/microsass_production_machine/REFERENCE_IMPLEMENTATION.md +0 -532
- package/src/api/backend-client.js +0 -449
- package/src/commands/api-keys.js +0 -119
- package/src/commands/connect.js +0 -243
- package/src/commands/login.js +0 -332
- package/src/commands/logout.js +0 -30
- package/src/commands/mcp-server.js +0 -85
- package/src/commands/mcp-setup.js +0 -686
- package/src/commands/pages.js +0 -317
- package/src/commands/scaffold.js +0 -409
- package/src/commands/spread.js +0 -861
- package/src/commands/status.js +0 -62
- package/src/commands/sync.js +0 -169
- package/src/commands/upgrade.js +0 -48
- package/src/config/config-manager.js +0 -206
- package/src/detectors/api-client-detector.js +0 -85
- package/src/detectors/base-detector.js +0 -77
- package/src/detectors/database-detector.js +0 -245
- package/src/detectors/expo-detector.js +0 -166
- package/src/detectors/github-detector.js +0 -74
- package/src/detectors/index.js +0 -106
- package/src/detectors/mapping-suggestor.js +0 -119
- package/src/detectors/model-detector.js +0 -318
- package/src/detectors/nextjs-detector.js +0 -139
- package/src/detectors/oauth-detector.js +0 -122
- package/src/detectors/page-detector.js +0 -480
- package/src/detectors/registry.js +0 -121
- package/src/generators/api-client-generator.js +0 -223
- package/src/generators/api-only/client.js +0 -683
- package/src/generators/api-only/index.js +0 -96
- package/src/generators/api-only/types.js +0 -618
- package/src/generators/api-only/webhooks.js +0 -377
- package/src/generators/env-generator.js +0 -191
- package/src/generators/expo-auth-generator.js +0 -1009
- package/src/generators/gitignore-generator.js +0 -92
- package/src/generators/index.js +0 -166
- package/src/generators/manifest-generator.js +0 -154
- package/src/generators/mcp-guide-generator.js +0 -256
- package/src/generators/nextauth-generator.js +0 -247
- package/src/generators/oauth-guide-generator.js +0 -277
- package/src/generators/quickstart/components/index.js +0 -1699
- package/src/generators/quickstart/components-mobile/index.js +0 -1440
- package/src/generators/quickstart/database/convex.js +0 -1257
- package/src/generators/quickstart/database/index.js +0 -34
- package/src/generators/quickstart/database/supabase.js +0 -1132
- package/src/generators/quickstart/hooks/index.js +0 -1065
- package/src/generators/quickstart/index.js +0 -191
- package/src/generators/quickstart/pages/index.js +0 -1466
- package/src/generators/quickstart/screens/index.js +0 -1498
- package/src/logo.js +0 -116
- package/src/mcp/auth.js +0 -127
- package/src/mcp/registry/domains/applications.js +0 -516
- package/src/mcp/registry/domains/benefits.js +0 -798
- package/src/mcp/registry/domains/codegen.js +0 -894
- package/src/mcp/registry/domains/core.js +0 -324
- package/src/mcp/registry/domains/crm.js +0 -591
- package/src/mcp/registry/domains/events.js +0 -649
- package/src/mcp/registry/domains/forms.js +0 -696
- package/src/mcp/registry/index.js +0 -164
- package/src/mcp/server.js +0 -116
- package/src/utils/file-utils.js +0 -117
- package/src/utils/init-helpers.js +0 -243
- package/src/utils/prompt-utils.js +0 -195
- package/templates/CLAUDE.md +0 -86
- package/tests/api-client-detector.test.js +0 -214
- package/tests/api-client-generator.test.js +0 -176
- package/tests/backend-client.test.js +0 -640
- package/tests/base-detector.test.js +0 -101
- package/tests/commands/login.test.js +0 -143
- package/tests/commands/logout.test.js +0 -84
- package/tests/commands/status.test.js +0 -167
- package/tests/config-manager.test.js +0 -321
- package/tests/database-detector.test.js +0 -221
- package/tests/detector-index.test.js +0 -209
- package/tests/detector-registry.test.js +0 -93
- package/tests/env-generator.test.js +0 -278
- package/tests/expo-detector.test.js +0 -263
- package/tests/file-utils.test.js +0 -194
- package/tests/generators-index.test.js +0 -454
- package/tests/github-detector.test.js +0 -145
- package/tests/gitignore-generator.test.js +0 -109
- package/tests/logo.test.js +0 -96
- package/tests/nextauth-generator.test.js +0 -255
- package/tests/nextjs-detector.test.js +0 -235
- package/tests/oauth-detector.test.js +0 -264
- package/tests/oauth-guide-generator.test.js +0 -273
- package/tests/page-detector.test.js +0 -371
|
@@ -1,686 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Setup Command
|
|
3
|
-
*
|
|
4
|
-
* Configures MCP clients to use the L4YERCAK3 MCP server.
|
|
5
|
-
* Supports Claude Code CLI, Claude Desktop, and other MCP-compatible clients.
|
|
6
|
-
*
|
|
7
|
-
* @module commands/mcp-setup
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const fs = require('fs');
|
|
11
|
-
const path = require('path');
|
|
12
|
-
const os = require('os');
|
|
13
|
-
const { execSync } = require('child_process');
|
|
14
|
-
const chalk = require('chalk');
|
|
15
|
-
const inquirer = require('inquirer');
|
|
16
|
-
const configManager = require('../config/config-manager');
|
|
17
|
-
const backendClient = require('../api/backend-client');
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Check if Claude CLI is installed
|
|
21
|
-
*/
|
|
22
|
-
function isClaudeInstalled() {
|
|
23
|
-
try {
|
|
24
|
-
execSync('claude --version', { stdio: 'pipe' });
|
|
25
|
-
return true;
|
|
26
|
-
} catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Check if MCP server is already configured in Claude
|
|
33
|
-
*/
|
|
34
|
-
function isMcpConfigured() {
|
|
35
|
-
try {
|
|
36
|
-
const result = execSync('claude mcp list', {
|
|
37
|
-
stdio: 'pipe',
|
|
38
|
-
encoding: 'utf8'
|
|
39
|
-
});
|
|
40
|
-
return result.includes('l4yercak3');
|
|
41
|
-
} catch {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Configure Claude MCP with l4yercak3 server
|
|
48
|
-
*/
|
|
49
|
-
async function configureMcp(scope = 'user') {
|
|
50
|
-
const scopeFlag = scope === 'project' ? '--scope project' : '';
|
|
51
|
-
const command = `claude mcp add l4yercak3 ${scopeFlag} -- npx @l4yercak3/cli mcp-server`.trim();
|
|
52
|
-
|
|
53
|
-
try {
|
|
54
|
-
execSync(command, { stdio: 'inherit' });
|
|
55
|
-
return true;
|
|
56
|
-
} catch (error) {
|
|
57
|
-
console.error(chalk.red(`Failed to configure MCP: ${error.message}`));
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Remove existing MCP configuration from Claude Code
|
|
64
|
-
*/
|
|
65
|
-
function removeMcpConfig() {
|
|
66
|
-
try {
|
|
67
|
-
execSync('claude mcp remove l4yercak3', { stdio: 'pipe' });
|
|
68
|
-
return true;
|
|
69
|
-
} catch {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get Claude Desktop config path based on platform
|
|
76
|
-
*/
|
|
77
|
-
function getClaudeDesktopConfigPath() {
|
|
78
|
-
const platform = os.platform();
|
|
79
|
-
const home = os.homedir();
|
|
80
|
-
|
|
81
|
-
if (platform === 'darwin') {
|
|
82
|
-
return path.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
83
|
-
} else if (platform === 'win32') {
|
|
84
|
-
return path.join(process.env.APPDATA || home, 'Claude', 'claude_desktop_config.json');
|
|
85
|
-
} else {
|
|
86
|
-
// Linux
|
|
87
|
-
return path.join(home, '.config', 'Claude', 'claude_desktop_config.json');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Get the full path to npx executable
|
|
93
|
-
* Claude Desktop needs absolute paths since it doesn't inherit shell PATH
|
|
94
|
-
*/
|
|
95
|
-
function getNpxPath() {
|
|
96
|
-
try {
|
|
97
|
-
const npxPath = execSync('which npx', { stdio: 'pipe', encoding: 'utf8' }).trim();
|
|
98
|
-
return npxPath || 'npx';
|
|
99
|
-
} catch {
|
|
100
|
-
// Fallback to common locations
|
|
101
|
-
const commonPaths = [
|
|
102
|
-
'/usr/local/bin/npx',
|
|
103
|
-
'/opt/homebrew/bin/npx',
|
|
104
|
-
'/usr/bin/npx',
|
|
105
|
-
path.join(os.homedir(), '.nvm/versions/node', 'current', 'bin', 'npx'),
|
|
106
|
-
];
|
|
107
|
-
|
|
108
|
-
for (const p of commonPaths) {
|
|
109
|
-
if (fs.existsSync(p)) {
|
|
110
|
-
return p;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return 'npx'; // Last resort fallback
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Get the full path to l4yercak3 CLI if globally installed
|
|
120
|
-
* Returns null if not found
|
|
121
|
-
*/
|
|
122
|
-
function getL4yercak3Path() {
|
|
123
|
-
try {
|
|
124
|
-
const cliPath = execSync('which l4yercak3', { stdio: 'pipe', encoding: 'utf8' }).trim();
|
|
125
|
-
return cliPath || null;
|
|
126
|
-
} catch {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Get the best command configuration for Claude Desktop
|
|
133
|
-
* Prefers globally installed l4yercak3 over npx for reliability
|
|
134
|
-
*/
|
|
135
|
-
function getClaudeDesktopCommand() {
|
|
136
|
-
const l4yercak3Path = getL4yercak3Path();
|
|
137
|
-
|
|
138
|
-
if (l4yercak3Path) {
|
|
139
|
-
// Use globally installed CLI directly (more reliable)
|
|
140
|
-
return {
|
|
141
|
-
command: l4yercak3Path,
|
|
142
|
-
args: ['mcp-server'],
|
|
143
|
-
description: `${l4yercak3Path} mcp-server`
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Fall back to npx
|
|
148
|
-
const npxPath = getNpxPath();
|
|
149
|
-
return {
|
|
150
|
-
command: npxPath,
|
|
151
|
-
args: ['@l4yercak3/cli', 'mcp-server'],
|
|
152
|
-
description: `${npxPath} @l4yercak3/cli mcp-server`
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Check if Claude Desktop config exists
|
|
158
|
-
*/
|
|
159
|
-
function hasClaudeDesktopConfig() {
|
|
160
|
-
return fs.existsSync(getClaudeDesktopConfigPath());
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Configure Claude Desktop with l4yercak3 MCP server
|
|
165
|
-
*/
|
|
166
|
-
function configureClaudeDesktop() {
|
|
167
|
-
const configPath = getClaudeDesktopConfigPath();
|
|
168
|
-
let config = { mcpServers: {} };
|
|
169
|
-
|
|
170
|
-
// Read existing config if it exists
|
|
171
|
-
if (fs.existsSync(configPath)) {
|
|
172
|
-
try {
|
|
173
|
-
const content = fs.readFileSync(configPath, 'utf8');
|
|
174
|
-
config = JSON.parse(content);
|
|
175
|
-
if (!config.mcpServers) {
|
|
176
|
-
config.mcpServers = {};
|
|
177
|
-
}
|
|
178
|
-
} catch {
|
|
179
|
-
// If parsing fails, start fresh but preserve the file structure
|
|
180
|
-
config = { mcpServers: {} };
|
|
181
|
-
}
|
|
182
|
-
} else {
|
|
183
|
-
// Ensure directory exists
|
|
184
|
-
const configDir = path.dirname(configPath);
|
|
185
|
-
if (!fs.existsSync(configDir)) {
|
|
186
|
-
fs.mkdirSync(configDir, { recursive: true });
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Add l4yercak3 server with full path
|
|
191
|
-
// Claude Desktop doesn't inherit shell PATH, so we need absolute paths
|
|
192
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
193
|
-
|
|
194
|
-
config.mcpServers.l4yercak3 = {
|
|
195
|
-
command: cmdConfig.command,
|
|
196
|
-
args: cmdConfig.args
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
// Write config
|
|
200
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
201
|
-
return { configPath, commandDescription: cmdConfig.description };
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Remove l4yercak3 from Claude Desktop config
|
|
206
|
-
*/
|
|
207
|
-
function removeClaudeDesktopConfig() {
|
|
208
|
-
const configPath = getClaudeDesktopConfigPath();
|
|
209
|
-
|
|
210
|
-
if (!fs.existsSync(configPath)) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
try {
|
|
215
|
-
const content = fs.readFileSync(configPath, 'utf8');
|
|
216
|
-
const config = JSON.parse(content);
|
|
217
|
-
|
|
218
|
-
if (config.mcpServers && config.mcpServers.l4yercak3) {
|
|
219
|
-
delete config.mcpServers.l4yercak3;
|
|
220
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
221
|
-
return true;
|
|
222
|
-
}
|
|
223
|
-
} catch {
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return false;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Check if l4yercak3 is configured in Claude Desktop
|
|
232
|
-
*/
|
|
233
|
-
function isClaudeDesktopConfigured() {
|
|
234
|
-
const configPath = getClaudeDesktopConfigPath();
|
|
235
|
-
|
|
236
|
-
if (!fs.existsSync(configPath)) {
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
try {
|
|
241
|
-
const content = fs.readFileSync(configPath, 'utf8');
|
|
242
|
-
const config = JSON.parse(content);
|
|
243
|
-
return config.mcpServers && config.mcpServers.l4yercak3;
|
|
244
|
-
} catch {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
module.exports = {
|
|
250
|
-
command: 'mcp-setup',
|
|
251
|
-
description: 'Configure MCP clients to use the L4YERCAK3 server',
|
|
252
|
-
handler: async () => {
|
|
253
|
-
console.log('');
|
|
254
|
-
console.log(chalk.bold.hex('#9F7AEA')('🔧 L4YERCAK3 MCP Setup\n'));
|
|
255
|
-
|
|
256
|
-
// Check if logged in
|
|
257
|
-
const session = configManager.getSession();
|
|
258
|
-
if (!session || !session.token) {
|
|
259
|
-
console.log(chalk.yellow('⚠️ Not logged in to L4YERCAK3'));
|
|
260
|
-
console.log(chalk.gray(' Run `l4yercak3 login` first to authenticate.\n'));
|
|
261
|
-
console.log(chalk.gray(' The MCP server needs your session to access L4YERCAK3 features.'));
|
|
262
|
-
process.exit(1);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// Validate session and get user info
|
|
266
|
-
let userEmail = session.email;
|
|
267
|
-
if (!userEmail) {
|
|
268
|
-
try {
|
|
269
|
-
const userInfo = await backendClient.validateSession();
|
|
270
|
-
if (userInfo && userInfo.email) {
|
|
271
|
-
userEmail = userInfo.email;
|
|
272
|
-
// Update stored session with email for future use
|
|
273
|
-
configManager.saveSession({ ...session, email: userEmail, userId: userInfo.userId });
|
|
274
|
-
}
|
|
275
|
-
} catch {
|
|
276
|
-
// Validation failed, continue without email display
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
console.log(chalk.green('✓ Logged in') + (userEmail ? chalk.gray(` as ${userEmail}`) : ''));
|
|
281
|
-
console.log('');
|
|
282
|
-
|
|
283
|
-
// Detect available clients
|
|
284
|
-
const hasClaudeCli = isClaudeInstalled();
|
|
285
|
-
|
|
286
|
-
// Build client choices
|
|
287
|
-
const clientChoices = [];
|
|
288
|
-
|
|
289
|
-
if (hasClaudeCli) {
|
|
290
|
-
const configured = isMcpConfigured();
|
|
291
|
-
clientChoices.push({
|
|
292
|
-
name: `Claude Code (CLI)${configured ? chalk.gray(' - already configured') : ''}`,
|
|
293
|
-
value: 'claude-code',
|
|
294
|
-
configured
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
clientChoices.push({
|
|
299
|
-
name: `Claude Desktop${isClaudeDesktopConfigured() ? chalk.gray(' - already configured') : ''}`,
|
|
300
|
-
value: 'claude-desktop',
|
|
301
|
-
configured: isClaudeDesktopConfigured()
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
clientChoices.push({
|
|
305
|
-
name: 'VS Code',
|
|
306
|
-
value: 'vscode'
|
|
307
|
-
});
|
|
308
|
-
|
|
309
|
-
clientChoices.push({
|
|
310
|
-
name: 'Cursor',
|
|
311
|
-
value: 'cursor'
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
clientChoices.push({
|
|
315
|
-
name: 'Windsurf',
|
|
316
|
-
value: 'windsurf'
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
clientChoices.push({
|
|
320
|
-
name: 'Zed',
|
|
321
|
-
value: 'zed'
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
clientChoices.push({
|
|
325
|
-
name: 'Other MCP client (show manual instructions)',
|
|
326
|
-
value: 'other'
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
// Ask which client to configure
|
|
330
|
-
const { client } = await inquirer.prompt([
|
|
331
|
-
{
|
|
332
|
-
type: 'list',
|
|
333
|
-
name: 'client',
|
|
334
|
-
message: 'Which MCP client would you like to configure?',
|
|
335
|
-
choices: clientChoices,
|
|
336
|
-
},
|
|
337
|
-
]);
|
|
338
|
-
|
|
339
|
-
console.log('');
|
|
340
|
-
|
|
341
|
-
if (client === 'claude-code') {
|
|
342
|
-
await setupClaudeCode();
|
|
343
|
-
} else if (client === 'claude-desktop') {
|
|
344
|
-
await setupClaudeDesktop();
|
|
345
|
-
} else if (client === 'vscode') {
|
|
346
|
-
showVSCodeInstructions();
|
|
347
|
-
} else if (client === 'cursor') {
|
|
348
|
-
showCursorInstructions();
|
|
349
|
-
} else if (client === 'windsurf') {
|
|
350
|
-
showWindsurfInstructions();
|
|
351
|
-
} else if (client === 'zed') {
|
|
352
|
-
showZedInstructions();
|
|
353
|
-
} else {
|
|
354
|
-
showOtherClientInstructions();
|
|
355
|
-
}
|
|
356
|
-
},
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Setup Claude Code CLI
|
|
361
|
-
*/
|
|
362
|
-
async function setupClaudeCode() {
|
|
363
|
-
const alreadyConfigured = isMcpConfigured();
|
|
364
|
-
|
|
365
|
-
if (alreadyConfigured) {
|
|
366
|
-
const { action } = await inquirer.prompt([
|
|
367
|
-
{
|
|
368
|
-
type: 'list',
|
|
369
|
-
name: 'action',
|
|
370
|
-
message: 'L4YERCAK3 is already configured. What would you like to do?',
|
|
371
|
-
choices: [
|
|
372
|
-
{ name: 'Keep existing configuration', value: 'keep' },
|
|
373
|
-
{ name: 'Reconfigure (remove and re-add)', value: 'reconfigure' },
|
|
374
|
-
{ name: 'Remove configuration', value: 'remove' },
|
|
375
|
-
],
|
|
376
|
-
},
|
|
377
|
-
]);
|
|
378
|
-
|
|
379
|
-
if (action === 'keep') {
|
|
380
|
-
console.log(chalk.gray('\nKeeping existing configuration.'));
|
|
381
|
-
showUsageInstructions('Claude Code');
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
if (action === 'remove') {
|
|
386
|
-
removeMcpConfig();
|
|
387
|
-
console.log(chalk.green('\n✓ L4YERCAK3 MCP server removed from Claude Code'));
|
|
388
|
-
return;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
removeMcpConfig();
|
|
392
|
-
console.log(chalk.gray('Removed existing configuration...'));
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// Ask for scope
|
|
396
|
-
const { scope } = await inquirer.prompt([
|
|
397
|
-
{
|
|
398
|
-
type: 'list',
|
|
399
|
-
name: 'scope',
|
|
400
|
-
message: 'Where should the MCP server be configured?',
|
|
401
|
-
choices: [
|
|
402
|
-
{ name: 'User (global) - Available in all projects', value: 'user' },
|
|
403
|
-
{ name: 'Project - Only for current directory', value: 'project' },
|
|
404
|
-
],
|
|
405
|
-
default: 'user',
|
|
406
|
-
},
|
|
407
|
-
]);
|
|
408
|
-
|
|
409
|
-
console.log('');
|
|
410
|
-
console.log(chalk.gray('Configuring Claude Code...'));
|
|
411
|
-
|
|
412
|
-
const success = await configureMcp(scope);
|
|
413
|
-
|
|
414
|
-
if (success) {
|
|
415
|
-
console.log('');
|
|
416
|
-
console.log(chalk.green.bold('✓ L4YERCAK3 MCP server configured for Claude Code!\n'));
|
|
417
|
-
showUsageInstructions('Claude Code');
|
|
418
|
-
} else {
|
|
419
|
-
console.log('');
|
|
420
|
-
console.log(chalk.red('Failed to configure MCP server.'));
|
|
421
|
-
console.log(chalk.gray('\nYou can try manual configuration:'));
|
|
422
|
-
console.log(chalk.cyan(' claude mcp add l4yercak3 -- npx @l4yercak3/cli mcp-server'));
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Setup Claude Desktop
|
|
428
|
-
*/
|
|
429
|
-
async function setupClaudeDesktop() {
|
|
430
|
-
const alreadyConfigured = isClaudeDesktopConfigured();
|
|
431
|
-
|
|
432
|
-
if (alreadyConfigured) {
|
|
433
|
-
const { action } = await inquirer.prompt([
|
|
434
|
-
{
|
|
435
|
-
type: 'list',
|
|
436
|
-
name: 'action',
|
|
437
|
-
message: 'L4YERCAK3 is already configured. What would you like to do?',
|
|
438
|
-
choices: [
|
|
439
|
-
{ name: 'Keep existing configuration', value: 'keep' },
|
|
440
|
-
{ name: 'Reconfigure', value: 'reconfigure' },
|
|
441
|
-
{ name: 'Remove configuration', value: 'remove' },
|
|
442
|
-
],
|
|
443
|
-
},
|
|
444
|
-
]);
|
|
445
|
-
|
|
446
|
-
if (action === 'keep') {
|
|
447
|
-
console.log(chalk.gray('\nKeeping existing configuration.'));
|
|
448
|
-
showUsageInstructions('Claude Desktop');
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
if (action === 'remove') {
|
|
453
|
-
removeClaudeDesktopConfig();
|
|
454
|
-
console.log(chalk.green('\n✓ L4YERCAK3 MCP server removed from Claude Desktop'));
|
|
455
|
-
console.log(chalk.gray(' Restart Claude Desktop for changes to take effect.'));
|
|
456
|
-
return;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
console.log(chalk.gray('Configuring Claude Desktop...'));
|
|
461
|
-
|
|
462
|
-
try {
|
|
463
|
-
const { configPath, commandDescription } = configureClaudeDesktop();
|
|
464
|
-
console.log('');
|
|
465
|
-
console.log(chalk.green.bold('✓ L4YERCAK3 MCP server configured for Claude Desktop!\n'));
|
|
466
|
-
console.log(chalk.gray(` Config: ${configPath}`));
|
|
467
|
-
console.log(chalk.gray(` Command: ${commandDescription}`));
|
|
468
|
-
console.log(chalk.yellow('\n ⚠️ Restart Claude Desktop for changes to take effect.'));
|
|
469
|
-
console.log(chalk.gray(' (Using absolute path since Claude Desktop doesn\'t inherit your shell PATH)\n'));
|
|
470
|
-
showUsageInstructions('Claude Desktop');
|
|
471
|
-
} catch (error) {
|
|
472
|
-
console.log('');
|
|
473
|
-
console.log(chalk.red(`Failed to configure Claude Desktop: ${error.message}`));
|
|
474
|
-
showClaudeDesktopManualInstructions();
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
/**
|
|
479
|
-
* Show manual instructions for Claude Desktop
|
|
480
|
-
*/
|
|
481
|
-
function showClaudeDesktopManualInstructions() {
|
|
482
|
-
const configPath = getClaudeDesktopConfigPath();
|
|
483
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
484
|
-
|
|
485
|
-
console.log(chalk.gray('\nManual configuration:'));
|
|
486
|
-
console.log(chalk.gray(` Edit: ${configPath}`));
|
|
487
|
-
console.log('');
|
|
488
|
-
console.log(chalk.white(' Add to mcpServers (use absolute paths):'));
|
|
489
|
-
console.log(chalk.cyan(' {'));
|
|
490
|
-
console.log(chalk.cyan(' "mcpServers": {'));
|
|
491
|
-
console.log(chalk.cyan(' "l4yercak3": {'));
|
|
492
|
-
console.log(chalk.cyan(` "command": "${cmdConfig.command}",`));
|
|
493
|
-
console.log(chalk.cyan(` "args": ${JSON.stringify(cmdConfig.args)}`));
|
|
494
|
-
console.log(chalk.cyan(' }'));
|
|
495
|
-
console.log(chalk.cyan(' }'));
|
|
496
|
-
console.log(chalk.cyan(' }'));
|
|
497
|
-
console.log('');
|
|
498
|
-
console.log(chalk.gray(' Note: Claude Desktop doesn\'t inherit your shell PATH.'));
|
|
499
|
-
console.log(chalk.gray(` Find paths with: ${chalk.cyan('which l4yercak3')} or ${chalk.cyan('which npx')}`));
|
|
500
|
-
console.log('');
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
/**
|
|
504
|
-
* Show VS Code setup instructions
|
|
505
|
-
*/
|
|
506
|
-
function showVSCodeInstructions() {
|
|
507
|
-
console.log(chalk.bold('🔧 VS Code MCP Setup\n'));
|
|
508
|
-
|
|
509
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
510
|
-
|
|
511
|
-
console.log(chalk.white(' VS Code supports MCP through various extensions.\n'));
|
|
512
|
-
|
|
513
|
-
console.log(chalk.gray(' Add this MCP server configuration to your extension:'));
|
|
514
|
-
console.log('');
|
|
515
|
-
console.log(chalk.cyan(' {'));
|
|
516
|
-
console.log(chalk.cyan(' "mcpServers": {'));
|
|
517
|
-
console.log(chalk.cyan(' "l4yercak3": {'));
|
|
518
|
-
console.log(chalk.cyan(` "command": "${cmdConfig.command}",`));
|
|
519
|
-
console.log(chalk.cyan(` "args": ${JSON.stringify(cmdConfig.args)}`));
|
|
520
|
-
console.log(chalk.cyan(' }'));
|
|
521
|
-
console.log(chalk.cyan(' }'));
|
|
522
|
-
console.log(chalk.cyan(' }'));
|
|
523
|
-
console.log('');
|
|
524
|
-
|
|
525
|
-
console.log(chalk.gray(' Check your extension\'s docs for where to add MCP servers.'));
|
|
526
|
-
console.log(chalk.gray(` Server command: ${cmdConfig.description}`));
|
|
527
|
-
console.log('');
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
* Show Cursor setup instructions
|
|
532
|
-
*/
|
|
533
|
-
function showCursorInstructions() {
|
|
534
|
-
console.log(chalk.bold('🔧 Cursor MCP Setup\n'));
|
|
535
|
-
|
|
536
|
-
console.log(chalk.white(' Cursor supports MCP servers through its settings.\n'));
|
|
537
|
-
|
|
538
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
539
|
-
const configPath = os.platform() === 'darwin'
|
|
540
|
-
? '~/.cursor/mcp.json'
|
|
541
|
-
: os.platform() === 'win32'
|
|
542
|
-
? '%APPDATA%\\Cursor\\mcp.json'
|
|
543
|
-
: '~/.config/cursor/mcp.json';
|
|
544
|
-
|
|
545
|
-
console.log(chalk.gray(` 1. Create or edit: ${configPath}`));
|
|
546
|
-
console.log(chalk.gray(' 2. Add the following configuration:\n'));
|
|
547
|
-
|
|
548
|
-
console.log(chalk.cyan(' {'));
|
|
549
|
-
console.log(chalk.cyan(' "mcpServers": {'));
|
|
550
|
-
console.log(chalk.cyan(' "l4yercak3": {'));
|
|
551
|
-
console.log(chalk.cyan(` "command": "${cmdConfig.command}",`));
|
|
552
|
-
console.log(chalk.cyan(` "args": ${JSON.stringify(cmdConfig.args)}`));
|
|
553
|
-
console.log(chalk.cyan(' }'));
|
|
554
|
-
console.log(chalk.cyan(' }'));
|
|
555
|
-
console.log(chalk.cyan(' }'));
|
|
556
|
-
console.log('');
|
|
557
|
-
|
|
558
|
-
console.log(chalk.gray(' 3. Restart Cursor for changes to take effect'));
|
|
559
|
-
console.log('');
|
|
560
|
-
|
|
561
|
-
console.log(chalk.yellow(' Note: Cursor\'s MCP support may vary by version.'));
|
|
562
|
-
console.log(chalk.gray(' Check Cursor documentation for the latest setup process.'));
|
|
563
|
-
console.log('');
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
/**
|
|
567
|
-
* Show Windsurf setup instructions
|
|
568
|
-
*/
|
|
569
|
-
function showWindsurfInstructions() {
|
|
570
|
-
console.log(chalk.bold('🔧 Windsurf (Codeium) MCP Setup\n'));
|
|
571
|
-
|
|
572
|
-
console.log(chalk.white(' Windsurf supports MCP through Cascade.\n'));
|
|
573
|
-
|
|
574
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
575
|
-
const configPath = os.platform() === 'darwin'
|
|
576
|
-
? '~/.codeium/windsurf/mcp_config.json'
|
|
577
|
-
: os.platform() === 'win32'
|
|
578
|
-
? '%APPDATA%\\Codeium\\windsurf\\mcp_config.json'
|
|
579
|
-
: '~/.config/codeium/windsurf/mcp_config.json';
|
|
580
|
-
|
|
581
|
-
console.log(chalk.gray(` 1. Create or edit: ${configPath}`));
|
|
582
|
-
console.log(chalk.gray(' 2. Add the following configuration:\n'));
|
|
583
|
-
|
|
584
|
-
console.log(chalk.cyan(' {'));
|
|
585
|
-
console.log(chalk.cyan(' "mcpServers": {'));
|
|
586
|
-
console.log(chalk.cyan(' "l4yercak3": {'));
|
|
587
|
-
console.log(chalk.cyan(` "command": "${cmdConfig.command}",`));
|
|
588
|
-
console.log(chalk.cyan(` "args": ${JSON.stringify(cmdConfig.args)}`));
|
|
589
|
-
console.log(chalk.cyan(' }'));
|
|
590
|
-
console.log(chalk.cyan(' }'));
|
|
591
|
-
console.log(chalk.cyan(' }'));
|
|
592
|
-
console.log('');
|
|
593
|
-
|
|
594
|
-
console.log(chalk.gray(' 3. Restart Windsurf for changes to take effect'));
|
|
595
|
-
console.log('');
|
|
596
|
-
|
|
597
|
-
console.log(chalk.gray(' Once configured, you can use L4YERCAK3 tools through Cascade.'));
|
|
598
|
-
console.log('');
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* Show Zed setup instructions
|
|
603
|
-
*/
|
|
604
|
-
function showZedInstructions() {
|
|
605
|
-
console.log(chalk.bold('🔧 Zed MCP Setup\n'));
|
|
606
|
-
|
|
607
|
-
console.log(chalk.white(' Zed supports MCP servers through its settings.\n'));
|
|
608
|
-
|
|
609
|
-
const cmdConfig = getClaudeDesktopCommand();
|
|
610
|
-
const configPath = os.platform() === 'darwin'
|
|
611
|
-
? '~/.config/zed/settings.json'
|
|
612
|
-
: '~/.config/zed/settings.json';
|
|
613
|
-
|
|
614
|
-
console.log(chalk.gray(` 1. Open Zed settings: ${configPath}`));
|
|
615
|
-
console.log(chalk.gray(' 2. Add or update the context_servers section:\n'));
|
|
616
|
-
|
|
617
|
-
console.log(chalk.cyan(' {'));
|
|
618
|
-
console.log(chalk.cyan(' "context_servers": {'));
|
|
619
|
-
console.log(chalk.cyan(' "l4yercak3": {'));
|
|
620
|
-
console.log(chalk.cyan(` "command": {`));
|
|
621
|
-
console.log(chalk.cyan(` "path": "${cmdConfig.command}",`));
|
|
622
|
-
console.log(chalk.cyan(` "args": ${JSON.stringify(cmdConfig.args)}`));
|
|
623
|
-
console.log(chalk.cyan(' }'));
|
|
624
|
-
console.log(chalk.cyan(' }'));
|
|
625
|
-
console.log(chalk.cyan(' }'));
|
|
626
|
-
console.log(chalk.cyan(' }'));
|
|
627
|
-
console.log('');
|
|
628
|
-
|
|
629
|
-
console.log(chalk.gray(' 3. Restart Zed or reload the configuration'));
|
|
630
|
-
console.log('');
|
|
631
|
-
|
|
632
|
-
console.log(chalk.gray(' See https://zed.dev/docs/context-servers for more details.'));
|
|
633
|
-
console.log('');
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
/**
|
|
637
|
-
* Show instructions for other MCP clients
|
|
638
|
-
*/
|
|
639
|
-
function showOtherClientInstructions() {
|
|
640
|
-
console.log(chalk.bold('🔌 Manual MCP Configuration\n'));
|
|
641
|
-
|
|
642
|
-
console.log(chalk.white(' Server command:'));
|
|
643
|
-
console.log(chalk.cyan(' npx @l4yercak3/cli mcp-server\n'));
|
|
644
|
-
|
|
645
|
-
console.log(chalk.white(' Transport: ') + chalk.cyan('stdio\n'));
|
|
646
|
-
|
|
647
|
-
console.log(chalk.white(' Compatible clients include:'));
|
|
648
|
-
console.log(chalk.gray(' • Cursor'));
|
|
649
|
-
console.log(chalk.gray(' • Cody (Sourcegraph)'));
|
|
650
|
-
console.log(chalk.gray(' • Continue'));
|
|
651
|
-
console.log(chalk.gray(' • Zed'));
|
|
652
|
-
console.log(chalk.gray(' • Any MCP-compatible AI assistant'));
|
|
653
|
-
console.log('');
|
|
654
|
-
|
|
655
|
-
console.log(chalk.white(' JSON configuration format:'));
|
|
656
|
-
console.log(chalk.cyan(' {'));
|
|
657
|
-
console.log(chalk.cyan(' "command": "npx",'));
|
|
658
|
-
console.log(chalk.cyan(' "args": ["@l4yercak3/cli", "mcp-server"],'));
|
|
659
|
-
console.log(chalk.cyan(' "transport": "stdio"'));
|
|
660
|
-
console.log(chalk.cyan(' }'));
|
|
661
|
-
console.log('');
|
|
662
|
-
|
|
663
|
-
console.log(chalk.gray(' Refer to your client\'s documentation for where to add this config.\n'));
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
/**
|
|
667
|
-
* Show usage instructions after setup
|
|
668
|
-
*/
|
|
669
|
-
function showUsageInstructions(clientName = 'your AI assistant') {
|
|
670
|
-
console.log(chalk.bold('📖 How to use:\n'));
|
|
671
|
-
|
|
672
|
-
console.log(chalk.white(` In ${clientName}, you can now:`));
|
|
673
|
-
console.log(chalk.gray(' • Ask Claude to list your L4YERCAK3 contacts, projects, or invoices'));
|
|
674
|
-
console.log(chalk.gray(' • Create or update CRM records through natural language'));
|
|
675
|
-
console.log(chalk.gray(' • Get project integration help with context from your L4YERCAK3 data'));
|
|
676
|
-
console.log('');
|
|
677
|
-
|
|
678
|
-
console.log(chalk.white(' Example prompts:'));
|
|
679
|
-
console.log(chalk.cyan(' "Show me my recent contacts in L4YERCAK3"'));
|
|
680
|
-
console.log(chalk.cyan(' "Create a new project called Website Redesign"'));
|
|
681
|
-
console.log(chalk.cyan(' "What invoices are pending?"'));
|
|
682
|
-
console.log('');
|
|
683
|
-
|
|
684
|
-
console.log(chalk.gray(' The MCP server runs automatically when needed.'));
|
|
685
|
-
console.log(chalk.gray(' Your session stays active until you run `l4yercak3 logout`.\n'));
|
|
686
|
-
}
|