@stacksfinder/mcp-server 1.1.0 → 1.2.1
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 +16 -16
- package/README.md +92 -3
- package/dist/compatibility/index.d.ts +11 -0
- package/dist/compatibility/index.d.ts.map +1 -0
- package/dist/compatibility/index.js +13 -0
- package/dist/compatibility/index.js.map +1 -0
- package/dist/compatibility/rules.d.ts +29 -0
- package/dist/compatibility/rules.d.ts.map +1 -0
- package/dist/compatibility/rules.js +419 -0
- package/dist/compatibility/rules.js.map +1 -0
- package/dist/compatibility/scoring.d.ts +54 -0
- package/dist/compatibility/scoring.d.ts.map +1 -0
- package/dist/compatibility/scoring.js +209 -0
- package/dist/compatibility/scoring.js.map +1 -0
- package/dist/compatibility/types.d.ts +176 -0
- package/dist/compatibility/types.d.ts.map +1 -0
- package/dist/compatibility/types.js +26 -0
- package/dist/compatibility/types.js.map +1 -0
- package/dist/compatibility/utils.d.ts +82 -0
- package/dist/compatibility/utils.d.ts.map +1 -0
- package/dist/compatibility/utils.js +269 -0
- package/dist/compatibility/utils.js.map +1 -0
- package/dist/data/357/200/242/357/200/212cp H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serversrcdatacompatibility_matrix.json H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serverdistdata/357/200/242" +226 -0
- package/dist/http.d.ts +7 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +69 -0
- package/dist/http.js.map +1 -0
- package/dist/lib/mcp-compatibility/index.d.ts +33 -0
- package/dist/lib/mcp-compatibility/index.d.ts.map +1 -0
- package/dist/lib/mcp-compatibility/index.js +35 -0
- package/dist/lib/mcp-compatibility/index.js.map +1 -0
- package/dist/lib/mcp-compatibility/rules.d.ts +29 -0
- package/dist/lib/mcp-compatibility/rules.d.ts.map +1 -0
- package/dist/lib/mcp-compatibility/rules.js +419 -0
- package/dist/lib/mcp-compatibility/rules.js.map +1 -0
- package/dist/lib/mcp-compatibility/scoring.d.ts +54 -0
- package/dist/lib/mcp-compatibility/scoring.d.ts.map +1 -0
- package/dist/lib/mcp-compatibility/scoring.js +209 -0
- package/dist/lib/mcp-compatibility/scoring.js.map +1 -0
- package/dist/lib/mcp-compatibility/types.d.ts +176 -0
- package/dist/lib/mcp-compatibility/types.d.ts.map +1 -0
- package/dist/lib/mcp-compatibility/types.js +26 -0
- package/dist/lib/mcp-compatibility/types.js.map +1 -0
- package/dist/lib/mcp-compatibility/utils.d.ts +82 -0
- package/dist/lib/mcp-compatibility/utils.d.ts.map +1 -0
- package/dist/lib/mcp-compatibility/utils.js +269 -0
- package/dist/lib/mcp-compatibility/utils.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +296 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/check-compatibility.d.ts +43 -0
- package/dist/tools/check-compatibility.d.ts.map +1 -0
- package/dist/tools/check-compatibility.js +133 -0
- package/dist/tools/check-compatibility.js.map +1 -0
- package/dist/tools/project-kit/analyze-repo.d.ts +50 -0
- package/dist/tools/project-kit/analyze-repo.d.ts.map +1 -0
- package/dist/tools/project-kit/analyze-repo.js +456 -0
- package/dist/tools/project-kit/analyze-repo.js.map +1 -0
- package/dist/tools/project-kit/detect-stack.d.ts +16 -0
- package/dist/tools/project-kit/detect-stack.d.ts.map +1 -0
- package/dist/tools/project-kit/detect-stack.js +572 -0
- package/dist/tools/project-kit/detect-stack.js.map +1 -0
- package/dist/tools/project-kit/execute-installation.d.ts +50 -0
- package/dist/tools/project-kit/execute-installation.d.ts.map +1 -0
- package/dist/tools/project-kit/execute-installation.js +440 -0
- package/dist/tools/project-kit/execute-installation.js.map +1 -0
- package/dist/tools/project-kit/generate.d.ts +70 -0
- package/dist/tools/project-kit/generate.d.ts.map +1 -0
- package/dist/tools/project-kit/generate.js +455 -0
- package/dist/tools/project-kit/generate.js.map +1 -0
- package/dist/tools/project-kit/index.d.ts +18 -0
- package/dist/tools/project-kit/index.d.ts.map +1 -0
- package/dist/tools/project-kit/index.js +21 -0
- package/dist/tools/project-kit/index.js.map +1 -0
- package/dist/tools/project-kit/installation-types.d.ts +147 -0
- package/dist/tools/project-kit/installation-types.d.ts.map +1 -0
- package/dist/tools/project-kit/installation-types.js +491 -0
- package/dist/tools/project-kit/installation-types.js.map +1 -0
- package/dist/tools/project-kit/match-mcps.d.ts +67 -0
- package/dist/tools/project-kit/match-mcps.d.ts.map +1 -0
- package/dist/tools/project-kit/match-mcps.js +497 -0
- package/dist/tools/project-kit/match-mcps.js.map +1 -0
- package/dist/tools/project-kit/prepare-installation.d.ts +54 -0
- package/dist/tools/project-kit/prepare-installation.d.ts.map +1 -0
- package/dist/tools/project-kit/prepare-installation.js +382 -0
- package/dist/tools/project-kit/prepare-installation.js.map +1 -0
- package/dist/tools/project-kit/types.d.ts +200 -0
- package/dist/tools/project-kit/types.d.ts.map +1 -0
- package/dist/tools/project-kit/types.js +76 -0
- package/dist/tools/project-kit/types.js.map +1 -0
- package/dist/tools/recommend.d.ts.map +1 -1
- package/dist/tools/recommend.js +26 -10
- package/dist/tools/recommend.js.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Matching Module
|
|
3
|
+
*
|
|
4
|
+
* Matches detected technologies to recommended MCP servers.
|
|
5
|
+
* Uses tech→MCP mappings from the database catalog.
|
|
6
|
+
*/
|
|
7
|
+
import type { DetectedStack, MCPRecommendation, MCPInstallConfigs, MCPPriority } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Local mapping of technologies to recommended MCPs.
|
|
10
|
+
* This is used when database is not available or for fast local matching.
|
|
11
|
+
*/
|
|
12
|
+
export declare const TECH_MCP_MAPPINGS: Array<{
|
|
13
|
+
techIdentifier: string;
|
|
14
|
+
mcpSlug: string;
|
|
15
|
+
priority: MCPPriority;
|
|
16
|
+
reason: string;
|
|
17
|
+
category: string;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Universal MCPs always recommended regardless of stack.
|
|
21
|
+
*/
|
|
22
|
+
declare const UNIVERSAL_MCPS_LOCAL: Array<{
|
|
23
|
+
slug: string;
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
priority: MCPPriority;
|
|
27
|
+
reason: string;
|
|
28
|
+
category: string;
|
|
29
|
+
githubUrl?: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate install configurations for different MCP clients.
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateInstallConfig(mcps: MCPRecommendation[]): MCPInstallConfigs;
|
|
35
|
+
/**
|
|
36
|
+
* Match detected stack to recommended MCPs.
|
|
37
|
+
*/
|
|
38
|
+
export declare function matchMCPsForStack(stack: DetectedStack, options?: {
|
|
39
|
+
includeInstalled?: boolean;
|
|
40
|
+
installedMcps?: string[];
|
|
41
|
+
}): MCPRecommendation[];
|
|
42
|
+
/**
|
|
43
|
+
* Match technologies from project description/constraints to MCPs.
|
|
44
|
+
* Used by generate_mcp_kit when no repo is being analyzed.
|
|
45
|
+
*/
|
|
46
|
+
export declare function matchMCPsForTechnologies(technologies: string[], options?: {
|
|
47
|
+
includeInstalled?: boolean;
|
|
48
|
+
installedMcps?: string[];
|
|
49
|
+
}): MCPRecommendation[];
|
|
50
|
+
/**
|
|
51
|
+
* Get MCP info by slug.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getMCPInfo(slug: string): (typeof TECH_MCP_MAPPINGS)[0] | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Get all MCPs for a specific category.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getMCPsByCategory(category: string): typeof TECH_MCP_MAPPINGS;
|
|
58
|
+
/**
|
|
59
|
+
* Get all supported technology identifiers.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getSupportedTechnologies(): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Get universal MCPs that should always be recommended.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getUniversalMCPs(): typeof UNIVERSAL_MCPS_LOCAL;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=match-mcps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-mcps.d.ts","sourceRoot":"","sources":["../../../src/tools/project-kit/match-mcps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAOnG;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB,CAqQA,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAmBA,CAAC;AAMF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAkBlF;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE;IACR,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACJ,iBAAiB,EAAE,CA0FrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;IACR,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACJ,iBAAiB,EAAE,CA+DrB;AAkBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAElF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,iBAAiB,CAE5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAMnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,oBAAoB,CAE9D"}
|
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Matching Module
|
|
3
|
+
*
|
|
4
|
+
* Matches detected technologies to recommended MCP servers.
|
|
5
|
+
* Uses tech→MCP mappings from the database catalog.
|
|
6
|
+
*/
|
|
7
|
+
import { info } from '../../utils/logger.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// MCP TECH MAPPINGS (Local Lookup Table)
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Local mapping of technologies to recommended MCPs.
|
|
13
|
+
* This is used when database is not available or for fast local matching.
|
|
14
|
+
*/
|
|
15
|
+
export const TECH_MCP_MAPPINGS = [
|
|
16
|
+
// ==========================================================================
|
|
17
|
+
// DATABASE SERVICES
|
|
18
|
+
// ==========================================================================
|
|
19
|
+
{
|
|
20
|
+
techIdentifier: 'supabase',
|
|
21
|
+
mcpSlug: 'supabase-mcp',
|
|
22
|
+
priority: 'high',
|
|
23
|
+
reason: 'Direct database access with RLS-aware queries',
|
|
24
|
+
category: 'database'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
techIdentifier: 'neon',
|
|
28
|
+
mcpSlug: 'neon-mcp',
|
|
29
|
+
priority: 'high',
|
|
30
|
+
reason: 'Branch management and serverless Postgres operations',
|
|
31
|
+
category: 'database'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
techIdentifier: 'planetscale',
|
|
35
|
+
mcpSlug: 'planetscale-mcp',
|
|
36
|
+
priority: 'high',
|
|
37
|
+
reason: 'Database branching and schema management',
|
|
38
|
+
category: 'database'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
techIdentifier: 'mongodb',
|
|
42
|
+
mcpSlug: 'mongodb-mcp',
|
|
43
|
+
priority: 'high',
|
|
44
|
+
reason: 'MongoDB Atlas operations and query assistance',
|
|
45
|
+
category: 'database'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
techIdentifier: 'postgresql',
|
|
49
|
+
mcpSlug: 'postgres-mcp',
|
|
50
|
+
priority: 'medium',
|
|
51
|
+
reason: 'PostgreSQL database operations and query building',
|
|
52
|
+
category: 'database'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
techIdentifier: 'redis',
|
|
56
|
+
mcpSlug: 'upstash-mcp',
|
|
57
|
+
priority: 'medium',
|
|
58
|
+
reason: 'Redis operations with rate limiting support',
|
|
59
|
+
category: 'database'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
techIdentifier: 'upstash',
|
|
63
|
+
mcpSlug: 'upstash-mcp',
|
|
64
|
+
priority: 'high',
|
|
65
|
+
reason: 'Upstash Redis and QStash management',
|
|
66
|
+
category: 'database'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
techIdentifier: 'firebase',
|
|
70
|
+
mcpSlug: 'firebase-mcp',
|
|
71
|
+
priority: 'high',
|
|
72
|
+
reason: 'Firestore, Auth, and Storage operations',
|
|
73
|
+
category: 'database'
|
|
74
|
+
},
|
|
75
|
+
// ==========================================================================
|
|
76
|
+
// PAYMENT SERVICES
|
|
77
|
+
// ==========================================================================
|
|
78
|
+
{
|
|
79
|
+
techIdentifier: 'stripe',
|
|
80
|
+
mcpSlug: 'stripe-mcp',
|
|
81
|
+
priority: 'high',
|
|
82
|
+
reason: 'Payment processing, subscriptions, and webhook management',
|
|
83
|
+
category: 'payments'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
techIdentifier: 'paddle',
|
|
87
|
+
mcpSlug: 'paddle-mcp',
|
|
88
|
+
priority: 'high',
|
|
89
|
+
reason: 'Paddle billing, subscriptions, and tax handling',
|
|
90
|
+
category: 'payments'
|
|
91
|
+
},
|
|
92
|
+
// ==========================================================================
|
|
93
|
+
// VERSION CONTROL
|
|
94
|
+
// ==========================================================================
|
|
95
|
+
{
|
|
96
|
+
techIdentifier: 'github',
|
|
97
|
+
mcpSlug: 'github-mcp',
|
|
98
|
+
priority: 'high',
|
|
99
|
+
reason: 'GitHub repository, issues, and PR management',
|
|
100
|
+
category: 'version-control'
|
|
101
|
+
},
|
|
102
|
+
// ==========================================================================
|
|
103
|
+
// HOSTING PLATFORMS
|
|
104
|
+
// ==========================================================================
|
|
105
|
+
{
|
|
106
|
+
techIdentifier: 'vercel',
|
|
107
|
+
mcpSlug: 'vercel-mcp',
|
|
108
|
+
priority: 'medium',
|
|
109
|
+
reason: 'Deployment and project configuration',
|
|
110
|
+
category: 'hosting'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
techIdentifier: 'cloudflare',
|
|
114
|
+
mcpSlug: 'cloudflare-mcp',
|
|
115
|
+
priority: 'medium',
|
|
116
|
+
reason: 'Workers, KV, R2, and DNS management',
|
|
117
|
+
category: 'hosting'
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
techIdentifier: 'netlify',
|
|
121
|
+
mcpSlug: 'netlify-mcp',
|
|
122
|
+
priority: 'medium',
|
|
123
|
+
reason: 'Site deployment and function management',
|
|
124
|
+
category: 'hosting'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
techIdentifier: 'fly',
|
|
128
|
+
mcpSlug: 'fly-mcp',
|
|
129
|
+
priority: 'medium',
|
|
130
|
+
reason: 'Fly.io deployment and scaling',
|
|
131
|
+
category: 'hosting'
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
techIdentifier: 'railway',
|
|
135
|
+
mcpSlug: 'railway-mcp',
|
|
136
|
+
priority: 'medium',
|
|
137
|
+
reason: 'Railway deployment and database management',
|
|
138
|
+
category: 'hosting'
|
|
139
|
+
},
|
|
140
|
+
// ==========================================================================
|
|
141
|
+
// PRODUCTIVITY & COLLABORATION
|
|
142
|
+
// ==========================================================================
|
|
143
|
+
{
|
|
144
|
+
techIdentifier: 'notion',
|
|
145
|
+
mcpSlug: 'notion-mcp',
|
|
146
|
+
priority: 'medium',
|
|
147
|
+
reason: 'Notion workspace operations',
|
|
148
|
+
category: 'productivity'
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
techIdentifier: 'slack',
|
|
152
|
+
mcpSlug: 'slack-mcp',
|
|
153
|
+
priority: 'medium',
|
|
154
|
+
reason: 'Slack messaging and channel management',
|
|
155
|
+
category: 'communication'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
techIdentifier: 'discord',
|
|
159
|
+
mcpSlug: 'discord-mcp',
|
|
160
|
+
priority: 'low',
|
|
161
|
+
reason: 'Discord bot and server management',
|
|
162
|
+
category: 'communication'
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
techIdentifier: 'linear',
|
|
166
|
+
mcpSlug: 'linear-mcp',
|
|
167
|
+
priority: 'medium',
|
|
168
|
+
reason: 'Linear issue tracking and project management',
|
|
169
|
+
category: 'productivity'
|
|
170
|
+
},
|
|
171
|
+
// ==========================================================================
|
|
172
|
+
// MONITORING & ANALYTICS
|
|
173
|
+
// ==========================================================================
|
|
174
|
+
{
|
|
175
|
+
techIdentifier: 'sentry',
|
|
176
|
+
mcpSlug: 'sentry-mcp',
|
|
177
|
+
priority: 'medium',
|
|
178
|
+
reason: 'Error tracking and performance monitoring',
|
|
179
|
+
category: 'monitoring'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
techIdentifier: 'posthog',
|
|
183
|
+
mcpSlug: 'posthog-mcp',
|
|
184
|
+
priority: 'low',
|
|
185
|
+
reason: 'Product analytics and feature flags',
|
|
186
|
+
category: 'analytics'
|
|
187
|
+
},
|
|
188
|
+
// ==========================================================================
|
|
189
|
+
// EMAIL SERVICES
|
|
190
|
+
// ==========================================================================
|
|
191
|
+
{
|
|
192
|
+
techIdentifier: 'resend',
|
|
193
|
+
mcpSlug: 'resend-mcp',
|
|
194
|
+
priority: 'medium',
|
|
195
|
+
reason: 'Transactional email management',
|
|
196
|
+
category: 'email'
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
techIdentifier: 'sendgrid',
|
|
200
|
+
mcpSlug: 'sendgrid-mcp',
|
|
201
|
+
priority: 'medium',
|
|
202
|
+
reason: 'Email sending and template management',
|
|
203
|
+
category: 'email'
|
|
204
|
+
},
|
|
205
|
+
// ==========================================================================
|
|
206
|
+
// AI/LLM SERVICES
|
|
207
|
+
// ==========================================================================
|
|
208
|
+
{
|
|
209
|
+
techIdentifier: 'openai',
|
|
210
|
+
mcpSlug: 'openai-mcp',
|
|
211
|
+
priority: 'medium',
|
|
212
|
+
reason: 'OpenAI API management and model selection',
|
|
213
|
+
category: 'ai-llm'
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
techIdentifier: 'anthropic',
|
|
217
|
+
mcpSlug: 'anthropic-mcp',
|
|
218
|
+
priority: 'medium',
|
|
219
|
+
reason: 'Claude API management',
|
|
220
|
+
category: 'ai-llm'
|
|
221
|
+
},
|
|
222
|
+
// ==========================================================================
|
|
223
|
+
// TESTING
|
|
224
|
+
// ==========================================================================
|
|
225
|
+
{
|
|
226
|
+
techIdentifier: 'playwright',
|
|
227
|
+
mcpSlug: 'playwright-mcp',
|
|
228
|
+
priority: 'high',
|
|
229
|
+
reason: 'Browser automation and E2E testing',
|
|
230
|
+
category: 'testing'
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
techIdentifier: 'puppeteer',
|
|
234
|
+
mcpSlug: 'puppeteer-mcp',
|
|
235
|
+
priority: 'medium',
|
|
236
|
+
reason: 'Headless browser automation',
|
|
237
|
+
category: 'testing'
|
|
238
|
+
},
|
|
239
|
+
// ==========================================================================
|
|
240
|
+
// CLOUD PROVIDERS
|
|
241
|
+
// ==========================================================================
|
|
242
|
+
{
|
|
243
|
+
techIdentifier: 'aws',
|
|
244
|
+
mcpSlug: 'aws-mcp',
|
|
245
|
+
priority: 'medium',
|
|
246
|
+
reason: 'AWS service management',
|
|
247
|
+
category: 'hosting'
|
|
248
|
+
},
|
|
249
|
+
// ==========================================================================
|
|
250
|
+
// SEARCH
|
|
251
|
+
// ==========================================================================
|
|
252
|
+
{
|
|
253
|
+
techIdentifier: 'elasticsearch',
|
|
254
|
+
mcpSlug: 'elasticsearch-mcp',
|
|
255
|
+
priority: 'medium',
|
|
256
|
+
reason: 'Elasticsearch indexing and search operations',
|
|
257
|
+
category: 'search'
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
techIdentifier: 'meilisearch',
|
|
261
|
+
mcpSlug: 'meilisearch-mcp',
|
|
262
|
+
priority: 'medium',
|
|
263
|
+
reason: 'Meilisearch index and search management',
|
|
264
|
+
category: 'search'
|
|
265
|
+
}
|
|
266
|
+
];
|
|
267
|
+
/**
|
|
268
|
+
* Universal MCPs always recommended regardless of stack.
|
|
269
|
+
*/
|
|
270
|
+
const UNIVERSAL_MCPS_LOCAL = [
|
|
271
|
+
{
|
|
272
|
+
slug: 'context7',
|
|
273
|
+
name: 'Context7',
|
|
274
|
+
description: 'Up-to-date documentation lookup for any library',
|
|
275
|
+
priority: 'high',
|
|
276
|
+
reason: 'Essential for accurate documentation lookup across any tech stack',
|
|
277
|
+
category: 'documentation',
|
|
278
|
+
githubUrl: 'https://github.com/upstash/context7'
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
slug: 'sequential-thinking',
|
|
282
|
+
name: 'Sequential Thinking',
|
|
283
|
+
description: 'Better reasoning for complex multi-step tasks',
|
|
284
|
+
priority: 'medium',
|
|
285
|
+
reason: 'Improves reasoning quality for architecture decisions',
|
|
286
|
+
category: 'ai-llm',
|
|
287
|
+
githubUrl: 'https://github.com/modelcontextprotocol/servers'
|
|
288
|
+
}
|
|
289
|
+
];
|
|
290
|
+
// ============================================================================
|
|
291
|
+
// MCP INSTALL CONFIG GENERATORS
|
|
292
|
+
// ============================================================================
|
|
293
|
+
/**
|
|
294
|
+
* Generate install configurations for different MCP clients.
|
|
295
|
+
*/
|
|
296
|
+
export function generateInstallConfig(mcps) {
|
|
297
|
+
const cursor = { mcpServers: {} };
|
|
298
|
+
const claudeDesktop = { mcpServers: {} };
|
|
299
|
+
const windsurf = { mcpServers: {} };
|
|
300
|
+
for (const mcp of mcps) {
|
|
301
|
+
const serverConfig = {
|
|
302
|
+
command: 'npx',
|
|
303
|
+
args: ['-y', mcp.slug],
|
|
304
|
+
env: {}
|
|
305
|
+
};
|
|
306
|
+
cursor.mcpServers[mcp.slug] = serverConfig;
|
|
307
|
+
claudeDesktop.mcpServers[mcp.slug] = serverConfig;
|
|
308
|
+
windsurf.mcpServers[mcp.slug] = serverConfig;
|
|
309
|
+
}
|
|
310
|
+
return { cursor, claudeDesktop, windsurf };
|
|
311
|
+
}
|
|
312
|
+
// ============================================================================
|
|
313
|
+
// MCP MATCHING
|
|
314
|
+
// ============================================================================
|
|
315
|
+
/**
|
|
316
|
+
* Match detected stack to recommended MCPs.
|
|
317
|
+
*/
|
|
318
|
+
export function matchMCPsForStack(stack, options = {}) {
|
|
319
|
+
const { includeInstalled = false, installedMcps = [] } = options;
|
|
320
|
+
const recommendations = [];
|
|
321
|
+
const seenSlugs = new Set();
|
|
322
|
+
// Helper to add recommendation if not already added
|
|
323
|
+
const addRecommendation = (mapping, matchedTech) => {
|
|
324
|
+
if (seenSlugs.has(mapping.mcpSlug))
|
|
325
|
+
return;
|
|
326
|
+
if (!includeInstalled && installedMcps.includes(mapping.mcpSlug))
|
|
327
|
+
return;
|
|
328
|
+
seenSlugs.add(mapping.mcpSlug);
|
|
329
|
+
recommendations.push({
|
|
330
|
+
slug: mapping.mcpSlug,
|
|
331
|
+
name: formatMCPName(mapping.mcpSlug),
|
|
332
|
+
description: mapping.reason,
|
|
333
|
+
priority: mapping.priority,
|
|
334
|
+
reason: mapping.reason,
|
|
335
|
+
matchedTech,
|
|
336
|
+
category: mapping.category,
|
|
337
|
+
installCommand: `npx -y ${mapping.mcpSlug}`
|
|
338
|
+
});
|
|
339
|
+
};
|
|
340
|
+
// Match from detected stack categories
|
|
341
|
+
const stackCategories = [
|
|
342
|
+
{ tech: stack.frontend?.name, source: 'frontend' },
|
|
343
|
+
{ tech: stack.backend?.name, source: 'backend' },
|
|
344
|
+
{ tech: stack.database?.name, source: 'database' },
|
|
345
|
+
{ tech: stack.orm?.name, source: 'orm' },
|
|
346
|
+
{ tech: stack.auth?.name, source: 'auth' },
|
|
347
|
+
{ tech: stack.hosting?.name, source: 'hosting' },
|
|
348
|
+
{ tech: stack.payments?.name, source: 'payments' }
|
|
349
|
+
];
|
|
350
|
+
for (const { tech, source } of stackCategories) {
|
|
351
|
+
if (!tech)
|
|
352
|
+
continue;
|
|
353
|
+
const mappings = TECH_MCP_MAPPINGS.filter((m) => m.techIdentifier.toLowerCase() === tech.toLowerCase());
|
|
354
|
+
for (const mapping of mappings) {
|
|
355
|
+
addRecommendation(mapping, `${tech} (${source})`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// Match from detected services
|
|
359
|
+
for (const service of stack.services) {
|
|
360
|
+
const mappings = TECH_MCP_MAPPINGS.filter((m) => m.techIdentifier.toLowerCase() === service.name.toLowerCase());
|
|
361
|
+
for (const mapping of mappings) {
|
|
362
|
+
addRecommendation(mapping, `${service.name} (service)`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Add universal MCPs
|
|
366
|
+
for (const universal of UNIVERSAL_MCPS_LOCAL) {
|
|
367
|
+
if (seenSlugs.has(universal.slug))
|
|
368
|
+
continue;
|
|
369
|
+
if (!includeInstalled && installedMcps.includes(universal.slug))
|
|
370
|
+
continue;
|
|
371
|
+
seenSlugs.add(universal.slug);
|
|
372
|
+
recommendations.push({
|
|
373
|
+
slug: universal.slug,
|
|
374
|
+
name: universal.name,
|
|
375
|
+
description: universal.description,
|
|
376
|
+
priority: universal.priority,
|
|
377
|
+
reason: universal.reason,
|
|
378
|
+
matchedTech: 'universal',
|
|
379
|
+
category: universal.category,
|
|
380
|
+
githubUrl: universal.githubUrl,
|
|
381
|
+
installCommand: `npx -y @anthropic/mcp-server-${universal.slug.replace('-mcp', '')}`
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// Sort by priority (high > medium > low)
|
|
385
|
+
const priorityOrder = {
|
|
386
|
+
high: 3,
|
|
387
|
+
medium: 2,
|
|
388
|
+
low: 1
|
|
389
|
+
};
|
|
390
|
+
recommendations.sort((a, b) => priorityOrder[b.priority] - priorityOrder[a.priority]);
|
|
391
|
+
info(`Matched ${recommendations.length} MCPs for detected stack`);
|
|
392
|
+
return recommendations;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Match technologies from project description/constraints to MCPs.
|
|
396
|
+
* Used by generate_mcp_kit when no repo is being analyzed.
|
|
397
|
+
*/
|
|
398
|
+
export function matchMCPsForTechnologies(technologies, options = {}) {
|
|
399
|
+
const { includeInstalled = false, installedMcps = [] } = options;
|
|
400
|
+
const recommendations = [];
|
|
401
|
+
const seenSlugs = new Set();
|
|
402
|
+
for (const tech of technologies) {
|
|
403
|
+
const normalizedTech = tech.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
404
|
+
const mappings = TECH_MCP_MAPPINGS.filter((m) => {
|
|
405
|
+
const normalizedIdentifier = m.techIdentifier.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
406
|
+
return (normalizedIdentifier === normalizedTech ||
|
|
407
|
+
normalizedIdentifier.includes(normalizedTech) ||
|
|
408
|
+
normalizedTech.includes(normalizedIdentifier));
|
|
409
|
+
});
|
|
410
|
+
for (const mapping of mappings) {
|
|
411
|
+
if (seenSlugs.has(mapping.mcpSlug))
|
|
412
|
+
continue;
|
|
413
|
+
if (!includeInstalled && installedMcps.includes(mapping.mcpSlug))
|
|
414
|
+
continue;
|
|
415
|
+
seenSlugs.add(mapping.mcpSlug);
|
|
416
|
+
recommendations.push({
|
|
417
|
+
slug: mapping.mcpSlug,
|
|
418
|
+
name: formatMCPName(mapping.mcpSlug),
|
|
419
|
+
description: mapping.reason,
|
|
420
|
+
priority: mapping.priority,
|
|
421
|
+
reason: mapping.reason,
|
|
422
|
+
matchedTech: tech,
|
|
423
|
+
category: mapping.category,
|
|
424
|
+
installCommand: `npx -y ${mapping.mcpSlug}`
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
// Add universal MCPs
|
|
429
|
+
for (const universal of UNIVERSAL_MCPS_LOCAL) {
|
|
430
|
+
if (seenSlugs.has(universal.slug))
|
|
431
|
+
continue;
|
|
432
|
+
if (!includeInstalled && installedMcps.includes(universal.slug))
|
|
433
|
+
continue;
|
|
434
|
+
seenSlugs.add(universal.slug);
|
|
435
|
+
recommendations.push({
|
|
436
|
+
slug: universal.slug,
|
|
437
|
+
name: universal.name,
|
|
438
|
+
description: universal.description,
|
|
439
|
+
priority: universal.priority,
|
|
440
|
+
reason: universal.reason,
|
|
441
|
+
matchedTech: 'universal',
|
|
442
|
+
category: universal.category,
|
|
443
|
+
githubUrl: universal.githubUrl
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
// Sort by priority
|
|
447
|
+
const priorityOrder = {
|
|
448
|
+
high: 3,
|
|
449
|
+
medium: 2,
|
|
450
|
+
low: 1
|
|
451
|
+
};
|
|
452
|
+
recommendations.sort((a, b) => priorityOrder[b.priority] - priorityOrder[a.priority]);
|
|
453
|
+
return recommendations;
|
|
454
|
+
}
|
|
455
|
+
// ============================================================================
|
|
456
|
+
// HELPER FUNCTIONS
|
|
457
|
+
// ============================================================================
|
|
458
|
+
/**
|
|
459
|
+
* Format MCP slug into human-readable name.
|
|
460
|
+
*/
|
|
461
|
+
function formatMCPName(slug) {
|
|
462
|
+
return slug
|
|
463
|
+
.replace(/-mcp$/, '')
|
|
464
|
+
.split('-')
|
|
465
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
466
|
+
.join(' ')
|
|
467
|
+
.concat(' MCP');
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Get MCP info by slug.
|
|
471
|
+
*/
|
|
472
|
+
export function getMCPInfo(slug) {
|
|
473
|
+
return TECH_MCP_MAPPINGS.find((m) => m.mcpSlug === slug);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Get all MCPs for a specific category.
|
|
477
|
+
*/
|
|
478
|
+
export function getMCPsByCategory(category) {
|
|
479
|
+
return TECH_MCP_MAPPINGS.filter((m) => m.category === category);
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Get all supported technology identifiers.
|
|
483
|
+
*/
|
|
484
|
+
export function getSupportedTechnologies() {
|
|
485
|
+
const techs = new Set();
|
|
486
|
+
for (const mapping of TECH_MCP_MAPPINGS) {
|
|
487
|
+
techs.add(mapping.techIdentifier);
|
|
488
|
+
}
|
|
489
|
+
return Array.from(techs).sort();
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Get universal MCPs that should always be recommended.
|
|
493
|
+
*/
|
|
494
|
+
export function getUniversalMCPs() {
|
|
495
|
+
return UNIVERSAL_MCPS_LOCAL;
|
|
496
|
+
}
|
|
497
|
+
//# sourceMappingURL=match-mcps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-mcps.js","sourceRoot":"","sources":["../../../src/tools/project-kit/match-mcps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* prepare_mcp_installation Tool
|
|
3
|
+
*
|
|
4
|
+
* Analyzes a repository, detects needed MCPs, and generates a .env-mcp
|
|
5
|
+
* template file for the user to fill in with their API keys.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrepareMCPInstallationInput, PrepareMCPInstallationOutput } from './installation-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Prepare MCP installation by analyzing repo and generating .env-mcp.
|
|
10
|
+
*/
|
|
11
|
+
export declare function prepareMCPInstallation(input: PrepareMCPInstallationInput): Promise<PrepareMCPInstallationOutput>;
|
|
12
|
+
/**
|
|
13
|
+
* Tool definition for MCP server registration.
|
|
14
|
+
*/
|
|
15
|
+
export declare const prepareMCPInstallationTool: {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: string;
|
|
20
|
+
properties: {
|
|
21
|
+
workspaceRoot: {
|
|
22
|
+
type: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
mcpConfigPath: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
includeInstalled: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
default: boolean;
|
|
33
|
+
};
|
|
34
|
+
envMcpPath: {
|
|
35
|
+
type: string;
|
|
36
|
+
description: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
handler: (params: unknown) => Promise<{
|
|
41
|
+
content: {
|
|
42
|
+
type: string;
|
|
43
|
+
text: string;
|
|
44
|
+
}[];
|
|
45
|
+
isError?: undefined;
|
|
46
|
+
} | {
|
|
47
|
+
content: {
|
|
48
|
+
type: string;
|
|
49
|
+
text: string;
|
|
50
|
+
}[];
|
|
51
|
+
isError: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=prepare-installation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-installation.d.ts","sourceRoot":"","sources":["../../../src/tools/project-kit/prepare-installation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACX,2BAA2B,EAC3B,4BAA4B,EAE5B,MAAM,yBAAyB,CAAC;AAmKjC;;GAEG;AACH,wBAAsB,sBAAsB,CAC3C,KAAK,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC,CA+DvC;AAMD;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;sBAiDd,OAAO;;;;;;;;;;;;;CAiC/B,CAAC"}
|