claudeup 4.18.0 → 4.22.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 (191) hide show
  1. package/bin/claudeup.js +43 -19
  2. package/package.json +14 -19
  3. package/scripts/build-binaries.ts +77 -0
  4. package/scripts/check-optional-deps.ts +49 -0
  5. package/scripts/test-isolated.ts +43 -0
  6. package/src/__tests__/alias-adopt.test.ts +364 -0
  7. package/src/__tests__/alias-parser.test.ts +92 -0
  8. package/src/__tests__/alias-shell-writer.test.ts +7 -0
  9. package/src/__tests__/alias-store.test.ts +77 -0
  10. package/src/__tests__/cli-router.test.ts +65 -0
  11. package/src/__tests__/conventions-integration.test.ts +745 -0
  12. package/src/__tests__/conventions-manager.test.ts +1172 -0
  13. package/src/__tests__/doctor-bins.test.ts +35 -0
  14. package/src/__tests__/doctor.test.ts +450 -0
  15. package/src/__tests__/dual-write-prevention.test.ts +14 -4
  16. package/src/__tests__/file-locking.test.ts +208 -0
  17. package/src/__tests__/gitignore-prerun.test.ts +1 -0
  18. package/src/__tests__/install-command.test.ts +81 -0
  19. package/src/__tests__/install-plan.test.ts +98 -0
  20. package/src/__tests__/manifest.test.ts +136 -0
  21. package/src/__tests__/marketplace-refresh.test.ts +267 -0
  22. package/src/__tests__/plugin-requires.test.ts +133 -0
  23. package/src/__tests__/plugin-setup.test.ts +118 -0
  24. package/src/__tests__/profile-command.test.ts +116 -0
  25. package/src/__tests__/profile-materializer.test.ts +82 -0
  26. package/src/__tests__/profile-sync.test.ts +136 -0
  27. package/src/__tests__/registry-version-resolution.test.ts +74 -0
  28. package/src/__tests__/resolve-executable.test.ts +42 -0
  29. package/src/__tests__/resolver.test.ts +218 -0
  30. package/src/__tests__/symlink-manager.test.ts +99 -0
  31. package/src/__tests__/toolchain.test.ts +56 -0
  32. package/src/cli/claude.ts +21 -0
  33. package/src/cli/doctor.ts +132 -0
  34. package/src/cli/install.ts +360 -0
  35. package/src/cli/profile.ts +166 -0
  36. package/src/cli/router.ts +107 -0
  37. package/src/cli/update.ts +85 -0
  38. package/src/data/alias-flags.ts +11 -1
  39. package/src/data/cli-tools.ts +7 -7
  40. package/src/data/gitignore-defaults.ts +4 -0
  41. package/src/data/marketplaces.ts +12 -0
  42. package/src/data/predefined-profiles.ts +3 -4
  43. package/src/main.tsx +11 -154
  44. package/src/prerunner/index.ts +62 -27
  45. package/src/services/alias-shell-writer.ts +382 -8
  46. package/src/services/alias-store.ts +60 -0
  47. package/src/services/claude-cli.ts +19 -22
  48. package/src/services/claude-settings.ts +99 -26
  49. package/src/services/conventions-manager.ts +865 -0
  50. package/src/services/doctor-bins.ts +49 -0
  51. package/src/services/doctor.ts +509 -0
  52. package/src/services/install-plan.ts +107 -0
  53. package/src/services/manifest.ts +166 -0
  54. package/src/services/marketplace-refresh.ts +173 -0
  55. package/src/services/plugin-manager.ts +7 -1
  56. package/src/services/plugin-requires.ts +215 -0
  57. package/src/services/plugin-setup.ts +61 -4
  58. package/src/services/plugin-version-check.ts +9 -4
  59. package/src/services/profile-materializer.ts +61 -0
  60. package/src/services/profile-sync.ts +150 -0
  61. package/src/services/resolver.ts +293 -0
  62. package/src/services/symlink-manager.ts +146 -0
  63. package/src/services/toolchain.ts +97 -0
  64. package/src/services/version-check.ts +10 -11
  65. package/src/types/index.ts +138 -31
  66. package/src/ui/App.tsx +16 -11
  67. package/src/ui/components/FlagDetailEditor.tsx +0 -0
  68. package/src/ui/components/modals/ConfirmModal.tsx +1 -1
  69. package/src/ui/screens/AliasScreen.tsx +491 -359
  70. package/src/ui/screens/CliToolsScreen.tsx +11 -3
  71. package/src/ui/screens/PluginsScreen.tsx +3 -1
  72. package/src/ui/screens/index.ts +0 -1
  73. package/src/ui/state/reducer.ts +6 -102
  74. package/src/ui/state/types.ts +8 -35
  75. package/src/utils/command-utils.ts +23 -0
  76. package/src/utils/file-locking.ts +144 -0
  77. package/src/data/alias-flags.js +0 -196
  78. package/src/data/cli-tools.js +0 -123
  79. package/src/data/gitignore-defaults.js +0 -24
  80. package/src/data/gitignore-reasons.js +0 -97
  81. package/src/data/gitignore-templates.js +0 -21
  82. package/src/data/marketplaces.js +0 -138
  83. package/src/data/mcp-servers.js +0 -509
  84. package/src/data/predefined-profiles.js +0 -248
  85. package/src/data/settings-catalog.js +0 -625
  86. package/src/data/skill-repos.js +0 -160
  87. package/src/data/statuslines.js +0 -159
  88. package/src/data/statuslines.ts +0 -188
  89. package/src/index.js +0 -4
  90. package/src/index.ts +0 -5
  91. package/src/main.js +0 -170
  92. package/src/prerunner/index.js +0 -252
  93. package/src/services/alias-settings.js +0 -51
  94. package/src/services/alias-shell-writer.js +0 -764
  95. package/src/services/alias-store.js +0 -77
  96. package/src/services/claude-cli.js +0 -189
  97. package/src/services/claude-runner.js +0 -28
  98. package/src/services/claude-settings.js +0 -1223
  99. package/src/services/gitignore-detector.js +0 -155
  100. package/src/services/gitignore-fixer.js +0 -231
  101. package/src/services/gitignore-prerun.js +0 -46
  102. package/src/services/gitignore-resolver.js +0 -143
  103. package/src/services/gitignore-service.js +0 -117
  104. package/src/services/local-marketplace.js +0 -339
  105. package/src/services/marketplace-fetcher.js +0 -96
  106. package/src/services/marketplace-sync.js +0 -94
  107. package/src/services/mcp-registry.js +0 -87
  108. package/src/services/plugin-manager.js +0 -473
  109. package/src/services/plugin-mcp-config.js +0 -177
  110. package/src/services/plugin-setup.js +0 -444
  111. package/src/services/plugin-version-check.js +0 -262
  112. package/src/services/profiles.js +0 -161
  113. package/src/services/settings-manager.js +0 -243
  114. package/src/services/skills-manager.js +0 -393
  115. package/src/services/skillsmp-client.js +0 -87
  116. package/src/services/update-cache.js +0 -52
  117. package/src/services/version-check.js +0 -99
  118. package/src/types/gitignore.js +0 -6
  119. package/src/types/index.js +0 -1
  120. package/src/ui/App.js +0 -346
  121. package/src/ui/adapters/pluginsAdapter.js +0 -139
  122. package/src/ui/adapters/settingsAdapter.js +0 -111
  123. package/src/ui/adapters/skillsAdapter.js +0 -154
  124. package/src/ui/components/CategoryHeader.js +0 -9
  125. package/src/ui/components/EmptyFilterState.js +0 -4
  126. package/src/ui/components/ScopeIndicator.js +0 -30
  127. package/src/ui/components/ScrollableList.js +0 -36
  128. package/src/ui/components/SearchInput.js +0 -19
  129. package/src/ui/components/StyledText.js +0 -39
  130. package/src/ui/components/TabBar.js +0 -19
  131. package/src/ui/components/layout/FooterHints.js +0 -29
  132. package/src/ui/components/layout/Panel.js +0 -6
  133. package/src/ui/components/layout/ProgressBar.js +0 -14
  134. package/src/ui/components/layout/ScopeTabs.js +0 -6
  135. package/src/ui/components/layout/ScreenLayout.js +0 -16
  136. package/src/ui/components/layout/index.js +0 -5
  137. package/src/ui/components/modals/ConfirmModal.js +0 -14
  138. package/src/ui/components/modals/InputModal.js +0 -5
  139. package/src/ui/components/modals/LoadingModal.js +0 -17
  140. package/src/ui/components/modals/MessageModal.js +0 -16
  141. package/src/ui/components/modals/ModalContainer.js +0 -137
  142. package/src/ui/components/modals/SelectModal.js +0 -18
  143. package/src/ui/components/modals/VersionMismatchModal.js +0 -36
  144. package/src/ui/components/modals/index.js +0 -6
  145. package/src/ui/components/primitives/ActionHints.js +0 -13
  146. package/src/ui/components/primitives/DetailSection.js +0 -7
  147. package/src/ui/components/primitives/KeyValueLine.js +0 -8
  148. package/src/ui/components/primitives/ListCategoryRow.js +0 -8
  149. package/src/ui/components/primitives/MetaText.js +0 -8
  150. package/src/ui/components/primitives/ScopeDetail.js +0 -32
  151. package/src/ui/components/primitives/ScopeSquares.js +0 -11
  152. package/src/ui/components/primitives/SelectableRow.js +0 -5
  153. package/src/ui/components/primitives/index.js +0 -8
  154. package/src/ui/hooks/index.js +0 -4
  155. package/src/ui/hooks/useAsyncData.js +0 -77
  156. package/src/ui/hooks/useGitignoreModal.js +0 -74
  157. package/src/ui/hooks/useKeyboard.js +0 -13
  158. package/src/ui/hooks/useKeyboardHandler.js +0 -39
  159. package/src/ui/hooks/useMismatchModal.js +0 -77
  160. package/src/ui/registry.js +0 -1
  161. package/src/ui/renderers/cliToolRenderers.js +0 -54
  162. package/src/ui/renderers/gitignoreRenderers.js +0 -46
  163. package/src/ui/renderers/mcpRenderers.js +0 -26
  164. package/src/ui/renderers/pluginRenderers.js +0 -124
  165. package/src/ui/renderers/profileRenderers.js +0 -177
  166. package/src/ui/renderers/settingsRenderers.js +0 -73
  167. package/src/ui/renderers/skillRenderers.js +0 -138
  168. package/src/ui/screens/AliasScreen.js +0 -1008
  169. package/src/ui/screens/CliToolsScreen.js +0 -338
  170. package/src/ui/screens/EnvVarsScreen.js +0 -152
  171. package/src/ui/screens/GitignoreScreen.js +0 -328
  172. package/src/ui/screens/McpRegistryScreen.js +0 -238
  173. package/src/ui/screens/McpScreen.js +0 -176
  174. package/src/ui/screens/ModelSelectorScreen.js +0 -296
  175. package/src/ui/screens/ModelSelectorScreen.tsx +0 -444
  176. package/src/ui/screens/PluginsScreen.js +0 -766
  177. package/src/ui/screens/ProfilesScreen.js +0 -298
  178. package/src/ui/screens/SkillsScreen.js +0 -549
  179. package/src/ui/screens/StatusLineScreen.js +0 -206
  180. package/src/ui/screens/StatusLineScreen.tsx +0 -416
  181. package/src/ui/screens/index.js +0 -10
  182. package/src/ui/state/AnimationContext.js +0 -34
  183. package/src/ui/state/AppContext.js +0 -162
  184. package/src/ui/state/DimensionsContext.js +0 -71
  185. package/src/ui/state/reducer.js +0 -543
  186. package/src/ui/state/types.js +0 -1
  187. package/src/ui/theme.js +0 -47
  188. package/src/utils/clipboard.js +0 -56
  189. package/src/utils/command-utils.js +0 -19
  190. package/src/utils/fuzzy-search.js +0 -101
  191. package/src/utils/string-utils.js +0 -62
