@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.
Files changed (94) hide show
  1. package/LICENSE +16 -16
  2. package/README.md +92 -3
  3. package/dist/compatibility/index.d.ts +11 -0
  4. package/dist/compatibility/index.d.ts.map +1 -0
  5. package/dist/compatibility/index.js +13 -0
  6. package/dist/compatibility/index.js.map +1 -0
  7. package/dist/compatibility/rules.d.ts +29 -0
  8. package/dist/compatibility/rules.d.ts.map +1 -0
  9. package/dist/compatibility/rules.js +419 -0
  10. package/dist/compatibility/rules.js.map +1 -0
  11. package/dist/compatibility/scoring.d.ts +54 -0
  12. package/dist/compatibility/scoring.d.ts.map +1 -0
  13. package/dist/compatibility/scoring.js +209 -0
  14. package/dist/compatibility/scoring.js.map +1 -0
  15. package/dist/compatibility/types.d.ts +176 -0
  16. package/dist/compatibility/types.d.ts.map +1 -0
  17. package/dist/compatibility/types.js +26 -0
  18. package/dist/compatibility/types.js.map +1 -0
  19. package/dist/compatibility/utils.d.ts +82 -0
  20. package/dist/compatibility/utils.d.ts.map +1 -0
  21. package/dist/compatibility/utils.js +269 -0
  22. package/dist/compatibility/utils.js.map +1 -0
  23. 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
  24. package/dist/http.d.ts +7 -0
  25. package/dist/http.d.ts.map +1 -0
  26. package/dist/http.js +69 -0
  27. package/dist/http.js.map +1 -0
  28. package/dist/lib/mcp-compatibility/index.d.ts +33 -0
  29. package/dist/lib/mcp-compatibility/index.d.ts.map +1 -0
  30. package/dist/lib/mcp-compatibility/index.js +35 -0
  31. package/dist/lib/mcp-compatibility/index.js.map +1 -0
  32. package/dist/lib/mcp-compatibility/rules.d.ts +29 -0
  33. package/dist/lib/mcp-compatibility/rules.d.ts.map +1 -0
  34. package/dist/lib/mcp-compatibility/rules.js +419 -0
  35. package/dist/lib/mcp-compatibility/rules.js.map +1 -0
  36. package/dist/lib/mcp-compatibility/scoring.d.ts +54 -0
  37. package/dist/lib/mcp-compatibility/scoring.d.ts.map +1 -0
  38. package/dist/lib/mcp-compatibility/scoring.js +209 -0
  39. package/dist/lib/mcp-compatibility/scoring.js.map +1 -0
  40. package/dist/lib/mcp-compatibility/types.d.ts +176 -0
  41. package/dist/lib/mcp-compatibility/types.d.ts.map +1 -0
  42. package/dist/lib/mcp-compatibility/types.js +26 -0
  43. package/dist/lib/mcp-compatibility/types.js.map +1 -0
  44. package/dist/lib/mcp-compatibility/utils.d.ts +82 -0
  45. package/dist/lib/mcp-compatibility/utils.d.ts.map +1 -0
  46. package/dist/lib/mcp-compatibility/utils.js +269 -0
  47. package/dist/lib/mcp-compatibility/utils.js.map +1 -0
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +296 -1
  50. package/dist/server.js.map +1 -1
  51. package/dist/tools/check-compatibility.d.ts +43 -0
  52. package/dist/tools/check-compatibility.d.ts.map +1 -0
  53. package/dist/tools/check-compatibility.js +133 -0
  54. package/dist/tools/check-compatibility.js.map +1 -0
  55. package/dist/tools/project-kit/analyze-repo.d.ts +50 -0
  56. package/dist/tools/project-kit/analyze-repo.d.ts.map +1 -0
  57. package/dist/tools/project-kit/analyze-repo.js +456 -0
  58. package/dist/tools/project-kit/analyze-repo.js.map +1 -0
  59. package/dist/tools/project-kit/detect-stack.d.ts +16 -0
  60. package/dist/tools/project-kit/detect-stack.d.ts.map +1 -0
  61. package/dist/tools/project-kit/detect-stack.js +572 -0
  62. package/dist/tools/project-kit/detect-stack.js.map +1 -0
  63. package/dist/tools/project-kit/execute-installation.d.ts +50 -0
  64. package/dist/tools/project-kit/execute-installation.d.ts.map +1 -0
  65. package/dist/tools/project-kit/execute-installation.js +440 -0
  66. package/dist/tools/project-kit/execute-installation.js.map +1 -0
  67. package/dist/tools/project-kit/generate.d.ts +70 -0
  68. package/dist/tools/project-kit/generate.d.ts.map +1 -0
  69. package/dist/tools/project-kit/generate.js +455 -0
  70. package/dist/tools/project-kit/generate.js.map +1 -0
  71. package/dist/tools/project-kit/index.d.ts +18 -0
  72. package/dist/tools/project-kit/index.d.ts.map +1 -0
  73. package/dist/tools/project-kit/index.js +21 -0
  74. package/dist/tools/project-kit/index.js.map +1 -0
  75. package/dist/tools/project-kit/installation-types.d.ts +147 -0
  76. package/dist/tools/project-kit/installation-types.d.ts.map +1 -0
  77. package/dist/tools/project-kit/installation-types.js +491 -0
  78. package/dist/tools/project-kit/installation-types.js.map +1 -0
  79. package/dist/tools/project-kit/match-mcps.d.ts +67 -0
  80. package/dist/tools/project-kit/match-mcps.d.ts.map +1 -0
  81. package/dist/tools/project-kit/match-mcps.js +497 -0
  82. package/dist/tools/project-kit/match-mcps.js.map +1 -0
  83. package/dist/tools/project-kit/prepare-installation.d.ts +54 -0
  84. package/dist/tools/project-kit/prepare-installation.d.ts.map +1 -0
  85. package/dist/tools/project-kit/prepare-installation.js +382 -0
  86. package/dist/tools/project-kit/prepare-installation.js.map +1 -0
  87. package/dist/tools/project-kit/types.d.ts +200 -0
  88. package/dist/tools/project-kit/types.d.ts.map +1 -0
  89. package/dist/tools/project-kit/types.js +76 -0
  90. package/dist/tools/project-kit/types.js.map +1 -0
  91. package/dist/tools/recommend.d.ts.map +1 -1
  92. package/dist/tools/recommend.js +26 -10
  93. package/dist/tools/recommend.js.map +1 -1
  94. 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"}