@stacksfinder/mcp-server 1.0.2 → 1.2.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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +414 -262
  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 +404 -1
  50. package/dist/server.js.map +1 -1
  51. package/dist/tools/audit.d.ts +246 -0
  52. package/dist/tools/audit.d.ts.map +1 -0
  53. package/dist/tools/audit.js +559 -0
  54. package/dist/tools/audit.js.map +1 -0
  55. package/dist/tools/check-compatibility.d.ts +43 -0
  56. package/dist/tools/check-compatibility.d.ts.map +1 -0
  57. package/dist/tools/check-compatibility.js +133 -0
  58. package/dist/tools/check-compatibility.js.map +1 -0
  59. package/dist/tools/project-kit/analyze-repo.d.ts +50 -0
  60. package/dist/tools/project-kit/analyze-repo.d.ts.map +1 -0
  61. package/dist/tools/project-kit/analyze-repo.js +456 -0
  62. package/dist/tools/project-kit/analyze-repo.js.map +1 -0
  63. package/dist/tools/project-kit/detect-stack.d.ts +16 -0
  64. package/dist/tools/project-kit/detect-stack.d.ts.map +1 -0
  65. package/dist/tools/project-kit/detect-stack.js +572 -0
  66. package/dist/tools/project-kit/detect-stack.js.map +1 -0
  67. package/dist/tools/project-kit/execute-installation.d.ts +50 -0
  68. package/dist/tools/project-kit/execute-installation.d.ts.map +1 -0
  69. package/dist/tools/project-kit/execute-installation.js +440 -0
  70. package/dist/tools/project-kit/execute-installation.js.map +1 -0
  71. package/dist/tools/project-kit/generate.d.ts +70 -0
  72. package/dist/tools/project-kit/generate.d.ts.map +1 -0
  73. package/dist/tools/project-kit/generate.js +455 -0
  74. package/dist/tools/project-kit/generate.js.map +1 -0
  75. package/dist/tools/project-kit/index.d.ts +18 -0
  76. package/dist/tools/project-kit/index.d.ts.map +1 -0
  77. package/dist/tools/project-kit/index.js +21 -0
  78. package/dist/tools/project-kit/index.js.map +1 -0
  79. package/dist/tools/project-kit/installation-types.d.ts +147 -0
  80. package/dist/tools/project-kit/installation-types.d.ts.map +1 -0
  81. package/dist/tools/project-kit/installation-types.js +491 -0
  82. package/dist/tools/project-kit/installation-types.js.map +1 -0
  83. package/dist/tools/project-kit/match-mcps.d.ts +67 -0
  84. package/dist/tools/project-kit/match-mcps.d.ts.map +1 -0
  85. package/dist/tools/project-kit/match-mcps.js +497 -0
  86. package/dist/tools/project-kit/match-mcps.js.map +1 -0
  87. package/dist/tools/project-kit/prepare-installation.d.ts +54 -0
  88. package/dist/tools/project-kit/prepare-installation.d.ts.map +1 -0
  89. package/dist/tools/project-kit/prepare-installation.js +382 -0
  90. package/dist/tools/project-kit/prepare-installation.js.map +1 -0
  91. package/dist/tools/project-kit/types.d.ts +200 -0
  92. package/dist/tools/project-kit/types.d.ts.map +1 -0
  93. package/dist/tools/project-kit/types.js +76 -0
  94. package/dist/tools/project-kit/types.js.map +1 -0
  95. package/dist/tools/recommend.d.ts.map +1 -1
  96. package/dist/tools/recommend.js +9 -4
  97. package/dist/tools/recommend.js.map +1 -1
  98. package/package.json +8 -3
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Types for MCP Installation Workflow
3
+ *
4
+ * These types define the input/output schemas for:
5
+ * - prepare_mcp_installation: Recommend MCPs -> Generate .env-mcp template
6
+ * - execute_mcp_installation: Read .env-mcp -> Return install commands
7
+ */
8
+ import { z } from 'zod';
9
+ import type { MCPPriority } from './types.js';
10
+ export type EnvVarRequirement = 'required' | 'optional' | 'conditional';
11
+ export interface MCPEnvVar {
12
+ name: string;
13
+ description: string;
14
+ requirement: EnvVarRequirement;
15
+ example?: string;
16
+ /** For conditional vars: what condition must be met */
17
+ condition?: string;
18
+ }
19
+ export interface MCPInstallInfo {
20
+ slug: string;
21
+ name: string;
22
+ description: string;
23
+ priority: MCPPriority;
24
+ matchedTech: string;
25
+ category: string;
26
+ /** npm package or npx command */
27
+ installCommand: string;
28
+ /** Environment variables needed */
29
+ envVars: MCPEnvVar[];
30
+ /** GitHub repo URL */
31
+ githubUrl?: string;
32
+ /** Documentation URL */
33
+ docsUrl?: string;
34
+ }
35
+ export declare const PrepareMCPInstallationInputSchema: z.ZodObject<{
36
+ /** Workspace root to analyze (default: current directory) */
37
+ workspaceRoot: z.ZodOptional<z.ZodString>;
38
+ /** Override path to existing MCP config file */
39
+ mcpConfigPath: z.ZodOptional<z.ZodString>;
40
+ /** Include already installed MCPs in the preparation */
41
+ includeInstalled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
42
+ /** Path where .env-mcp will be created (default: .env-mcp in workspaceRoot) */
43
+ envMcpPath: z.ZodOptional<z.ZodString>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ includeInstalled: boolean;
46
+ mcpConfigPath?: string | undefined;
47
+ workspaceRoot?: string | undefined;
48
+ envMcpPath?: string | undefined;
49
+ }, {
50
+ includeInstalled?: boolean | undefined;
51
+ mcpConfigPath?: string | undefined;
52
+ workspaceRoot?: string | undefined;
53
+ envMcpPath?: string | undefined;
54
+ }>;
55
+ export type PrepareMCPInstallationInput = z.infer<typeof PrepareMCPInstallationInputSchema>;
56
+ export interface PrepareMCPInstallationOutput {
57
+ /** Path to generated .env-mcp file */
58
+ envMcpPath: string;
59
+ /** MCPs that will be installed once env vars are filled */
60
+ mcpsToInstall: MCPInstallInfo[];
61
+ /** Already installed MCPs (skipped) */
62
+ installedMcps: string[];
63
+ /** Summary message */
64
+ message: string;
65
+ /** Content of the generated .env-mcp file */
66
+ envMcpContent: string;
67
+ }
68
+ export declare const ExecuteMCPInstallationInputSchema: z.ZodObject<{
69
+ /** Path to .env-mcp file (default: .env-mcp in current directory) */
70
+ envMcpPath: z.ZodOptional<z.ZodString>;
71
+ /** Target IDE/client for installation */
72
+ targetClient: z.ZodDefault<z.ZodOptional<z.ZodEnum<["claude-code", "claude-desktop", "cursor", "vscode", "windsurf"]>>>;
73
+ /** Only generate commands, don't mark as ready to execute */
74
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ targetClient: "claude-code" | "claude-desktop" | "cursor" | "vscode" | "windsurf";
77
+ dryRun: boolean;
78
+ envMcpPath?: string | undefined;
79
+ }, {
80
+ envMcpPath?: string | undefined;
81
+ targetClient?: "claude-code" | "claude-desktop" | "cursor" | "vscode" | "windsurf" | undefined;
82
+ dryRun?: boolean | undefined;
83
+ }>;
84
+ export type ExecuteMCPInstallationInput = z.infer<typeof ExecuteMCPInstallationInputSchema>;
85
+ export interface MCPInstallCommand {
86
+ /** MCP slug */
87
+ slug: string;
88
+ /** MCP display name */
89
+ name: string;
90
+ /** Whether all required env vars are present */
91
+ ready: boolean;
92
+ /** Missing required env vars (if not ready) */
93
+ missingVars: string[];
94
+ /** Command to execute for Claude Code */
95
+ claudeCodeCommand?: string;
96
+ /** JSON config for Claude Desktop / Cursor */
97
+ jsonConfig?: Record<string, unknown>;
98
+ /** Status message */
99
+ status: 'ready' | 'missing_vars' | 'skipped';
100
+ }
101
+ export interface ExecuteMCPInstallationOutput {
102
+ /** Commands for each MCP */
103
+ commands: MCPInstallCommand[];
104
+ /** MCPs that are ready to install */
105
+ readyCount: number;
106
+ /** MCPs missing required env vars */
107
+ pendingCount: number;
108
+ /** Aggregate Claude Code command (if all ready) */
109
+ aggregateCommand?: string;
110
+ /** Aggregate JSON config for manual install */
111
+ aggregateConfig?: Record<string, unknown>;
112
+ /** Post-install instructions */
113
+ postInstallInstructions: string[];
114
+ /** Summary message */
115
+ message: string;
116
+ }
117
+ /**
118
+ * Registry of known MCPs with their installation requirements.
119
+ * This extends TECH_MCP_MAPPINGS with env var information.
120
+ */
121
+ export interface MCPRegistryEntry {
122
+ slug: string;
123
+ name: string;
124
+ description: string;
125
+ category: string;
126
+ /** npm package name */
127
+ npmPackage: string;
128
+ /** Environment variables */
129
+ envVars: MCPEnvVar[];
130
+ /** GitHub URL */
131
+ githubUrl?: string;
132
+ /** Docs URL */
133
+ docsUrl?: string;
134
+ }
135
+ /**
136
+ * Known MCPs with their environment variable requirements.
137
+ */
138
+ export declare const MCP_REGISTRY: MCPRegistryEntry[];
139
+ /**
140
+ * Get MCP registry entry by slug.
141
+ */
142
+ export declare function getMCPRegistryEntry(slug: string): MCPRegistryEntry | undefined;
143
+ /**
144
+ * Get all env vars required by a list of MCPs.
145
+ */
146
+ export declare function getRequiredEnvVars(mcpSlugs: string[]): MCPEnvVar[];
147
+ //# sourceMappingURL=installation-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-types.d.ts","sourceRoot":"","sources":["../../../src/tools/project-kit/installation-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,491 @@
1
+ /**
2
+ * Types for MCP Installation Workflow
3
+ *
4
+ * These types define the input/output schemas for:
5
+ * - prepare_mcp_installation: Recommend MCPs -> Generate .env-mcp template
6
+ * - execute_mcp_installation: Read .env-mcp -> Return install commands
7
+ */
8
+ import { z } from 'zod';
9
+ // ============================================================================
10
+ // PREPARE_MCP_INSTALLATION TYPES
11
+ // ============================================================================
12
+ export const PrepareMCPInstallationInputSchema = z.object({
13
+ /** Workspace root to analyze (default: current directory) */
14
+ workspaceRoot: z.string().optional(),
15
+ /** Override path to existing MCP config file */
16
+ mcpConfigPath: z.string().optional(),
17
+ /** Include already installed MCPs in the preparation */
18
+ includeInstalled: z.boolean().optional().default(false),
19
+ /** Path where .env-mcp will be created (default: .env-mcp in workspaceRoot) */
20
+ envMcpPath: z.string().optional()
21
+ });
22
+ // ============================================================================
23
+ // EXECUTE_MCP_INSTALLATION TYPES
24
+ // ============================================================================
25
+ export const ExecuteMCPInstallationInputSchema = z.object({
26
+ /** Path to .env-mcp file (default: .env-mcp in current directory) */
27
+ envMcpPath: z.string().optional(),
28
+ /** Target IDE/client for installation */
29
+ targetClient: z
30
+ .enum(['claude-code', 'claude-desktop', 'cursor', 'vscode', 'windsurf'])
31
+ .optional()
32
+ .default('claude-code'),
33
+ /** Only generate commands, don't mark as ready to execute */
34
+ dryRun: z.boolean().optional().default(false)
35
+ });
36
+ /**
37
+ * Known MCPs with their environment variable requirements.
38
+ */
39
+ export const MCP_REGISTRY = [
40
+ // ========================================================================
41
+ // DATABASE SERVICES
42
+ // ========================================================================
43
+ {
44
+ slug: 'supabase-mcp',
45
+ name: 'Supabase MCP',
46
+ description: 'Direct database access with RLS-aware queries',
47
+ category: 'database',
48
+ npmPackage: '@supabase/mcp-server-supabase',
49
+ envVars: [
50
+ {
51
+ name: 'SUPABASE_URL',
52
+ description: 'Your Supabase project URL',
53
+ requirement: 'required',
54
+ example: 'https://xxxxx.supabase.co'
55
+ },
56
+ {
57
+ name: 'SUPABASE_SERVICE_KEY',
58
+ description: 'Service role key (not anon key) for full access',
59
+ requirement: 'required',
60
+ example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
61
+ }
62
+ ],
63
+ githubUrl: 'https://github.com/supabase-community/supabase-mcp',
64
+ docsUrl: 'https://supabase.com/docs/guides/getting-started/mcp'
65
+ },
66
+ {
67
+ slug: 'neon-mcp',
68
+ name: 'Neon MCP',
69
+ description: 'Branch management and serverless Postgres operations',
70
+ category: 'database',
71
+ npmPackage: '@neondatabase/mcp-server-neon',
72
+ envVars: [
73
+ {
74
+ name: 'NEON_API_KEY',
75
+ description: 'Neon API key from console.neon.tech',
76
+ requirement: 'required',
77
+ example: 'neon_api_key_xxxxx'
78
+ }
79
+ ],
80
+ githubUrl: 'https://github.com/neondatabase/mcp-server-neon',
81
+ docsUrl: 'https://neon.tech/docs/guides/neon-mcp-server'
82
+ },
83
+ {
84
+ slug: 'postgres-mcp',
85
+ name: 'PostgreSQL MCP',
86
+ description: 'PostgreSQL database operations and query building',
87
+ category: 'database',
88
+ npmPackage: '@modelcontextprotocol/server-postgres',
89
+ envVars: [
90
+ {
91
+ name: 'POSTGRES_CONNECTION_STRING',
92
+ description: 'PostgreSQL connection string',
93
+ requirement: 'required',
94
+ example: 'postgresql://user:password@localhost:5432/dbname'
95
+ }
96
+ ],
97
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
98
+ docsUrl: 'https://www.npmjs.com/package/@modelcontextprotocol/server-postgres'
99
+ },
100
+ {
101
+ slug: 'mongodb-mcp',
102
+ name: 'MongoDB MCP',
103
+ description: 'MongoDB Atlas operations and query assistance',
104
+ category: 'database',
105
+ npmPackage: '@mongodb/mcp-server',
106
+ envVars: [
107
+ {
108
+ name: 'MONGODB_URI',
109
+ description: 'MongoDB connection string',
110
+ requirement: 'required',
111
+ example: 'mongodb+srv://user:password@cluster.mongodb.net/dbname'
112
+ }
113
+ ],
114
+ githubUrl: 'https://github.com/mongodb/mongodb-mcp',
115
+ docsUrl: 'https://www.mongodb.com/docs/atlas/mcp/'
116
+ },
117
+ {
118
+ slug: 'upstash-mcp',
119
+ name: 'Upstash MCP',
120
+ description: 'Redis operations with rate limiting support',
121
+ category: 'database',
122
+ npmPackage: '@upstash/mcp-server',
123
+ envVars: [
124
+ {
125
+ name: 'UPSTASH_REDIS_REST_URL',
126
+ description: 'Upstash Redis REST URL',
127
+ requirement: 'required',
128
+ example: 'https://xxxxx.upstash.io'
129
+ },
130
+ {
131
+ name: 'UPSTASH_REDIS_REST_TOKEN',
132
+ description: 'Upstash Redis REST token',
133
+ requirement: 'required',
134
+ example: 'AxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxQ='
135
+ }
136
+ ],
137
+ githubUrl: 'https://github.com/upstash/mcp-server',
138
+ docsUrl: 'https://upstash.com/docs/redis/integrations/mcp'
139
+ },
140
+ {
141
+ slug: 'firebase-mcp',
142
+ name: 'Firebase MCP',
143
+ description: 'Firestore, Auth, and Storage operations',
144
+ category: 'database',
145
+ npmPackage: '@anthropic/mcp-server-firebase',
146
+ envVars: [
147
+ {
148
+ name: 'GOOGLE_APPLICATION_CREDENTIALS',
149
+ description: 'Path to Firebase service account JSON file',
150
+ requirement: 'required',
151
+ example: '/path/to/service-account.json'
152
+ },
153
+ {
154
+ name: 'FIREBASE_PROJECT_ID',
155
+ description: 'Firebase project ID',
156
+ requirement: 'optional',
157
+ example: 'my-project-id'
158
+ }
159
+ ],
160
+ githubUrl: 'https://github.com/anthropics/anthropic-quickstarts',
161
+ docsUrl: 'https://firebase.google.com/docs/admin/setup'
162
+ },
163
+ // ========================================================================
164
+ // PAYMENT SERVICES
165
+ // ========================================================================
166
+ {
167
+ slug: 'stripe-mcp',
168
+ name: 'Stripe MCP',
169
+ description: 'Payment processing, subscriptions, and webhook management',
170
+ category: 'payments',
171
+ npmPackage: '@stripe/mcp-server',
172
+ envVars: [
173
+ {
174
+ name: 'STRIPE_API_KEY',
175
+ description: 'Stripe secret API key',
176
+ requirement: 'required',
177
+ example: 'sk_live_xxxxx or sk_test_xxxxx'
178
+ }
179
+ ],
180
+ githubUrl: 'https://github.com/stripe/stripe-mcp',
181
+ docsUrl: 'https://docs.stripe.com/mcp'
182
+ },
183
+ {
184
+ slug: 'paddle-mcp',
185
+ name: 'Paddle MCP',
186
+ description: 'Paddle billing, subscriptions, and tax handling',
187
+ category: 'payments',
188
+ npmPackage: '@anthropic/mcp-server-paddle',
189
+ envVars: [
190
+ {
191
+ name: 'PADDLE_API_KEY',
192
+ description: 'Paddle API key',
193
+ requirement: 'required',
194
+ example: 'pdl_live_xxxxx or pdl_test_xxxxx'
195
+ },
196
+ {
197
+ name: 'PADDLE_ENVIRONMENT',
198
+ description: 'Paddle environment (sandbox or production)',
199
+ requirement: 'optional',
200
+ example: 'sandbox'
201
+ }
202
+ ],
203
+ githubUrl: 'https://github.com/PaddleHQ/paddle-mcp-server',
204
+ docsUrl: 'https://developer.paddle.com/mcp'
205
+ },
206
+ // ========================================================================
207
+ // VERSION CONTROL
208
+ // ========================================================================
209
+ {
210
+ slug: 'github-mcp',
211
+ name: 'GitHub MCP',
212
+ description: 'GitHub repository, issues, and PR management',
213
+ category: 'version-control',
214
+ npmPackage: '@github/mcp-server',
215
+ envVars: [
216
+ {
217
+ name: 'GITHUB_TOKEN',
218
+ description: 'GitHub personal access token',
219
+ requirement: 'required',
220
+ example: 'ghp_xxxxx'
221
+ }
222
+ ],
223
+ githubUrl: 'https://github.com/github/github-mcp-server',
224
+ docsUrl: 'https://github.blog/ai-and-ml/generative-ai/a-practical-guide-on-how-to-use-the-github-mcp-server/'
225
+ },
226
+ // ========================================================================
227
+ // HOSTING PLATFORMS
228
+ // ========================================================================
229
+ {
230
+ slug: 'vercel-mcp',
231
+ name: 'Vercel MCP',
232
+ description: 'Deployment and project configuration',
233
+ category: 'hosting',
234
+ npmPackage: '@vercel/mcp-server',
235
+ envVars: [
236
+ {
237
+ name: 'VERCEL_TOKEN',
238
+ description: 'Vercel API token',
239
+ requirement: 'required',
240
+ example: 'xxxxx'
241
+ }
242
+ ],
243
+ githubUrl: 'https://github.com/vercel/vercel-mcp',
244
+ docsUrl: 'https://vercel.com/docs/mcp'
245
+ },
246
+ {
247
+ slug: 'cloudflare-mcp',
248
+ name: 'Cloudflare MCP',
249
+ description: 'Workers, KV, R2, and DNS management',
250
+ category: 'hosting',
251
+ npmPackage: '@cloudflare/mcp-server-cloudflare',
252
+ envVars: [
253
+ {
254
+ name: 'CLOUDFLARE_API_TOKEN',
255
+ description: 'Cloudflare API token',
256
+ requirement: 'required',
257
+ example: 'xxxxx'
258
+ },
259
+ {
260
+ name: 'CLOUDFLARE_ACCOUNT_ID',
261
+ description: 'Cloudflare account ID',
262
+ requirement: 'optional',
263
+ example: 'xxxxx'
264
+ }
265
+ ],
266
+ githubUrl: 'https://github.com/cloudflare/mcp-server-cloudflare',
267
+ docsUrl: 'https://developers.cloudflare.com/mcp/'
268
+ },
269
+ {
270
+ slug: 'railway-mcp',
271
+ name: 'Railway MCP',
272
+ description: 'Railway deployment and database management',
273
+ category: 'hosting',
274
+ npmPackage: '@anthropic/mcp-server-railway',
275
+ envVars: [
276
+ {
277
+ name: 'RAILWAY_TOKEN',
278
+ description: 'Railway API token',
279
+ requirement: 'required',
280
+ example: 'xxxxx'
281
+ }
282
+ ],
283
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
284
+ docsUrl: 'https://docs.railway.com/reference/mcp-server'
285
+ },
286
+ // ========================================================================
287
+ // EMAIL SERVICES
288
+ // ========================================================================
289
+ {
290
+ slug: 'resend-mcp',
291
+ name: 'Resend MCP',
292
+ description: 'Transactional email management',
293
+ category: 'email',
294
+ npmPackage: '@anthropic/mcp-server-resend',
295
+ envVars: [
296
+ {
297
+ name: 'RESEND_API_KEY',
298
+ description: 'Resend API key',
299
+ requirement: 'required',
300
+ example: 're_xxxxx'
301
+ },
302
+ {
303
+ name: 'SENDER_EMAIL_ADDRESS',
304
+ description: 'Default sender email address',
305
+ requirement: 'optional',
306
+ example: 'noreply@example.com'
307
+ }
308
+ ],
309
+ githubUrl: 'https://github.com/resend/mcp-server-resend',
310
+ docsUrl: 'https://resend.com/docs/mcp'
311
+ },
312
+ // ========================================================================
313
+ // MONITORING & ANALYTICS
314
+ // ========================================================================
315
+ {
316
+ slug: 'sentry-mcp',
317
+ name: 'Sentry MCP',
318
+ description: 'Error tracking and performance monitoring',
319
+ category: 'monitoring',
320
+ npmPackage: '@sentry/mcp-server',
321
+ envVars: [
322
+ {
323
+ name: 'SENTRY_AUTH_TOKEN',
324
+ description: 'Sentry authentication token',
325
+ requirement: 'required',
326
+ example: 'sntrys_xxxxx'
327
+ },
328
+ {
329
+ name: 'SENTRY_ORG',
330
+ description: 'Sentry organization slug',
331
+ requirement: 'optional',
332
+ example: 'my-org'
333
+ }
334
+ ],
335
+ githubUrl: 'https://github.com/getsentry/sentry-mcp',
336
+ docsUrl: 'https://docs.sentry.io/platforms/javascript/guides/mcp/'
337
+ },
338
+ // ========================================================================
339
+ // TESTING
340
+ // ========================================================================
341
+ {
342
+ slug: 'playwright-mcp',
343
+ name: 'Playwright MCP',
344
+ description: 'Browser automation and E2E testing',
345
+ category: 'testing',
346
+ npmPackage: '@anthropic/mcp-server-playwright',
347
+ envVars: [],
348
+ githubUrl: 'https://github.com/anthropics/anthropic-quickstarts',
349
+ docsUrl: 'https://playwright.dev/'
350
+ },
351
+ // ========================================================================
352
+ // UNIVERSAL / DOCUMENTATION
353
+ // ========================================================================
354
+ {
355
+ slug: 'context7',
356
+ name: 'Context7',
357
+ description: 'Up-to-date documentation lookup for any library',
358
+ category: 'documentation',
359
+ npmPackage: '@upstash/context7-mcp',
360
+ envVars: [],
361
+ githubUrl: 'https://github.com/upstash/context7',
362
+ docsUrl: 'https://www.npmjs.com/package/@upstash/context7-mcp'
363
+ },
364
+ {
365
+ slug: 'sequential-thinking',
366
+ name: 'Sequential Thinking',
367
+ description: 'Better reasoning for complex multi-step tasks',
368
+ category: 'ai-llm',
369
+ npmPackage: '@modelcontextprotocol/server-sequential-thinking',
370
+ envVars: [],
371
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
372
+ docsUrl: 'https://www.npmjs.com/package/@modelcontextprotocol/server-sequential-thinking'
373
+ },
374
+ {
375
+ slug: 'filesystem-mcp',
376
+ name: 'Filesystem MCP',
377
+ description: 'Local filesystem operations',
378
+ category: 'filesystem',
379
+ npmPackage: '@modelcontextprotocol/server-filesystem',
380
+ envVars: [
381
+ {
382
+ name: 'ALLOWED_PATHS',
383
+ description: 'Comma-separated list of allowed paths',
384
+ requirement: 'optional',
385
+ example: '/home/user/projects,/tmp'
386
+ }
387
+ ],
388
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
389
+ docsUrl: 'https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem'
390
+ },
391
+ // ========================================================================
392
+ // PRODUCTIVITY
393
+ // ========================================================================
394
+ {
395
+ slug: 'notion-mcp',
396
+ name: 'Notion MCP',
397
+ description: 'Notion workspace operations',
398
+ category: 'productivity',
399
+ npmPackage: '@anthropic/mcp-server-notion',
400
+ envVars: [
401
+ {
402
+ name: 'NOTION_API_KEY',
403
+ description: 'Notion integration token',
404
+ requirement: 'required',
405
+ example: 'secret_xxxxx'
406
+ }
407
+ ],
408
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
409
+ docsUrl: 'https://developers.notion.com/'
410
+ },
411
+ {
412
+ slug: 'linear-mcp',
413
+ name: 'Linear MCP',
414
+ description: 'Linear issue tracking and project management',
415
+ category: 'productivity',
416
+ npmPackage: '@anthropic/mcp-server-linear',
417
+ envVars: [
418
+ {
419
+ name: 'LINEAR_API_KEY',
420
+ description: 'Linear API key',
421
+ requirement: 'required',
422
+ example: 'lin_api_xxxxx'
423
+ }
424
+ ],
425
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
426
+ docsUrl: 'https://developers.linear.app/'
427
+ },
428
+ {
429
+ slug: 'slack-mcp',
430
+ name: 'Slack MCP',
431
+ description: 'Slack messaging and channel management',
432
+ category: 'communication',
433
+ npmPackage: '@anthropic/mcp-server-slack',
434
+ envVars: [
435
+ {
436
+ name: 'SLACK_BOT_TOKEN',
437
+ description: 'Slack bot OAuth token',
438
+ requirement: 'required',
439
+ example: 'xoxb-xxxxx'
440
+ }
441
+ ],
442
+ githubUrl: 'https://github.com/modelcontextprotocol/servers',
443
+ docsUrl: 'https://api.slack.com/'
444
+ },
445
+ // ========================================================================
446
+ // SEARCH
447
+ // ========================================================================
448
+ {
449
+ slug: 'perplexity-mcp',
450
+ name: 'Perplexity MCP',
451
+ description: 'AI-powered web search',
452
+ category: 'search',
453
+ npmPackage: '@anthropic/mcp-server-perplexity',
454
+ envVars: [
455
+ {
456
+ name: 'PERPLEXITY_API_KEY',
457
+ description: 'Perplexity API key',
458
+ requirement: 'required',
459
+ example: 'pplx-xxxxx'
460
+ }
461
+ ],
462
+ githubUrl: 'https://github.com/ppl-ai/modelcontextprotocol',
463
+ docsUrl: 'https://docs.perplexity.ai/'
464
+ }
465
+ ];
466
+ /**
467
+ * Get MCP registry entry by slug.
468
+ */
469
+ export function getMCPRegistryEntry(slug) {
470
+ return MCP_REGISTRY.find((entry) => entry.slug === slug);
471
+ }
472
+ /**
473
+ * Get all env vars required by a list of MCPs.
474
+ */
475
+ export function getRequiredEnvVars(mcpSlugs) {
476
+ const envVars = [];
477
+ const seen = new Set();
478
+ for (const slug of mcpSlugs) {
479
+ const entry = getMCPRegistryEntry(slug);
480
+ if (!entry)
481
+ continue;
482
+ for (const envVar of entry.envVars) {
483
+ if (!seen.has(envVar.name)) {
484
+ seen.add(envVar.name);
485
+ envVars.push(envVar);
486
+ }
487
+ }
488
+ }
489
+ return envVars;
490
+ }
491
+ //# sourceMappingURL=installation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-types.js","sourceRoot":"","sources":["../../../src/tools/project-kit/installation-types.ts"],"names":[],"mappings":"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"}