@@ -1,509 +0,0 @@
1
- export const curatedMcpServers = [
2
- // ═══════════════════════════════════════════════════════════════
3
- // BROWSER & AUTOMATION
4
- // ═══════════════════════════════════════════════════════════════
5
- {
6
- name: "chrome-devtools",
7
- description: "Control Chrome browser, inspect DOM, debug JavaScript, capture screenshots",
8
- command: "npx",
9
- args: ["-y", "chrome-devtools-mcp@latest"],
10
- category: "browser",
11
- requiresConfig: false,
12
- },
13
- {
14
- name: "puppeteer",
15
- description: "Headless browser automation for testing and scraping",
16
- command: "npx",
17
- args: ["-y", "@anthropic/mcp-server-puppeteer"],
18
- category: "browser",
19
- requiresConfig: false,
20
- },
21
- // ═══════════════════════════════════════════════════════════════
22
- // AI & SEARCH
23
- // ═══════════════════════════════════════════════════════════════
24
- {
25
- name: "claude-context",
26
- description: "Semantic code search with vector embeddings (Zilliz/Milvus)",
27
- command: "npx",
28
- args: ["-y", "@zilliz/claude-context-mcp@latest"],
29
- env: {
30
- OPENAI_API_KEY: "${OPENAI_API_KEY}",
31
- MILVUS_ADDRESS: "${MILVUS_ADDRESS}",
32
- MILVUS_TOKEN: "${MILVUS_TOKEN}",
33
- },
34
- category: "ai",
35
- requiresConfig: true,
36
- configFields: [
37
- {
38
- name: "OPENAI_API_KEY",
39
- label: "OpenAI API Key (for embeddings)",
40
- type: "string",
41
- required: true,
42
- envVar: "OPENAI_API_KEY",
43
- },
44
- {
45
- name: "MILVUS_ADDRESS",
46
- label: "Zilliz Cloud Public Endpoint",
47
- type: "url",
48
- required: true,
49
- envVar: "MILVUS_ADDRESS",
50
- },
51
- {
52
- name: "MILVUS_TOKEN",
53
- label: "Zilliz Cloud API Key",
54
- type: "string",
55
- required: true,
56
- envVar: "MILVUS_TOKEN",
57
- },
58
- ],
59
- },
60
- {
61
- name: "exa",
62
- description: "AI-powered web search with neural search capabilities",
63
- type: "http",
64
- url: "https://mcp.exa.ai/mcp",
65
- category: "ai",
66
- requiresConfig: false,
67
- },
68
- {
69
- name: "sequential-thinking",
70
- description: "Enhanced reasoning with step-by-step thinking",
71
- command: "npx",
72
- args: ["-y", "@anthropic/mcp-server-sequential-thinking"],
73
- category: "ai",
74
- requiresConfig: false,
75
- },
76
- // ═══════════════════════════════════════════════════════════════
77
- // DESIGN & CREATIVE
78
- // ═══════════════════════════════════════════════════════════════
79
- {
80
- name: "figma",
81
- description: "Access Figma designs, components, and design tokens",
82
- type: "http",
83
- url: "https://mcp.figma.com/mcp",
84
- category: "design",
85
- requiresConfig: false,
86
- },
87
- // ═══════════════════════════════════════════════════════════════
88
- // CLOUD & INFRASTRUCTURE (AWS)
89
- // ═══════════════════════════════════════════════════════════════
90
- {
91
- name: "aws-kb-retrieval",
92
- description: "AWS Bedrock Knowledge Base retrieval and RAG",
93
- command: "uvx",
94
- args: ["awslabs.aws-kb-retrieval-mcp-server@latest"],
95
- env: {
96
- AWS_PROFILE: "${AWS_PROFILE}",
97
- AWS_REGION: "${AWS_REGION}",
98
- },
99
- category: "cloud",
100
- requiresConfig: true,
101
- configFields: [
102
- {
103
- name: "AWS_PROFILE",
104
- label: "AWS Profile Name",
105
- type: "string",
106
- required: false,
107
- default: "default",
108
- envVar: "AWS_PROFILE",
109
- },
110
- {
111
- name: "AWS_REGION",
112
- label: "AWS Region",
113
- type: "string",
114
- required: true,
115
- default: "us-east-1",
116
- envVar: "AWS_REGION",
117
- },
118
- ],
119
- },
120
- {
121
- name: "aws-cdk",
122
- description: "AWS CDK infrastructure as code assistance",
123
- command: "uvx",
124
- args: ["awslabs.cdk-mcp-server@latest"],
125
- env: {
126
- AWS_PROFILE: "${AWS_PROFILE}",
127
- AWS_REGION: "${AWS_REGION}",
128
- },
129
- category: "cloud",
130
- requiresConfig: true,
131
- configFields: [
132
- {
133
- name: "AWS_PROFILE",
134
- label: "AWS Profile Name",
135
- type: "string",
136
- required: false,
137
- default: "default",
138
- envVar: "AWS_PROFILE",
139
- },
140
- {
141
- name: "AWS_REGION",
142
- label: "AWS Region",
143
- type: "string",
144
- required: true,
145
- default: "us-east-1",
146
- envVar: "AWS_REGION",
147
- },
148
- ],
149
- },
150
- {
151
- name: "aws-cloudwatch-logs",
152
- description: "Query and analyze AWS CloudWatch Logs",
153
- command: "uvx",
154
- args: ["awslabs.cloudwatch-logs-mcp-server@latest"],
155
- env: {
156
- AWS_PROFILE: "${AWS_PROFILE}",
157
- AWS_REGION: "${AWS_REGION}",
158
- },
159
- category: "cloud",
160
- requiresConfig: true,
161
- configFields: [
162
- {
163
- name: "AWS_PROFILE",
164
- label: "AWS Profile Name",
165
- type: "string",
166
- required: false,
167
- default: "default",
168
- envVar: "AWS_PROFILE",
169
- },
170
- {
171
- name: "AWS_REGION",
172
- label: "AWS Region",
173
- type: "string",
174
- required: true,
175
- default: "us-east-1",
176
- envVar: "AWS_REGION",
177
- },
178
- ],
179
- },
180
- {
181
- name: "aws-cost-analysis",
182
- description: "AWS cost analysis and optimization recommendations",
183
- command: "uvx",
184
- args: ["awslabs.cost-analysis-mcp-server@latest"],
185
- env: {
186
- AWS_PROFILE: "${AWS_PROFILE}",
187
- AWS_REGION: "${AWS_REGION}",
188
- },
189
- category: "cloud",
190
- requiresConfig: true,
191
- configFields: [
192
- {
193
- name: "AWS_PROFILE",
194
- label: "AWS Profile Name",
195
- type: "string",
196
- required: false,
197
- default: "default",
198
- envVar: "AWS_PROFILE",
199
- },
200
- {
201
- name: "AWS_REGION",
202
- label: "AWS Region",
203
- type: "string",
204
- required: true,
205
- default: "us-east-1",
206
- envVar: "AWS_REGION",
207
- },
208
- ],
209
- },
210
- // ═══════════════════════════════════════════════════════════════
211
- // DATABASE
212
- // ═══════════════════════════════════════════════════════════════
213
- {
214
- name: "postgres",
215
- description: "Query PostgreSQL databases with read-only access",
216
- command: "npx",
217
- args: ["-y", "@anthropic/mcp-server-postgres"],
218
- env: {
219
- DATABASE_URL: "${DATABASE_URL}",
220
- },
221
- category: "database",
222
- requiresConfig: true,
223
- configFields: [
224
- {
225
- name: "DATABASE_URL",
226
- label: "PostgreSQL Connection URL",
227
- type: "url",
228
- required: true,
229
- envVar: "DATABASE_URL",
230
- },
231
- ],
232
- },
233
- {
234
- name: "sqlite",
235
- description: "Query SQLite databases locally",
236
- command: "npx",
237
- args: ["-y", "@anthropic/mcp-server-sqlite", "${DATABASE_PATH}"],
238
- category: "database",
239
- requiresConfig: true,
240
- configFields: [
241
- {
242
- name: "DATABASE_PATH",
243
- label: "SQLite Database File Path",
244
- type: "path",
245
- required: true,
246
- },
247
- ],
248
- },
249
- // ═══════════════════════════════════════════════════════════════
250
- // DEVELOPER TOOLS
251
- // ═══════════════════════════════════════════════════════════════
252
- {
253
- name: "github",
254
- description: "Manage GitHub repos, issues, PRs, and actions",
255
- command: "npx",
256
- args: ["-y", "@anthropic/mcp-server-github"],
257
- env: {
258
- GITHUB_TOKEN: "${GITHUB_TOKEN}",
259
- },
260
- category: "dev-tools",
261
- requiresConfig: true,
262
- configFields: [
263
- {
264
- name: "GITHUB_TOKEN",
265
- label: "GitHub Personal Access Token",
266
- type: "string",
267
- required: true,
268
- envVar: "GITHUB_TOKEN",
269
- },
270
- ],
271
- },
272
- {
273
- name: "gitlab",
274
- description: "Manage GitLab repos, merge requests, and pipelines",
275
- command: "npx",
276
- args: ["-y", "@anthropic/mcp-server-gitlab"],
277
- env: {
278
- GITLAB_TOKEN: "${GITLAB_TOKEN}",
279
- GITLAB_URL: "${GITLAB_URL}",
280
- },
281
- category: "dev-tools",
282
- requiresConfig: true,
283
- configFields: [
284
- {
285
- name: "GITLAB_TOKEN",
286
- label: "GitLab Personal Access Token",
287
- type: "string",
288
- required: true,
289
- envVar: "GITLAB_TOKEN",
290
- },
291
- {
292
- name: "GITLAB_URL",
293
- label: "GitLab URL (self-hosted)",
294
- type: "url",
295
- required: false,
296
- default: "https://gitlab.com",
297
- envVar: "GITLAB_URL",
298
- },
299
- ],
300
- },
301
- {
302
- name: "filesystem",
303
- description: "Read, write, and search files in allowed directories",
304
- command: "npx",
305
- args: ["-y", "@anthropic/mcp-server-filesystem", "${ALLOWED_PATH}"],
306
- category: "dev-tools",
307
- requiresConfig: true,
308
- configFields: [
309
- {
310
- name: "ALLOWED_PATH",
311
- label: "Allowed Directory Path",
312
- type: "path",
313
- required: true,
314
- default: ".",
315
- },
316
- ],
317
- },
318
- // ═══════════════════════════════════════════════════════════════
319
- // PRODUCTIVITY
320
- // ═══════════════════════════════════════════════════════════════
321
- {
322
- name: "slack",
323
- description: "Send messages and interact with Slack channels",
324
- command: "npx",
325
- args: ["-y", "@anthropic/mcp-server-slack"],
326
- env: {
327
- SLACK_BOT_TOKEN: "${SLACK_BOT_TOKEN}",
328
- },
329
- category: "productivity",
330
- requiresConfig: true,
331
- configFields: [
332
- {
333
- name: "SLACK_BOT_TOKEN",
334
- label: "Slack Bot Token (xoxb-...)",
335
- type: "string",
336
- required: true,
337
- envVar: "SLACK_BOT_TOKEN",
338
- },
339
- ],
340
- },
341
- {
342
- name: "google-drive",
343
- description: "Access and search Google Drive files",
344
- command: "npx",
345
- args: ["-y", "@anthropic/mcp-server-google-drive"],
346
- category: "productivity",
347
- requiresConfig: true,
348
- configFields: [
349
- {
350
- name: "GOOGLE_CREDENTIALS",
351
- label: "Google OAuth Credentials JSON Path",
352
- type: "path",
353
- required: true,
354
- envVar: "GOOGLE_APPLICATION_CREDENTIALS",
355
- },
356
- ],
357
- },
358
- {
359
- name: "memory",
360
- description: "Persistent memory storage across conversations",
361
- command: "npx",
362
- args: ["-y", "@anthropic/mcp-server-memory"],
363
- category: "productivity",
364
- requiresConfig: false,
365
- },
366
- {
367
- name: "fetch",
368
- description: "Make HTTP requests to external APIs",
369
- command: "npx",
370
- args: ["-y", "@anthropic/mcp-server-fetch"],
371
- category: "productivity",
372
- requiresConfig: false,
373
- },
374
- // ═══════════════════════════════════════════════════════════════
375
- // SEO & ANALYTICS
376
- // ═══════════════════════════════════════════════════════════════
377
- {
378
- name: "google-analytics",
379
- description: "Google Analytics 4 data - page views, engagement, conversions",
380
- command: "npx",
381
- args: ["-y", "mcp-server-google-analytics"],
382
- env: {
383
- GOOGLE_APPLICATION_CREDENTIALS: "${GOOGLE_APPLICATION_CREDENTIALS}",
384
- GA_PROPERTY_ID: "${GA_PROPERTY_ID}",
385
- },
386
- category: "seo",
387
- requiresConfig: true,
388
- configFields: [
389
- {
390
- name: "GOOGLE_APPLICATION_CREDENTIALS",
391
- label: "Service Account JSON Path",
392
- type: "path",
393
- required: true,
394
- envVar: "GOOGLE_APPLICATION_CREDENTIALS",
395
- },
396
- {
397
- name: "GA_PROPERTY_ID",
398
- label: "GA4 Property ID (properties/123456789)",
399
- type: "string",
400
- required: true,
401
- envVar: "GA_PROPERTY_ID",
402
- },
403
- ],
404
- },
405
- {
406
- name: "google-search-console",
407
- description: "Search Console - impressions, clicks, CTR, Core Web Vitals",
408
- command: "npx",
409
- args: ["-y", "mcp-server-gsc"],
410
- env: {
411
- GOOGLE_APPLICATION_CREDENTIALS: "${GOOGLE_APPLICATION_CREDENTIALS}",
412
- GSC_SITE_URL: "${GSC_SITE_URL}",
413
- },
414
- category: "seo",
415
- requiresConfig: true,
416
- configFields: [
417
- {
418
- name: "GOOGLE_APPLICATION_CREDENTIALS",
419
- label: "Service Account JSON Path",
420
- type: "path",
421
- required: true,
422
- envVar: "GOOGLE_APPLICATION_CREDENTIALS",
423
- },
424
- {
425
- name: "GSC_SITE_URL",
426
- label: "Site URL (https://example.com)",
427
- type: "url",
428
- required: true,
429
- envVar: "GSC_SITE_URL",
430
- },
431
- ],
432
- },
433
- {
434
- name: "se-ranking",
435
- description: "SE Ranking - keyword rankings, backlinks, competitor analysis (requires Docker)",
436
- command: "docker",
437
- args: [
438
- "run",
439
- "-i",
440
- "--rm",
441
- "-e",
442
- "SERANKING_API_TOKEN=${SERANKING_API_TOKEN}",
443
- "seranking/seo-data-api-mcp-server:latest",
444
- ],
445
- env: {
446
- SERANKING_API_TOKEN: "${SERANKING_API_TOKEN}",
447
- },
448
- category: "seo",
449
- requiresConfig: true,
450
- configFields: [
451
- {
452
- name: "SERANKING_API_TOKEN",
453
- label: "SE Ranking API Token",
454
- type: "string",
455
- required: true,
456
- envVar: "SERANKING_API_TOKEN",
457
- },
458
- ],
459
- },
460
- ];
461
- export function getMcpServersByCategory() {
462
- const categories = {};
463
- for (const server of curatedMcpServers) {
464
- if (!categories[server.category]) {
465
- categories[server.category] = [];
466
- }
467
- categories[server.category].push(server);
468
- }
469
- return categories;
470
- }
471
- export const categoryOrder = [
472
- "browser",
473
- "ai",
474
- "design",
475
- "dev-tools",
476
- "cloud",
477
- "database",
478
- "seo",
479
- "productivity",
480
- ];
481
- export function getCategoryDisplayName(category) {
482
- const names = {
483
- browser: "Browser & Automation",
484
- ai: "AI & Search",
485
- design: "Design & Creative",
486
- "dev-tools": "Developer Tools",
487
- cloud: "Cloud & Infrastructure",
488
- database: "Database",
489
- seo: "SEO & Analytics",
490
- productivity: "Productivity",
491
- };
492
- return names[category] || category;
493
- }
494
- export function getCategoryIcon(category) {
495
- const icons = {
496
- browser: "🌐",
497
- ai: "🤖",
498
- design: "🎨",
499
- "dev-tools": "🛠️",
500
- cloud: "☁️",
501
- database: "🗄️",
502
- seo: "📈",
503
- productivity: "📋",
504
- };
505
- return icons[category] || "📦";
506
- }
507
- export function getAllMcpServers() {
508
- return curatedMcpServers;
509
- }