modular-studio 1.0.6 → 1.1.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 (198) hide show
  1. package/dist/assets/Badge-Bsy2H_p2.js +1 -0
  2. package/dist/assets/GraphPanel-D4X3faxA.js +47 -0
  3. package/dist/assets/{Input-ndEGQSgx.js → Input-Dyb88Erk.js} +1 -1
  4. package/dist/assets/KnowledgeTab-BccWz7Np.js +5 -0
  5. package/dist/assets/MemoryTab-Y_66cE01.js +16 -0
  6. package/dist/assets/QualificationTab-Dm9dEIpM.js +1 -0
  7. package/dist/assets/ReviewTab-BrfXSyyf.js +104 -0
  8. package/dist/assets/{Section-CgmwAj_2.js → Section-68XDCFTl.js} +1 -1
  9. package/dist/assets/TestTab-CLKRT63X.js +42 -0
  10. package/dist/assets/{ToolsTab-C10Ulm8b.js → ToolsTab-xumi9Uds.js} +1 -1
  11. package/dist/assets/icons-CS8RUPBi.js +1 -0
  12. package/dist/assets/index-B2bm0161.css +1 -0
  13. package/dist/assets/index-C626nWuA.js +422 -0
  14. package/dist/assets/services-BDk6yY4o.js +369 -0
  15. package/dist/index.html +4 -4
  16. package/dist-server/bin/modular-mcp.js +1 -0
  17. package/dist-server/server/index.d.ts.map +1 -1
  18. package/dist-server/server/index.js +30 -0
  19. package/dist-server/server/mcp/manager.d.ts +3 -0
  20. package/dist-server/server/mcp/manager.d.ts.map +1 -1
  21. package/dist-server/server/mcp/manager.js +64 -3
  22. package/dist-server/server/migrations/index.d.ts +11 -0
  23. package/dist-server/server/migrations/index.d.ts.map +1 -0
  24. package/dist-server/server/migrations/index.js +57 -0
  25. package/dist-server/server/routes/analytics.d.ts +3 -0
  26. package/dist-server/server/routes/analytics.d.ts.map +1 -0
  27. package/dist-server/server/routes/analytics.js +24 -0
  28. package/dist-server/server/routes/connectors/airtable.d.ts +7 -0
  29. package/dist-server/server/routes/connectors/airtable.d.ts.map +1 -0
  30. package/dist-server/server/routes/connectors/airtable.js +119 -0
  31. package/dist-server/server/routes/connectors/confluence.d.ts +7 -0
  32. package/dist-server/server/routes/connectors/confluence.d.ts.map +1 -0
  33. package/dist-server/server/routes/connectors/confluence.js +176 -0
  34. package/dist-server/server/routes/connectors/github.d.ts +7 -0
  35. package/dist-server/server/routes/connectors/github.d.ts.map +1 -0
  36. package/dist-server/server/routes/connectors/github.js +195 -0
  37. package/dist-server/server/routes/connectors/gmail.d.ts +7 -0
  38. package/dist-server/server/routes/connectors/gmail.d.ts.map +1 -0
  39. package/dist-server/server/routes/connectors/gmail.js +115 -0
  40. package/dist-server/server/routes/connectors/google-docs.d.ts +10 -0
  41. package/dist-server/server/routes/connectors/google-docs.d.ts.map +1 -0
  42. package/dist-server/server/routes/connectors/google-docs.js +165 -0
  43. package/dist-server/server/routes/connectors/google-drive.d.ts +7 -0
  44. package/dist-server/server/routes/connectors/google-drive.d.ts.map +1 -0
  45. package/dist-server/server/routes/connectors/google-drive.js +163 -0
  46. package/dist-server/server/routes/connectors/google-sheets.d.ts +7 -0
  47. package/dist-server/server/routes/connectors/google-sheets.d.ts.map +1 -0
  48. package/dist-server/server/routes/connectors/google-sheets.js +90 -0
  49. package/dist-server/server/routes/connectors/hubspot.d.ts +7 -0
  50. package/dist-server/server/routes/connectors/hubspot.d.ts.map +1 -0
  51. package/dist-server/server/routes/connectors/hubspot.js +134 -0
  52. package/dist-server/server/routes/connectors/index.d.ts +6 -0
  53. package/dist-server/server/routes/connectors/index.d.ts.map +1 -0
  54. package/dist-server/server/routes/connectors/index.js +38 -0
  55. package/dist-server/server/routes/connectors/jira.d.ts +7 -0
  56. package/dist-server/server/routes/connectors/jira.d.ts.map +1 -0
  57. package/dist-server/server/routes/connectors/jira.js +151 -0
  58. package/dist-server/server/routes/connectors/linear.d.ts +7 -0
  59. package/dist-server/server/routes/connectors/linear.d.ts.map +1 -0
  60. package/dist-server/server/routes/connectors/linear.js +154 -0
  61. package/dist-server/server/routes/connectors/notion.d.ts +10 -0
  62. package/dist-server/server/routes/connectors/notion.d.ts.map +1 -0
  63. package/dist-server/server/routes/connectors/notion.js +201 -0
  64. package/dist-server/server/routes/connectors/plane.d.ts +10 -0
  65. package/dist-server/server/routes/connectors/plane.d.ts.map +1 -0
  66. package/dist-server/server/routes/connectors/plane.js +189 -0
  67. package/dist-server/server/routes/connectors/shared.d.ts +25 -0
  68. package/dist-server/server/routes/connectors/shared.d.ts.map +1 -0
  69. package/dist-server/server/routes/connectors/shared.js +202 -0
  70. package/dist-server/server/routes/connectors/slack.d.ts +7 -0
  71. package/dist-server/server/routes/connectors/slack.d.ts.map +1 -0
  72. package/dist-server/server/routes/connectors/slack.js +153 -0
  73. package/dist-server/server/routes/cost.d.ts +3 -0
  74. package/dist-server/server/routes/cost.d.ts.map +1 -0
  75. package/dist-server/server/routes/cost.js +113 -0
  76. package/dist-server/server/routes/graph.d.ts +11 -0
  77. package/dist-server/server/routes/graph.d.ts.map +1 -0
  78. package/dist-server/server/routes/graph.js +213 -0
  79. package/dist-server/server/routes/lessons.d.ts.map +1 -1
  80. package/dist-server/server/routes/lessons.js +119 -5
  81. package/dist-server/server/routes/llm.d.ts.map +1 -1
  82. package/dist-server/server/routes/llm.js +85 -18
  83. package/dist-server/server/routes/metaprompt-v2.d.ts +3 -0
  84. package/dist-server/server/routes/metaprompt-v2.d.ts.map +1 -0
  85. package/dist-server/server/routes/metaprompt-v2.js +104 -0
  86. package/dist-server/server/routes/qualification.d.ts.map +1 -1
  87. package/dist-server/server/routes/qualification.js +61 -11
  88. package/dist-server/server/routes/skills-search.d.ts.map +1 -1
  89. package/dist-server/server/routes/skills-search.js +10 -0
  90. package/dist-server/server/routes/tool-analytics.d.ts +3 -0
  91. package/dist-server/server/routes/tool-analytics.d.ts.map +1 -0
  92. package/dist-server/server/routes/tool-analytics.js +47 -0
  93. package/dist-server/server/services/adapters/sqliteAdapter.d.ts +1 -0
  94. package/dist-server/server/services/adapters/sqliteAdapter.d.ts.map +1 -1
  95. package/dist-server/server/services/adapters/sqliteAdapter.js +78 -48
  96. package/dist-server/server/services/credentialStore.d.ts +10 -0
  97. package/dist-server/server/services/credentialStore.d.ts.map +1 -0
  98. package/dist-server/server/services/credentialStore.js +123 -0
  99. package/dist-server/server/services/hindsightClient.d.ts.map +1 -1
  100. package/dist-server/server/services/hindsightClient.js +1 -0
  101. package/dist-server/server/services/lessonExtractor.d.ts +2 -0
  102. package/dist-server/server/services/lessonExtractor.d.ts.map +1 -1
  103. package/dist-server/server/services/lessonExtractor.js +7 -2
  104. package/dist-server/server/services/repoIndexer.d.ts +7 -1
  105. package/dist-server/server/services/repoIndexer.d.ts.map +1 -1
  106. package/dist-server/server/services/repoIndexer.js +295 -94
  107. package/dist-server/server/services/sqliteStore.d.ts +64 -0
  108. package/dist-server/server/services/sqliteStore.d.ts.map +1 -1
  109. package/dist-server/server/services/sqliteStore.js +238 -0
  110. package/dist-server/src/config.d.ts +2 -0
  111. package/dist-server/src/config.d.ts.map +1 -0
  112. package/dist-server/src/config.js +3 -0
  113. package/dist-server/src/graph/db.d.ts +46 -0
  114. package/dist-server/src/graph/db.d.ts.map +1 -0
  115. package/dist-server/src/graph/db.js +241 -0
  116. package/dist-server/src/graph/extractors/code.d.ts +12 -0
  117. package/dist-server/src/graph/extractors/code.d.ts.map +1 -0
  118. package/dist-server/src/graph/extractors/code.js +239 -0
  119. package/dist-server/src/graph/extractors/cross-type.d.ts +16 -0
  120. package/dist-server/src/graph/extractors/cross-type.d.ts.map +1 -0
  121. package/dist-server/src/graph/extractors/cross-type.js +67 -0
  122. package/dist-server/src/graph/extractors/markdown.d.ts +29 -0
  123. package/dist-server/src/graph/extractors/markdown.d.ts.map +1 -0
  124. package/dist-server/src/graph/extractors/markdown.js +224 -0
  125. package/dist-server/src/graph/extractors/yaml.d.ts +15 -0
  126. package/dist-server/src/graph/extractors/yaml.d.ts.map +1 -0
  127. package/dist-server/src/graph/extractors/yaml.js +104 -0
  128. package/dist-server/src/graph/index.d.ts +62 -0
  129. package/dist-server/src/graph/index.d.ts.map +1 -0
  130. package/dist-server/src/graph/index.js +67 -0
  131. package/dist-server/src/graph/packer.d.ts +19 -0
  132. package/dist-server/src/graph/packer.d.ts.map +1 -0
  133. package/dist-server/src/graph/packer.js +134 -0
  134. package/dist-server/src/graph/resolver.d.ts +12 -0
  135. package/dist-server/src/graph/resolver.d.ts.map +1 -0
  136. package/dist-server/src/graph/resolver.js +81 -0
  137. package/dist-server/src/graph/scanner.d.ts +34 -0
  138. package/dist-server/src/graph/scanner.d.ts.map +1 -0
  139. package/dist-server/src/graph/scanner.js +252 -0
  140. package/dist-server/src/graph/traverser.d.ts +17 -0
  141. package/dist-server/src/graph/traverser.d.ts.map +1 -0
  142. package/dist-server/src/graph/traverser.js +185 -0
  143. package/dist-server/src/graph/types.d.ts +117 -0
  144. package/dist-server/src/graph/types.d.ts.map +1 -0
  145. package/dist-server/src/graph/types.js +63 -0
  146. package/dist-server/src/metaprompt/v2/assembler.d.ts +3 -0
  147. package/dist-server/src/metaprompt/v2/assembler.d.ts.map +1 -0
  148. package/dist-server/src/metaprompt/v2/assembler.js +261 -0
  149. package/dist-server/src/metaprompt/v2/context-strategist.d.ts +3 -0
  150. package/dist-server/src/metaprompt/v2/context-strategist.d.ts.map +1 -0
  151. package/dist-server/src/metaprompt/v2/context-strategist.js +173 -0
  152. package/dist-server/src/metaprompt/v2/evaluator.d.ts +3 -0
  153. package/dist-server/src/metaprompt/v2/evaluator.d.ts.map +1 -0
  154. package/dist-server/src/metaprompt/v2/evaluator.js +281 -0
  155. package/dist-server/src/metaprompt/v2/index.d.ts +41 -0
  156. package/dist-server/src/metaprompt/v2/index.d.ts.map +1 -0
  157. package/dist-server/src/metaprompt/v2/index.js +90 -0
  158. package/dist-server/src/metaprompt/v2/parser.d.ts +3 -0
  159. package/dist-server/src/metaprompt/v2/parser.d.ts.map +1 -0
  160. package/dist-server/src/metaprompt/v2/parser.js +138 -0
  161. package/dist-server/src/metaprompt/v2/pattern-selector.d.ts +3 -0
  162. package/dist-server/src/metaprompt/v2/pattern-selector.d.ts.map +1 -0
  163. package/dist-server/src/metaprompt/v2/pattern-selector.js +154 -0
  164. package/dist-server/src/metaprompt/v2/researcher.d.ts +3 -0
  165. package/dist-server/src/metaprompt/v2/researcher.d.ts.map +1 -0
  166. package/dist-server/src/metaprompt/v2/researcher.js +194 -0
  167. package/dist-server/src/metaprompt/v2/tool-discovery.d.ts +74 -0
  168. package/dist-server/src/metaprompt/v2/tool-discovery.d.ts.map +1 -0
  169. package/dist-server/src/metaprompt/v2/tool-discovery.js +290 -0
  170. package/dist-server/src/metaprompt/v2/types.d.ts +154 -0
  171. package/dist-server/src/metaprompt/v2/types.d.ts.map +1 -0
  172. package/dist-server/src/metaprompt/v2/types.js +2 -0
  173. package/dist-server/src/services/contradictionDetector.js +1 -1
  174. package/dist-server/src/services/llmService.d.ts +61 -0
  175. package/dist-server/src/services/llmService.d.ts.map +1 -0
  176. package/dist-server/src/services/llmService.js +222 -0
  177. package/dist-server/src/store/knowledgeBase.d.ts +5 -1
  178. package/dist-server/src/store/knowledgeBase.d.ts.map +1 -1
  179. package/dist-server/src/store/knowledgeBase.js +0 -1
  180. package/dist-server/src/store/mcp-registry.d.ts +29 -0
  181. package/dist-server/src/store/mcp-registry.d.ts.map +1 -0
  182. package/dist-server/src/store/mcp-registry.js +1303 -0
  183. package/dist-server/src/types/registry.types.d.ts +13 -0
  184. package/dist-server/src/types/registry.types.d.ts.map +1 -0
  185. package/dist-server/src/types/registry.types.js +2 -0
  186. package/dist-server/tsconfig.server.tsbuildinfo +1 -1
  187. package/package.json +118 -105
  188. package/scripts/cleanup-worktrees.ps1 +29 -0
  189. package/dist/assets/Badge-DrUmDAXz.js +0 -1
  190. package/dist/assets/KnowledgeTab-CxlC76Rf.js +0 -4
  191. package/dist/assets/MemoryTab-CUScYWs9.js +0 -16
  192. package/dist/assets/QualificationTab-BqnWSQHm.js +0 -1
  193. package/dist/assets/ReviewTab-DKYl6cR9.js +0 -103
  194. package/dist/assets/TestTab-iJ2vCf9l.js +0 -33
  195. package/dist/assets/icons-MKpPNvV8.js +0 -1
  196. package/dist/assets/index-B_ip7Amg.css +0 -1
  197. package/dist/assets/index-gBy3427k.js +0 -143
  198. package/dist/assets/services-CTWXQK6j.js +0 -356
@@ -0,0 +1,1303 @@
1
+ // Pre-built MCP server configurations - curated MCP servers
2
+ // Each entry includes command, args, env var names, and metadata
3
+ export const MCP_REGISTRY = [
4
+ // ─── OFFICIAL / REFERENCE ───────────────────────────────
5
+ {
6
+ id: 'mcp-filesystem', name: 'Filesystem', npmPackage: '@modelcontextprotocol/server-filesystem',
7
+ description: 'Read, write, and manage local files with configurable access controls',
8
+ icon: 'folder', category: 'coding', author: 'MCP Official', transport: 'stdio',
9
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-filesystem'],
10
+ configFields: [{ key: 'ALLOWED_DIRS', label: 'Allowed Directories (comma-separated)', type: 'text', placeholder: '/home/user/projects,/tmp', required: true }],
11
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['files', 'local', 'read', 'write'],
12
+ authMethod: 'none',
13
+ },
14
+ {
15
+ id: 'mcp-memory', name: 'Memory (Knowledge Graph)', npmPackage: '@modelcontextprotocol/server-memory',
16
+ description: 'Persistent knowledge graph memory for agent state and relationships',
17
+ icon: 'brain', category: 'data', author: 'MCP Official', transport: 'stdio',
18
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-memory'],
19
+ configFields: [],
20
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['memory', 'knowledge-graph', 'state', 'persistence'],
21
+ authMethod: 'none',
22
+ },
23
+ {
24
+ id: 'mcp-fetch', name: 'Fetch', npmPackage: '@anthropic-ai/mcp-fetch',
25
+ description: 'Fetch web content and convert to markdown for LLM consumption',
26
+ icon: 'download', category: 'research', author: 'MCP Official', transport: 'stdio',
27
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@anthropic-ai/mcp-fetch'],
28
+ configFields: [],
29
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['web', 'fetch', 'scrape', 'markdown'],
30
+ authMethod: 'none',
31
+ },
32
+ {
33
+ id: 'mcp-git', name: 'Git', npmPackage: '@modelcontextprotocol/server-git',
34
+ description: 'Read, search, and manipulate Git repositories - log, diff, blame',
35
+ icon: 'git-branch', category: 'coding', author: 'MCP Official', transport: 'stdio',
36
+ runtimes: ['claude', 'amp', 'codex'], command: 'uvx', defaultArgs: ['mcp-server-git'],
37
+ configFields: [{ key: 'GIT_REPO_PATH', label: 'Repository Path', type: 'text', placeholder: '/path/to/repo', required: false }],
38
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['git', 'version-control', 'diff', 'log'],
39
+ authMethod: 'none',
40
+ installHint: { macos: 'brew install uv', linux: 'curl -LsSf https://astral.sh/uv/install.sh | sh', windows: 'pip install uv' },
41
+ },
42
+ {
43
+ id: 'mcp-sequential-thinking', name: 'Sequential Thinking', npmPackage: '@modelcontextprotocol/server-sequential-thinking',
44
+ description: 'Dynamic and reflective problem-solving through structured thought sequences',
45
+ icon: 'list-ordered', category: 'research', author: 'MCP Official', transport: 'stdio',
46
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-sequential-thinking'],
47
+ configFields: [],
48
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['thinking', 'reasoning', 'chain-of-thought'],
49
+ authMethod: 'none',
50
+ },
51
+ {
52
+ id: 'mcp-time', name: 'Time', npmPackage: '@modelcontextprotocol/server-time',
53
+ description: 'Get current time and convert between timezones',
54
+ icon: 'clock', category: 'data', author: 'MCP Official', transport: 'stdio',
55
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-time'],
56
+ configFields: [],
57
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['time', 'timezone', 'date'],
58
+ authMethod: 'none',
59
+ },
60
+ {
61
+ id: 'mcp-everything', name: 'Everything (Test)', npmPackage: '@modelcontextprotocol/server-everything',
62
+ description: 'Reference test server with prompts, resources, and tools for MCP testing',
63
+ icon: 'star', category: 'coding', author: 'MCP Official', transport: 'stdio',
64
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-everything'],
65
+ configFields: [],
66
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['test', 'reference', 'debug'],
67
+ authMethod: 'none',
68
+ },
69
+ // ─── SEARCH & WEB ──────────────────────────────────────
70
+ {
71
+ id: 'mcp-brave-search', name: 'Brave Search', npmPackage: '@modelcontextprotocol/server-brave-search',
72
+ description: 'Web and local search powered by Brave Search API',
73
+ icon: 'search', category: 'research', author: 'MCP Official', transport: 'stdio',
74
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-brave-search'],
75
+ configFields: [{ key: 'BRAVE_API_KEY', label: 'API Key', type: 'password', placeholder: 'BSA...', required: true }],
76
+ website: 'https://brave.com/search/api/', tags: ['search', 'web', 'brave'],
77
+ authMethod: 'api-key',
78
+ },
79
+ {
80
+ id: 'mcp-tavily', name: 'Tavily Search', npmPackage: 'tavily-mcp',
81
+ description: 'AI-optimized search engine with structured results and answer extraction',
82
+ icon: 'search', category: 'research', author: 'Tavily', transport: 'stdio',
83
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'tavily-mcp'],
84
+ configFields: [{ key: 'TAVILY_API_KEY', label: 'API Key', type: 'password', placeholder: 'tvly-...', required: true }],
85
+ website: 'https://tavily.com', tags: ['search', 'ai-search', 'research'],
86
+ authMethod: 'api-key',
87
+ },
88
+ {
89
+ id: 'mcp-exa', name: 'Exa Search', npmPackage: 'exa-mcp-server',
90
+ description: 'Neural search engine - find similar content, get page contents',
91
+ icon: 'search', category: 'research', author: 'Exa', transport: 'stdio',
92
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'exa-mcp-server'],
93
+ configFields: [{ key: 'EXA_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
94
+ website: 'https://exa.ai', tags: ['search', 'neural-search', 'semantic'],
95
+ authMethod: 'api-key',
96
+ },
97
+ {
98
+ id: 'mcp-firecrawl', name: 'Firecrawl', npmPackage: 'firecrawl-mcp',
99
+ description: 'Web scraping and crawling - extract structured data from any website',
100
+ icon: 'flame', category: 'research', author: 'Firecrawl', transport: 'stdio',
101
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'firecrawl-mcp'],
102
+ configFields: [{ key: 'FIRECRAWL_API_KEY', label: 'API Key', type: 'password', placeholder: 'fc-...', required: true }],
103
+ website: 'https://firecrawl.dev', tags: ['scraping', 'crawling', 'web', 'extract'],
104
+ authMethod: 'api-key',
105
+ },
106
+ {
107
+ id: 'mcp-puppeteer', name: 'Puppeteer', npmPackage: '@modelcontextprotocol/server-puppeteer',
108
+ description: 'Browser automation - screenshots, navigation, form filling, scraping',
109
+ icon: 'globe', category: 'research', author: 'MCP Official', transport: 'stdio',
110
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-puppeteer'],
111
+ configFields: [],
112
+ tags: ['browser', 'automation', 'screenshots', 'scraping'],
113
+ authMethod: 'none',
114
+ },
115
+ {
116
+ id: 'mcp-playwright', name: 'Playwright', npmPackage: '@playwright/mcp',
117
+ description: 'Browser automation with Playwright - cross-browser testing and scraping',
118
+ icon: 'globe', category: 'research', author: 'Microsoft', transport: 'stdio',
119
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@playwright/mcp'],
120
+ configFields: [],
121
+ tags: ['browser', 'playwright', 'testing', 'automation'],
122
+ authMethod: 'none',
123
+ },
124
+ // ─── CODE & DEV TOOLS ──────────────────────────────────
125
+ {
126
+ id: 'mcp-github', name: 'GitHub', npmPackage: '@modelcontextprotocol/server-github',
127
+ description: 'GitHub repos, issues, PRs, code search, and actions',
128
+ icon: 'git-branch', category: 'coding', author: 'GitHub', transport: 'stdio',
129
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-github'],
130
+ configFields: [{ key: 'GITHUB_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: 'ghp_...', required: true }],
131
+ website: 'https://github.com', tags: ['github', 'git', 'issues', 'pr', 'code'],
132
+ authMethod: 'api-key',
133
+ },
134
+ {
135
+ id: 'github-remote', name: 'GitHub (Cloud)', npmPackage: '@modelcontextprotocol/server-github-cloud',
136
+ description: 'GitHub repos, issues, PRs – OAuth via GitHub App',
137
+ icon: 'git-branch', category: 'coding', author: 'GitHub', transport: 'sse',
138
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-github-cloud'],
139
+ url: 'https://api.githubcopilot.com/mcp/',
140
+ authMethod: 'oauth',
141
+ configFields: [
142
+ {
143
+ key: 'client_id',
144
+ label: 'GitHub App Client ID',
145
+ type: 'text',
146
+ placeholder: 'Iv1.1234567890abcdef',
147
+ required: true,
148
+ helpText: 'Create a GitHub App at https://github.com/settings/apps/new and copy the Client ID'
149
+ }
150
+ ],
151
+ website: 'https://github.com', tags: ['github', 'git', 'issues', 'pr', 'code', 'oauth'],
152
+ },
153
+ {
154
+ id: 'mcp-gitlab', name: 'GitLab', npmPackage: '@modelcontextprotocol/server-gitlab',
155
+ description: 'GitLab API - projects, issues, merge requests, pipelines',
156
+ icon: 'git-merge', category: 'coding', author: 'GitLab', transport: 'stdio',
157
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-gitlab'],
158
+ configFields: [
159
+ { key: 'GITLAB_TOKEN', label: 'Access Token', type: 'password', placeholder: 'glpat-...', required: true },
160
+ { key: 'GITLAB_URL', label: 'Instance URL', type: 'url', placeholder: 'https://gitlab.com', required: false },
161
+ ],
162
+ tags: ['gitlab', 'git', 'ci-cd', 'merge-request'],
163
+ authMethod: 'api-key',
164
+ },
165
+ {
166
+ id: 'mcp-linear', name: 'Linear', npmPackage: '@linear/mcp-server',
167
+ description: 'Linear project management - issues, projects, cycles, and teams',
168
+ icon: 'target', category: 'coding', author: 'Linear', transport: 'stdio',
169
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@linear/mcp-server'],
170
+ configFields: [{ key: 'LINEAR_API_KEY', label: 'API Key', type: 'password', placeholder: 'lin_api_...', required: true }],
171
+ website: 'https://linear.app', tags: ['linear', 'project-management', 'issues', 'agile'],
172
+ authMethod: 'api-key',
173
+ },
174
+ {
175
+ id: 'mcp-sentry', name: 'Sentry', npmPackage: '@sentry/mcp-server',
176
+ description: 'Error tracking and performance monitoring - issues, events, releases',
177
+ icon: 'shield', category: 'coding', author: 'Sentry', transport: 'stdio',
178
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@sentry/mcp-server'],
179
+ configFields: [{ key: 'SENTRY_AUTH_TOKEN', label: 'Auth Token', type: 'password', placeholder: 'sntrys_...', required: true }],
180
+ website: 'https://sentry.io', tags: ['sentry', 'errors', 'monitoring', 'debugging'],
181
+ authMethod: 'api-key',
182
+ },
183
+ {
184
+ id: 'mcp-docker', name: 'Docker', npmPackage: 'docker-mcp',
185
+ description: 'Manage Docker containers, images, volumes, and networks',
186
+ icon: 'box', category: 'coding', author: 'Community', transport: 'stdio',
187
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'docker-mcp'],
188
+ configFields: [],
189
+ tags: ['docker', 'containers', 'devops', 'infrastructure'],
190
+ authMethod: 'none',
191
+ },
192
+ {
193
+ id: 'mcp-kubernetes', name: 'Kubernetes', npmPackage: 'kubernetes-mcp',
194
+ description: 'Kubernetes cluster management - pods, deployments, services, logs',
195
+ icon: 'server', category: 'coding', author: 'Community', transport: 'stdio',
196
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'kubernetes-mcp'],
197
+ configFields: [{ key: 'KUBECONFIG', label: 'Kubeconfig Path', type: 'text', placeholder: '~/.kube/config', required: false }],
198
+ tags: ['kubernetes', 'k8s', 'devops', 'orchestration'],
199
+ authMethod: 'none',
200
+ },
201
+ {
202
+ id: 'mcp-vercel', name: 'Vercel', npmPackage: '@vercel/mcp',
203
+ description: 'Vercel deployments, domains, environment variables, and logs',
204
+ icon: 'triangle', category: 'coding', author: 'Vercel', transport: 'stdio',
205
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@vercel/mcp'],
206
+ configFields: [{ key: 'VERCEL_TOKEN', label: 'Access Token', type: 'password', placeholder: '', required: true }],
207
+ website: 'https://vercel.com', tags: ['vercel', 'deploy', 'hosting', 'serverless'],
208
+ authMethod: 'api-key',
209
+ },
210
+ {
211
+ id: 'mcp-cloudflare', name: 'Cloudflare', npmPackage: '@cloudflare/mcp-server-cloudflare',
212
+ description: 'Cloudflare Workers, KV, R2, D1, and DNS management',
213
+ icon: 'cloud', category: 'coding', author: 'Cloudflare', transport: 'stdio',
214
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@cloudflare/mcp-server-cloudflare'],
215
+ configFields: [{ key: 'CLOUDFLARE_API_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true }],
216
+ website: 'https://cloudflare.com', tags: ['cloudflare', 'workers', 'cdn', 'dns'],
217
+ authMethod: 'api-key',
218
+ },
219
+ {
220
+ id: 'mcp-netlify', name: 'Netlify', npmPackage: 'netlify-mcp',
221
+ description: 'Netlify sites, deploys, functions, and build hooks',
222
+ icon: 'globe', category: 'coding', author: 'Netlify', transport: 'stdio',
223
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'netlify-mcp'],
224
+ configFields: [{ key: 'NETLIFY_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: '', required: true }],
225
+ tags: ['netlify', 'deploy', 'hosting', 'jamstack'],
226
+ authMethod: 'api-key',
227
+ },
228
+ {
229
+ id: 'mcp-npm', name: 'npm Registry', npmPackage: 'npm-mcp',
230
+ description: 'Search npm packages, view details, check versions and dependencies',
231
+ icon: 'package', category: 'coding', author: 'Community', transport: 'stdio',
232
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'npm-mcp'],
233
+ configFields: [],
234
+ tags: ['npm', 'packages', 'dependencies', 'registry'],
235
+ authMethod: 'none',
236
+ },
237
+ // ─── DATABASES ─────────────────────────────────────────
238
+ {
239
+ id: 'mcp-postgres', name: 'PostgreSQL', npmPackage: '@modelcontextprotocol/server-postgres',
240
+ description: 'Query PostgreSQL databases - schema inspection, read/write operations',
241
+ icon: 'database', category: 'data', author: 'MCP Official', transport: 'stdio',
242
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-postgres'],
243
+ configFields: [{ key: 'DATABASE_URL', label: 'Connection String', type: 'password', placeholder: 'postgresql://user:pass@host:5432/db', required: true }],
244
+ tags: ['postgres', 'database', 'sql', 'query'],
245
+ authMethod: 'api-key',
246
+ },
247
+ {
248
+ id: 'mcp-mysql', name: 'MySQL', npmPackage: 'mysql-mcp-server',
249
+ description: 'MySQL database operations - queries, schema, migrations',
250
+ icon: 'database', category: 'data', author: 'Community', transport: 'stdio',
251
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'mysql-mcp-server'],
252
+ configFields: [{ key: 'MYSQL_URL', label: 'Connection String', type: 'password', placeholder: 'mysql://user:pass@host:3306/db', required: true }],
253
+ tags: ['mysql', 'database', 'sql'],
254
+ authMethod: 'api-key',
255
+ },
256
+ {
257
+ id: 'mcp-sqlite', name: 'SQLite', npmPackage: '@modelcontextprotocol/server-sqlite',
258
+ description: 'SQLite database - local file-based SQL with business intelligence',
259
+ icon: 'database', category: 'data', author: 'MCP Official', transport: 'stdio',
260
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-sqlite'],
261
+ configFields: [{ key: 'SQLITE_PATH', label: 'Database File Path', type: 'text', placeholder: '/path/to/database.db', required: true }],
262
+ tags: ['sqlite', 'database', 'sql', 'local'],
263
+ authMethod: 'none',
264
+ },
265
+ {
266
+ id: 'mcp-mongodb', name: 'MongoDB', npmPackage: 'mongodb-mcp-server',
267
+ description: 'MongoDB operations - collections, documents, aggregation pipelines',
268
+ icon: 'database', category: 'data', author: 'MongoDB', transport: 'stdio',
269
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'mongodb-mcp-server'],
270
+ configFields: [{ key: 'MONGODB_URI', label: 'Connection URI', type: 'password', placeholder: 'mongodb+srv://user:pass@cluster.mongodb.net/db', required: true }],
271
+ tags: ['mongodb', 'nosql', 'database', 'documents'],
272
+ authMethod: 'api-key',
273
+ },
274
+ {
275
+ id: 'mcp-redis', name: 'Redis', npmPackage: '@modelcontextprotocol/server-redis',
276
+ description: 'Redis key-value store - get, set, scan, pub/sub',
277
+ icon: 'database', category: 'data', author: 'MCP Official', transport: 'stdio',
278
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-redis'],
279
+ configFields: [{ key: 'REDIS_URL', label: 'Connection URL', type: 'password', placeholder: 'redis://localhost:6379', required: true }],
280
+ tags: ['redis', 'cache', 'key-value', 'pub-sub'],
281
+ authMethod: 'api-key',
282
+ },
283
+ {
284
+ id: 'mcp-supabase', name: 'Supabase', npmPackage: '@supabase/mcp-server',
285
+ description: 'Supabase - database, auth, storage, edge functions, realtime',
286
+ icon: 'database', category: 'data', author: 'Supabase', transport: 'stdio',
287
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@supabase/mcp-server'],
288
+ configFields: [
289
+ { key: 'SUPABASE_URL', label: 'Project URL', type: 'url', placeholder: 'https://xxx.supabase.co', required: true },
290
+ { key: 'SUPABASE_SERVICE_ROLE_KEY', label: 'Service Role Key', type: 'password', placeholder: 'eyJ...', required: true },
291
+ ],
292
+ website: 'https://supabase.com', tags: ['supabase', 'database', 'auth', 'storage', 'postgres'],
293
+ authMethod: 'api-key',
294
+ },
295
+ {
296
+ id: 'mcp-neon', name: 'Neon', npmPackage: '@neondatabase/mcp-server-neon',
297
+ description: 'Neon serverless Postgres - branches, queries, schema management',
298
+ icon: 'database', category: 'data', author: 'Neon', transport: 'stdio',
299
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@neondatabase/mcp-server-neon'],
300
+ configFields: [{ key: 'NEON_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
301
+ website: 'https://neon.tech', tags: ['neon', 'postgres', 'serverless', 'database'],
302
+ authMethod: 'api-key',
303
+ },
304
+ {
305
+ id: 'mcp-turso', name: 'Turso', npmPackage: '@tursodatabase/mcp-server',
306
+ description: 'Turso edge database - SQLite at the edge, libSQL',
307
+ icon: 'database', category: 'data', author: 'Turso', transport: 'stdio',
308
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@tursodatabase/mcp-server'],
309
+ configFields: [
310
+ { key: 'TURSO_DATABASE_URL', label: 'Database URL', type: 'url', placeholder: 'libsql://db-org.turso.io', required: true },
311
+ { key: 'TURSO_AUTH_TOKEN', label: 'Auth Token', type: 'password', placeholder: '', required: true },
312
+ ],
313
+ website: 'https://turso.tech', tags: ['turso', 'sqlite', 'edge', 'database'],
314
+ authMethod: 'api-key',
315
+ },
316
+ {
317
+ id: 'mcp-pinecone', name: 'Pinecone', npmPackage: '@pinecone-database/mcp',
318
+ description: 'Pinecone vector database - upsert, query, delete vectors',
319
+ icon: 'database', category: 'data', author: 'Pinecone', transport: 'stdio',
320
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@pinecone-database/mcp'],
321
+ configFields: [{ key: 'PINECONE_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
322
+ website: 'https://pinecone.io', tags: ['pinecone', 'vector', 'embeddings', 'rag'],
323
+ authMethod: 'api-key',
324
+ },
325
+ {
326
+ id: 'mcp-qdrant', name: 'Qdrant', npmPackage: 'qdrant-mcp',
327
+ description: 'Qdrant vector search - collections, points, filtering, similarity',
328
+ icon: 'database', category: 'data', author: 'Qdrant', transport: 'stdio',
329
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'qdrant-mcp'],
330
+ configFields: [
331
+ { key: 'QDRANT_URL', label: 'URL', type: 'url', placeholder: 'http://localhost:6333', required: true },
332
+ { key: 'QDRANT_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: false },
333
+ ],
334
+ website: 'https://qdrant.tech', tags: ['qdrant', 'vector', 'search', 'embeddings'],
335
+ authMethod: 'api-key',
336
+ },
337
+ // ─── COMMUNICATION ─────────────────────────────────────
338
+ {
339
+ id: 'mcp-slack', name: 'Slack', npmPackage: '@modelcontextprotocol/server-slack',
340
+ description: 'Slack workspace - channels, messages, threads, search, reactions',
341
+ icon: 'hash', category: 'data', author: 'Slack', transport: 'stdio',
342
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-slack'],
343
+ configFields: [
344
+ { key: 'SLACK_BOT_TOKEN', label: 'Bot Token', type: 'password', placeholder: 'xoxb-...', required: true },
345
+ { key: 'SLACK_TEAM_ID', label: 'Team ID', type: 'text', placeholder: 'T0...', required: false },
346
+ ],
347
+ website: 'https://slack.com', tags: ['slack', 'messaging', 'channels', 'team'],
348
+ authMethod: 'api-key',
349
+ },
350
+ {
351
+ id: 'slack-remote', name: 'Slack (Cloud)', npmPackage: '',
352
+ description: 'Slack workspace - OAuth, no bot token needed',
353
+ icon: 'hash', category: 'data', author: 'Slack', transport: 'streamable-http',
354
+ runtimes: ['claude', 'amp', 'codex'], command: '', defaultArgs: [],
355
+ url: 'https://mcp.slack.com/sse',
356
+ authMethod: 'oauth',
357
+ configFields: [
358
+ {
359
+ key: 'client_id',
360
+ label: 'Slack App Client ID',
361
+ type: 'text',
362
+ placeholder: '1234567890.1234567890123',
363
+ required: true,
364
+ helpText: 'Create a Slack App at https://api.slack.com/apps and copy the Client ID from Basic Information'
365
+ }
366
+ ],
367
+ website: 'https://slack.com', tags: ['slack', 'messaging', 'channels', 'team', 'oauth'],
368
+ },
369
+ {
370
+ id: 'mcp-discord', name: 'Discord', npmPackage: 'discord-mcp',
371
+ description: 'Discord bot - read messages, manage channels, send notifications',
372
+ icon: 'message-circle', category: 'data', author: 'Community', transport: 'stdio',
373
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'discord-mcp'],
374
+ configFields: [{ key: 'DISCORD_TOKEN', label: 'Bot Token', type: 'password', placeholder: '', required: true }],
375
+ tags: ['discord', 'messaging', 'bot', 'community'],
376
+ authMethod: 'api-key',
377
+ },
378
+ {
379
+ id: 'mcp-gmail', name: 'Gmail', npmPackage: '@gongrzhe/server-gmail-autoauth-mcp',
380
+ description: 'Read, send, search, and manage Gmail with OAuth auto-auth',
381
+ icon: 'mail', category: 'data', author: 'Community', transport: 'stdio',
382
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@gongrzhe/server-gmail-autoauth-mcp'],
383
+ configFields: [
384
+ { key: 'GMAIL_CLIENT_ID', label: 'OAuth Client ID', type: 'text', placeholder: '...apps.googleusercontent.com', required: true },
385
+ { key: 'GMAIL_CLIENT_SECRET', label: 'OAuth Client Secret', type: 'password', placeholder: 'GOCSPX-...', required: true },
386
+ ],
387
+ tags: ['gmail', 'email', 'google', 'oauth'],
388
+ authMethod: 'api-key',
389
+ },
390
+ {
391
+ id: 'mcp-email', name: 'Email (SMTP/IMAP)', npmPackage: 'email-mcp',
392
+ description: 'Send and read emails via SMTP/IMAP - works with any email provider',
393
+ icon: 'mail', category: 'data', author: 'Community', transport: 'stdio',
394
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'email-mcp'],
395
+ configFields: [
396
+ { key: 'SMTP_HOST', label: 'SMTP Host', type: 'text', placeholder: 'smtp.gmail.com', required: true },
397
+ { key: 'SMTP_USER', label: 'Username', type: 'text', placeholder: 'user@example.com', required: true },
398
+ { key: 'SMTP_PASS', label: 'Password', type: 'password', placeholder: '', required: true },
399
+ ],
400
+ tags: ['email', 'smtp', 'imap', 'send'],
401
+ authMethod: 'api-key',
402
+ },
403
+ {
404
+ id: 'mcp-twilio', name: 'Twilio', npmPackage: 'twilio-mcp',
405
+ description: 'Send SMS, make calls, manage phone numbers via Twilio API',
406
+ icon: 'phone', category: 'data', author: 'Twilio', transport: 'stdio',
407
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'twilio-mcp'],
408
+ configFields: [
409
+ { key: 'TWILIO_ACCOUNT_SID', label: 'Account SID', type: 'text', placeholder: 'AC...', required: true },
410
+ { key: 'TWILIO_AUTH_TOKEN', label: 'Auth Token', type: 'password', placeholder: '', required: true },
411
+ ],
412
+ website: 'https://twilio.com', tags: ['twilio', 'sms', 'phone', 'messaging'],
413
+ authMethod: 'api-key',
414
+ },
415
+ // ─── PRODUCTIVITY & DOCS ───────────────────────────────
416
+ {
417
+ id: 'mcp-notion', name: 'Notion', npmPackage: '@notionhq/notion-mcp-server',
418
+ description: 'Notion pages, databases, blocks - read, create, update, search',
419
+ icon: 'book-open', category: 'writing', author: 'Notion', transport: 'stdio',
420
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@notionhq/notion-mcp-server'],
421
+ configFields: [{ key: 'NOTION_TOKEN', label: 'Integration Token', type: 'password', placeholder: 'ntn_...', required: true }],
422
+ website: 'https://notion.so', tags: ['notion', 'docs', 'wiki', 'database', 'pages'],
423
+ authMethod: 'api-key',
424
+ },
425
+ {
426
+ id: 'notion-remote', name: 'Notion (Cloud)', npmPackage: '',
427
+ description: 'Notion pages, databases, blocks - OAuth, no API key needed',
428
+ icon: 'book-open', category: 'writing', author: 'Notion', transport: 'streamable-http',
429
+ runtimes: ['claude', 'amp', 'codex'], command: '', defaultArgs: [],
430
+ url: 'https://mcp.notion.com/mcp',
431
+ authMethod: 'oauth',
432
+ configFields: [],
433
+ website: 'https://notion.so', tags: ['notion', 'docs', 'wiki', 'database', 'pages', 'oauth'],
434
+ sameServiceAs: 'mcp-notion',
435
+ },
436
+ {
437
+ id: 'mcp-google-drive', name: 'Google Drive', npmPackage: '@modelcontextprotocol/server-gdrive',
438
+ description: 'Google Drive - search, read, create files and folders',
439
+ icon: 'hard-drive', category: 'data', author: 'MCP Official', transport: 'stdio',
440
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-gdrive'],
441
+ configFields: [
442
+ { key: 'GOOGLE_CLIENT_ID', label: 'OAuth Client ID', type: 'text', placeholder: '', required: true },
443
+ { key: 'GOOGLE_CLIENT_SECRET', label: 'OAuth Client Secret', type: 'password', placeholder: '', required: true },
444
+ ],
445
+ tags: ['google-drive', 'files', 'docs', 'sheets', 'storage'],
446
+ authMethod: 'api-key',
447
+ },
448
+ {
449
+ id: 'mcp-google-sheets', name: 'Google Sheets', npmPackage: 'google-sheets-mcp',
450
+ description: 'Read and write Google Sheets - cells, ranges, formulas',
451
+ icon: 'table', category: 'data', author: 'Community', transport: 'stdio',
452
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'google-sheets-mcp'],
453
+ configFields: [
454
+ { key: 'GOOGLE_CLIENT_ID', label: 'OAuth Client ID', type: 'text', placeholder: '', required: true },
455
+ { key: 'GOOGLE_CLIENT_SECRET', label: 'OAuth Client Secret', type: 'password', placeholder: '', required: true },
456
+ ],
457
+ tags: ['google-sheets', 'spreadsheet', 'data', 'tables'],
458
+ authMethod: 'api-key',
459
+ },
460
+ {
461
+ id: 'mcp-google-calendar', name: 'Google Calendar', npmPackage: 'google-calendar-mcp',
462
+ description: 'Google Calendar - events, scheduling, availability, reminders',
463
+ icon: 'calendar', category: 'data', author: 'Community', transport: 'stdio',
464
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'google-calendar-mcp'],
465
+ configFields: [
466
+ { key: 'GOOGLE_CLIENT_ID', label: 'OAuth Client ID', type: 'text', placeholder: '', required: true },
467
+ { key: 'GOOGLE_CLIENT_SECRET', label: 'OAuth Client Secret', type: 'password', placeholder: '', required: true },
468
+ ],
469
+ tags: ['google-calendar', 'events', 'scheduling', 'calendar'],
470
+ authMethod: 'api-key',
471
+ },
472
+ {
473
+ id: 'mcp-google-maps', name: 'Google Maps', npmPackage: '@modelcontextprotocol/server-google-maps',
474
+ description: 'Google Maps - geocoding, directions, places, distance matrix',
475
+ icon: 'map-pin', category: 'data', author: 'MCP Official', transport: 'stdio',
476
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-google-maps'],
477
+ configFields: [{ key: 'GOOGLE_MAPS_API_KEY', label: 'API Key', type: 'password', placeholder: 'AIza...', required: true }],
478
+ tags: ['google-maps', 'geocoding', 'directions', 'places'],
479
+ authMethod: 'api-key',
480
+ },
481
+ {
482
+ id: 'mcp-confluence', name: 'Confluence', npmPackage: 'confluence-mcp',
483
+ description: 'Atlassian Confluence - spaces, pages, search, content management',
484
+ icon: 'book-open', category: 'writing', author: 'Atlassian', transport: 'stdio',
485
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'confluence-mcp'],
486
+ configFields: [
487
+ { key: 'CONFLUENCE_URL', label: 'Instance URL', type: 'url', placeholder: 'https://your-org.atlassian.net/wiki', required: true },
488
+ { key: 'CONFLUENCE_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true },
489
+ { key: 'CONFLUENCE_EMAIL', label: 'Email', type: 'text', placeholder: 'user@company.com', required: true },
490
+ ],
491
+ tags: ['confluence', 'wiki', 'docs', 'atlassian'],
492
+ authMethod: 'api-key',
493
+ },
494
+ {
495
+ id: 'mcp-jira', name: 'Jira', npmPackage: 'jira-mcp',
496
+ description: 'Jira - issues, boards, sprints, epics, JQL search',
497
+ icon: 'clipboard-list', category: 'coding', author: 'Atlassian', transport: 'stdio',
498
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'jira-mcp'],
499
+ configFields: [
500
+ { key: 'JIRA_URL', label: 'Instance URL', type: 'url', placeholder: 'https://your-org.atlassian.net', required: true },
501
+ { key: 'JIRA_EMAIL', label: 'Email', type: 'text', placeholder: 'user@company.com', required: true },
502
+ { key: 'JIRA_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true },
503
+ ],
504
+ tags: ['jira', 'issues', 'agile', 'boards', 'atlassian'],
505
+ authMethod: 'api-key',
506
+ },
507
+ {
508
+ id: 'mcp-asana', name: 'Asana', npmPackage: 'asana-mcp',
509
+ description: 'Asana - tasks, projects, sections, comments, assignees',
510
+ icon: 'check-square', category: 'coding', author: 'Asana', transport: 'stdio',
511
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'asana-mcp'],
512
+ configFields: [{ key: 'ASANA_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: '1/...', required: true }],
513
+ website: 'https://asana.com', tags: ['asana', 'tasks', 'project-management'],
514
+ authMethod: 'api-key',
515
+ },
516
+ {
517
+ id: 'mcp-todoist', name: 'Todoist', npmPackage: 'todoist-mcp',
518
+ description: 'Todoist - tasks, projects, labels, filters, productivity',
519
+ icon: 'check-circle', category: 'data', author: 'Community', transport: 'stdio',
520
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'todoist-mcp'],
521
+ configFields: [{ key: 'TODOIST_API_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true }],
522
+ website: 'https://todoist.com', tags: ['todoist', 'tasks', 'productivity', 'todo'],
523
+ authMethod: 'api-key',
524
+ },
525
+ {
526
+ id: 'mcp-obsidian', name: 'Obsidian', npmPackage: 'obsidian-mcp',
527
+ description: 'Obsidian vault - read, search, create notes, manage links',
528
+ icon: 'file-text', category: 'writing', author: 'Community', transport: 'stdio',
529
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'obsidian-mcp'],
530
+ configFields: [{ key: 'OBSIDIAN_VAULT_PATH', label: 'Vault Path', type: 'text', placeholder: '/path/to/vault', required: true }],
531
+ tags: ['obsidian', 'notes', 'markdown', 'knowledge-base'],
532
+ authMethod: 'none',
533
+ },
534
+ {
535
+ id: 'mcp-airtable', name: 'Airtable', npmPackage: 'airtable-mcp',
536
+ description: 'Airtable bases, tables, records - CRUD operations and views',
537
+ icon: 'table', category: 'data', author: 'Community', transport: 'stdio',
538
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'airtable-mcp'],
539
+ configFields: [{ key: 'AIRTABLE_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: 'pat...', required: true }],
540
+ website: 'https://airtable.com', tags: ['airtable', 'database', 'spreadsheet', 'records'],
541
+ },
542
+ // ─── CRM & SALES ──────────────────────────────────────
543
+ {
544
+ id: 'mcp-hubspot', name: 'HubSpot', npmPackage: 'hubspot-mcp',
545
+ description: 'HubSpot CRM - contacts, companies, deals, tickets, engagement',
546
+ icon: 'hexagon', category: 'data', author: 'HubSpot', transport: 'stdio',
547
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'hubspot-mcp'],
548
+ configFields: [{ key: 'HUBSPOT_ACCESS_TOKEN', label: 'Private App Token', type: 'password', placeholder: 'pat-...', required: true }],
549
+ website: 'https://hubspot.com', tags: ['hubspot', 'crm', 'sales', 'contacts', 'deals'],
550
+ },
551
+ {
552
+ id: 'mcp-salesforce', name: 'Salesforce', npmPackage: 'salesforce-mcp',
553
+ description: 'Salesforce - SOQL queries, objects, records, reports',
554
+ icon: 'cloud', category: 'data', author: 'Salesforce', transport: 'stdio',
555
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'salesforce-mcp'],
556
+ configFields: [
557
+ { key: 'SF_LOGIN_URL', label: 'Login URL', type: 'url', placeholder: 'https://login.salesforce.com', required: true },
558
+ { key: 'SF_USERNAME', label: 'Username', type: 'text', placeholder: '', required: true },
559
+ { key: 'SF_PASSWORD', label: 'Password + Security Token', type: 'password', placeholder: '', required: true },
560
+ ],
561
+ tags: ['salesforce', 'crm', 'soql', 'sales'],
562
+ authMethod: 'api-key',
563
+ },
564
+ {
565
+ id: 'mcp-stripe', name: 'Stripe', npmPackage: '@stripe/mcp',
566
+ description: 'Stripe payments - customers, invoices, subscriptions, products',
567
+ icon: 'credit-card', category: 'data', author: 'Stripe', transport: 'stdio',
568
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@stripe/mcp'],
569
+ configFields: [{ key: 'STRIPE_SECRET_KEY', label: 'Secret Key', type: 'password', placeholder: 'sk_...', required: true }],
570
+ website: 'https://stripe.com', tags: ['stripe', 'payments', 'billing', 'subscriptions'],
571
+ },
572
+ {
573
+ id: 'mcp-shopify', name: 'Shopify', npmPackage: '@shopify/dev-mcp',
574
+ description: 'Shopify store - products, orders, customers, inventory',
575
+ icon: 'shopping-bag', category: 'data', author: 'Shopify', transport: 'stdio',
576
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@shopify/dev-mcp'],
577
+ configFields: [
578
+ { key: 'SHOPIFY_STORE_URL', label: 'Store URL', type: 'url', placeholder: 'your-store.myshopify.com', required: true },
579
+ { key: 'SHOPIFY_ACCESS_TOKEN', label: 'Access Token', type: 'password', placeholder: 'shpat_...', required: true },
580
+ ],
581
+ tags: ['shopify', 'ecommerce', 'products', 'orders'],
582
+ authMethod: 'api-key',
583
+ },
584
+ // ─── AI & ML ───────────────────────────────────────────
585
+ {
586
+ id: 'mcp-openai', name: 'OpenAI', npmPackage: 'openai-mcp',
587
+ description: 'OpenAI API - completions, embeddings, DALL-E, Whisper, assistants',
588
+ icon: 'cpu', category: 'coding', author: 'Community', transport: 'stdio',
589
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'openai-mcp'],
590
+ configFields: [{ key: 'OPENAI_API_KEY', label: 'API Key', type: 'password', placeholder: 'sk-...', required: true }],
591
+ tags: ['openai', 'gpt', 'embeddings', 'dalle', 'whisper'],
592
+ authMethod: 'api-key',
593
+ },
594
+ {
595
+ id: 'mcp-anthropic', name: 'Anthropic Claude', npmPackage: 'anthropic-mcp',
596
+ description: 'Anthropic API - Claude completions, tool use, system prompts',
597
+ icon: 'cpu', category: 'coding', author: 'Community', transport: 'stdio',
598
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'anthropic-mcp'],
599
+ configFields: [{ key: 'ANTHROPIC_API_KEY', label: 'API Key', type: 'password', placeholder: 'sk-ant-...', required: true }],
600
+ tags: ['anthropic', 'claude', 'ai', 'llm'],
601
+ authMethod: 'api-key',
602
+ },
603
+ {
604
+ id: 'mcp-replicate', name: 'Replicate', npmPackage: 'replicate-mcp',
605
+ description: 'Replicate - run open-source ML models via API',
606
+ icon: 'cpu', category: 'coding', author: 'Replicate', transport: 'stdio',
607
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'replicate-mcp'],
608
+ configFields: [{ key: 'REPLICATE_API_TOKEN', label: 'API Token', type: 'password', placeholder: 'r8_...', required: true }],
609
+ website: 'https://replicate.com', tags: ['replicate', 'ml', 'models', 'inference'],
610
+ },
611
+ {
612
+ id: 'mcp-huggingface', name: 'Hugging Face', npmPackage: 'huggingface-mcp',
613
+ description: 'Hugging Face - models, datasets, spaces, inference API',
614
+ icon: 'cpu', category: 'coding', author: 'Community', transport: 'stdio',
615
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'huggingface-mcp'],
616
+ configFields: [{ key: 'HF_TOKEN', label: 'Access Token', type: 'password', placeholder: 'hf_...', required: true }],
617
+ website: 'https://huggingface.co', tags: ['huggingface', 'models', 'datasets', 'ml'],
618
+ },
619
+ // ─── CLOUD & INFRA ─────────────────────────────────────
620
+ {
621
+ id: 'mcp-aws', name: 'AWS', npmPackage: 'aws-mcp',
622
+ description: 'AWS services - S3, Lambda, EC2, DynamoDB, CloudWatch',
623
+ icon: 'cloud', category: 'coding', author: 'AWS', transport: 'stdio',
624
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'aws-mcp'],
625
+ configFields: [
626
+ { key: 'AWS_ACCESS_KEY_ID', label: 'Access Key ID', type: 'text', placeholder: 'AKIA...', required: true },
627
+ { key: 'AWS_SECRET_ACCESS_KEY', label: 'Secret Access Key', type: 'password', placeholder: '', required: true },
628
+ { key: 'AWS_REGION', label: 'Region', type: 'text', placeholder: 'us-east-1', required: false },
629
+ ],
630
+ tags: ['aws', 's3', 'lambda', 'ec2', 'cloud'],
631
+ authMethod: 'api-key',
632
+ },
633
+ {
634
+ id: 'mcp-gcp', name: 'Google Cloud', npmPackage: 'gcp-mcp',
635
+ description: 'Google Cloud Platform - BigQuery, Cloud Storage, Compute, Pub/Sub',
636
+ icon: 'cloud', category: 'coding', author: 'Google', transport: 'stdio',
637
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'gcp-mcp'],
638
+ configFields: [{ key: 'GOOGLE_APPLICATION_CREDENTIALS', label: 'Service Account Key Path', type: 'text', placeholder: '/path/to/key.json', required: true }],
639
+ tags: ['gcp', 'bigquery', 'cloud-storage', 'google-cloud'],
640
+ authMethod: 'none',
641
+ },
642
+ {
643
+ id: 'mcp-azure', name: 'Azure', npmPackage: 'azure-mcp',
644
+ description: 'Azure services - Blob Storage, Functions, Cosmos DB, Key Vault',
645
+ icon: 'cloud', category: 'coding', author: 'Microsoft', transport: 'stdio',
646
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'azure-mcp'],
647
+ configFields: [
648
+ { key: 'AZURE_SUBSCRIPTION_ID', label: 'Subscription ID', type: 'text', placeholder: '', required: true },
649
+ { key: 'AZURE_TENANT_ID', label: 'Tenant ID', type: 'text', placeholder: '', required: true },
650
+ { key: 'AZURE_CLIENT_ID', label: 'Client ID', type: 'text', placeholder: '', required: true },
651
+ { key: 'AZURE_CLIENT_SECRET', label: 'Client Secret', type: 'password', placeholder: '', required: true },
652
+ ],
653
+ tags: ['azure', 'cloud', 'microsoft', 'blob-storage'],
654
+ authMethod: 'api-key',
655
+ },
656
+ // ─── AUTOMATION & WORKFLOW ─────────────────────────────
657
+ {
658
+ id: 'mcp-n8n', name: 'n8n', npmPackage: 'n8n-mcp',
659
+ description: 'n8n workflow automation - trigger, manage, inspect workflows',
660
+ icon: 'workflow', category: 'coding', author: 'n8n', transport: 'stdio',
661
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'n8n-mcp'],
662
+ configFields: [
663
+ { key: 'N8N_URL', label: 'Instance URL', type: 'url', placeholder: 'http://localhost:5678', required: true },
664
+ { key: 'N8N_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
665
+ ],
666
+ website: 'https://n8n.io', tags: ['n8n', 'automation', 'workflow', 'integration'],
667
+ },
668
+ {
669
+ id: 'mcp-zapier', name: 'Zapier', npmPackage: 'zapier-mcp',
670
+ description: 'Zapier - trigger Zaps, manage connections, inspect runs',
671
+ icon: 'zap', category: 'coding', author: 'Community', transport: 'stdio',
672
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'zapier-mcp'],
673
+ configFields: [{ key: 'ZAPIER_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
674
+ tags: ['zapier', 'automation', 'workflow', 'zaps'],
675
+ authMethod: 'api-key',
676
+ },
677
+ {
678
+ id: 'mcp-make', name: 'Make (Integromat)', npmPackage: 'make-mcp',
679
+ description: 'Make.com - scenarios, modules, connections, execution history',
680
+ icon: 'workflow', category: 'coding', author: 'Community', transport: 'stdio',
681
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'make-mcp'],
682
+ configFields: [{ key: 'MAKE_API_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true }],
683
+ tags: ['make', 'integromat', 'automation', 'scenarios'],
684
+ authMethod: 'api-key',
685
+ },
686
+ // ─── MONITORING & ANALYTICS ────────────────────────────
687
+ {
688
+ id: 'mcp-datadog', name: 'Datadog', npmPackage: 'datadog-mcp',
689
+ description: 'Datadog - metrics, dashboards, monitors, logs, APM',
690
+ icon: 'bar-chart', category: 'data', author: 'Datadog', transport: 'stdio',
691
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'datadog-mcp'],
692
+ configFields: [
693
+ { key: 'DD_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
694
+ { key: 'DD_APP_KEY', label: 'App Key', type: 'password', placeholder: '', required: true },
695
+ ],
696
+ website: 'https://datadoghq.com', tags: ['datadog', 'monitoring', 'metrics', 'apm'],
697
+ },
698
+ {
699
+ id: 'mcp-grafana', name: 'Grafana', npmPackage: 'grafana-mcp',
700
+ description: 'Grafana - dashboards, alerts, data sources, panels',
701
+ icon: 'bar-chart', category: 'data', author: 'Grafana', transport: 'stdio',
702
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'grafana-mcp'],
703
+ configFields: [
704
+ { key: 'GRAFANA_URL', label: 'Instance URL', type: 'url', placeholder: 'http://localhost:3000', required: true },
705
+ { key: 'GRAFANA_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
706
+ ],
707
+ tags: ['grafana', 'dashboards', 'monitoring', 'visualization'],
708
+ authMethod: 'api-key',
709
+ },
710
+ {
711
+ id: 'mcp-posthog', name: 'PostHog', npmPackage: 'posthog-mcp',
712
+ description: 'PostHog product analytics - events, funnels, feature flags, surveys',
713
+ icon: 'bar-chart-3', category: 'data', author: 'PostHog', transport: 'stdio',
714
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'posthog-mcp'],
715
+ configFields: [
716
+ { key: 'POSTHOG_HOST', label: 'Host URL', type: 'url', placeholder: 'https://app.posthog.com', required: true },
717
+ { key: 'POSTHOG_API_KEY', label: 'Personal API Key', type: 'password', placeholder: 'phx_...', required: true },
718
+ ],
719
+ website: 'https://posthog.com', tags: ['posthog', 'analytics', 'events', 'product'],
720
+ },
721
+ {
722
+ id: 'mcp-mixpanel', name: 'Mixpanel', npmPackage: 'mixpanel-mcp',
723
+ description: 'Mixpanel - events, funnels, cohorts, user analytics',
724
+ icon: 'bar-chart', category: 'data', author: 'Community', transport: 'stdio',
725
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'mixpanel-mcp'],
726
+ configFields: [
727
+ { key: 'MIXPANEL_TOKEN', label: 'Project Token', type: 'password', placeholder: '', required: true },
728
+ { key: 'MIXPANEL_API_SECRET', label: 'API Secret', type: 'password', placeholder: '', required: false },
729
+ ],
730
+ tags: ['mixpanel', 'analytics', 'events', 'funnels'],
731
+ authMethod: 'api-key',
732
+ },
733
+ // ─── SOCIAL & CONTENT ─────────────────────────────────
734
+ {
735
+ id: 'mcp-twitter', name: 'Twitter / X', npmPackage: 'twitter-mcp',
736
+ description: 'Twitter/X - tweets, search, timeline, DMs, analytics',
737
+ icon: 'message-circle', category: 'data', author: 'Community', transport: 'stdio',
738
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'twitter-mcp'],
739
+ configFields: [
740
+ { key: 'TWITTER_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
741
+ { key: 'TWITTER_API_SECRET', label: 'API Secret', type: 'password', placeholder: '', required: true },
742
+ { key: 'TWITTER_ACCESS_TOKEN', label: 'Access Token', type: 'password', placeholder: '', required: true },
743
+ { key: 'TWITTER_ACCESS_SECRET', label: 'Access Token Secret', type: 'password', placeholder: '', required: true },
744
+ ],
745
+ tags: ['twitter', 'x', 'social', 'tweets'],
746
+ authMethod: 'api-key',
747
+ },
748
+ {
749
+ id: 'mcp-youtube', name: 'YouTube', npmPackage: 'youtube-mcp',
750
+ description: 'YouTube - search videos, get transcripts, channel analytics',
751
+ icon: 'play', category: 'research', author: 'Community', transport: 'stdio',
752
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'youtube-mcp'],
753
+ configFields: [{ key: 'YOUTUBE_API_KEY', label: 'API Key', type: 'password', placeholder: 'AIza...', required: true }],
754
+ tags: ['youtube', 'video', 'transcripts', 'search'],
755
+ authMethod: 'api-key',
756
+ },
757
+ {
758
+ id: 'mcp-spotify', name: 'Spotify', npmPackage: 'spotify-mcp',
759
+ description: 'Spotify - search tracks, manage playlists, playback control',
760
+ icon: 'music', category: 'data', author: 'Community', transport: 'stdio',
761
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'spotify-mcp'],
762
+ configFields: [
763
+ { key: 'SPOTIFY_CLIENT_ID', label: 'Client ID', type: 'text', placeholder: '', required: true },
764
+ { key: 'SPOTIFY_CLIENT_SECRET', label: 'Client Secret', type: 'password', placeholder: '', required: true },
765
+ ],
766
+ tags: ['spotify', 'music', 'playlists', 'audio'],
767
+ authMethod: 'api-key',
768
+ },
769
+ // ─── DESIGN & MEDIA ───────────────────────────────────
770
+ {
771
+ id: 'mcp-figma', name: 'Figma', npmPackage: 'figma-mcp',
772
+ description: 'Figma - read files, components, styles, export assets',
773
+ icon: 'palette', category: 'design', author: 'Figma', transport: 'stdio',
774
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'figma-mcp'],
775
+ configFields: [{ key: 'FIGMA_ACCESS_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: 'figd_...', required: true }],
776
+ website: 'https://figma.com', tags: ['figma', 'design', 'ui', 'components'],
777
+ },
778
+ {
779
+ id: 'mcp-21st-dev', name: '21st.dev Magic', npmPackage: '@21st-dev/magic-mcp',
780
+ description: 'Create crafted UI components inspired by best design engineers',
781
+ icon: 'sparkles', category: 'design', author: '21st.dev', transport: 'stdio',
782
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@21st-dev/magic-mcp'],
783
+ configFields: [{ key: 'TWENTYFIRST_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
784
+ website: 'https://21st.dev', tags: ['ui', 'components', 'design', 'magic'],
785
+ },
786
+ {
787
+ id: 'mcp-cloudinary', name: 'Cloudinary', npmPackage: 'cloudinary-mcp',
788
+ description: 'Cloudinary - upload, transform, optimize images and videos',
789
+ icon: 'image', category: 'design', author: 'Cloudinary', transport: 'stdio',
790
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'cloudinary-mcp'],
791
+ configFields: [{ key: 'CLOUDINARY_URL', label: 'Cloudinary URL', type: 'password', placeholder: 'cloudinary://api_key:api_secret@cloud_name', required: true }],
792
+ tags: ['cloudinary', 'images', 'media', 'cdn', 'transform'],
793
+ authMethod: 'api-key',
794
+ },
795
+ // ─── SECURITY & AUTH ───────────────────────────────────
796
+ {
797
+ id: 'mcp-vault', name: 'HashiCorp Vault', npmPackage: 'vault-mcp',
798
+ description: 'HashiCorp Vault - secrets management, dynamic credentials',
799
+ icon: 'lock', category: 'coding', author: 'Community', transport: 'stdio',
800
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'vault-mcp'],
801
+ configFields: [
802
+ { key: 'VAULT_ADDR', label: 'Vault Address', type: 'url', placeholder: 'http://localhost:8200', required: true },
803
+ { key: 'VAULT_TOKEN', label: 'Token', type: 'password', placeholder: 'hvs.', required: true },
804
+ ],
805
+ tags: ['vault', 'secrets', 'security', 'hashicorp'],
806
+ authMethod: 'api-key',
807
+ },
808
+ {
809
+ id: 'mcp-1password', name: '1Password', npmPackage: '1password-mcp',
810
+ description: '1Password - read secrets, vaults, items securely',
811
+ icon: 'lock', category: 'data', author: '1Password', transport: 'stdio',
812
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '1password-mcp'],
813
+ configFields: [{ key: 'OP_SERVICE_ACCOUNT_TOKEN', label: 'Service Account Token', type: 'password', placeholder: 'ops_...', required: true }],
814
+ tags: ['1password', 'secrets', 'passwords', 'security'],
815
+ authMethod: 'api-key',
816
+ },
817
+ // ─── DATA & ETL ────────────────────────────────────────
818
+ {
819
+ id: 'mcp-snowflake', name: 'Snowflake', npmPackage: 'snowflake-mcp',
820
+ description: 'Snowflake data warehouse - queries, tables, schemas, warehouses',
821
+ icon: 'database', category: 'data', author: 'Snowflake', transport: 'stdio',
822
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'snowflake-mcp'],
823
+ configFields: [
824
+ { key: 'SNOWFLAKE_ACCOUNT', label: 'Account', type: 'text', placeholder: 'org-account', required: true },
825
+ { key: 'SNOWFLAKE_USER', label: 'Username', type: 'text', placeholder: '', required: true },
826
+ { key: 'SNOWFLAKE_PASSWORD', label: 'Password', type: 'password', placeholder: '', required: true },
827
+ ],
828
+ tags: ['snowflake', 'data-warehouse', 'sql', 'analytics'],
829
+ authMethod: 'api-key',
830
+ },
831
+ {
832
+ id: 'mcp-bigquery', name: 'BigQuery', npmPackage: 'bigquery-mcp',
833
+ description: 'Google BigQuery - run SQL queries, manage datasets and tables',
834
+ icon: 'database', category: 'data', author: 'Google', transport: 'stdio',
835
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'bigquery-mcp'],
836
+ configFields: [
837
+ { key: 'GOOGLE_APPLICATION_CREDENTIALS', label: 'Service Account Key Path', type: 'text', placeholder: '/path/to/key.json', required: true },
838
+ { key: 'BIGQUERY_PROJECT_ID', label: 'Project ID', type: 'text', placeholder: 'my-project', required: true },
839
+ ],
840
+ tags: ['bigquery', 'sql', 'analytics', 'google-cloud'],
841
+ authMethod: 'none',
842
+ },
843
+ {
844
+ id: 'mcp-elasticsearch', name: 'Elasticsearch', npmPackage: 'elasticsearch-mcp',
845
+ description: 'Elasticsearch - search, index, aggregate, analyze data',
846
+ icon: 'search', category: 'data', author: 'Elastic', transport: 'stdio',
847
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'elasticsearch-mcp'],
848
+ configFields: [
849
+ { key: 'ELASTICSEARCH_URL', label: 'URL', type: 'url', placeholder: 'http://localhost:9200', required: true },
850
+ { key: 'ELASTICSEARCH_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: false },
851
+ ],
852
+ tags: ['elasticsearch', 'search', 'indexing', 'analytics'],
853
+ authMethod: 'api-key',
854
+ },
855
+ // ─── MESSAGING QUEUES ──────────────────────────────────
856
+ {
857
+ id: 'mcp-rabbitmq', name: 'RabbitMQ', npmPackage: 'rabbitmq-mcp',
858
+ description: 'RabbitMQ - queues, exchanges, publish/consume messages',
859
+ icon: 'send', category: 'data', author: 'Community', transport: 'stdio',
860
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'rabbitmq-mcp'],
861
+ configFields: [{ key: 'RABBITMQ_URL', label: 'Connection URL', type: 'password', placeholder: 'amqp://user:pass@localhost:5672', required: true }],
862
+ tags: ['rabbitmq', 'queue', 'messaging', 'amqp'],
863
+ authMethod: 'api-key',
864
+ },
865
+ {
866
+ id: 'mcp-kafka', name: 'Kafka', npmPackage: 'kafka-mcp',
867
+ description: 'Apache Kafka - topics, produce/consume, consumer groups',
868
+ icon: 'send', category: 'data', author: 'Community', transport: 'stdio',
869
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'kafka-mcp'],
870
+ configFields: [{ key: 'KAFKA_BROKERS', label: 'Brokers (comma-separated)', type: 'text', placeholder: 'localhost:9092', required: true }],
871
+ tags: ['kafka', 'streaming', 'events', 'queue'],
872
+ authMethod: 'none',
873
+ },
874
+ // ─── FINANCE & BUSINESS ────────────────────────────────
875
+ {
876
+ id: 'mcp-plaid', name: 'Plaid', npmPackage: 'plaid-mcp',
877
+ description: 'Plaid financial data - bank accounts, transactions, balances',
878
+ icon: 'credit-card', category: 'data', author: 'Plaid', transport: 'stdio',
879
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'plaid-mcp'],
880
+ configFields: [
881
+ { key: 'PLAID_CLIENT_ID', label: 'Client ID', type: 'text', placeholder: '', required: true },
882
+ { key: 'PLAID_SECRET', label: 'Secret', type: 'password', placeholder: '', required: true },
883
+ ],
884
+ website: 'https://plaid.com', tags: ['plaid', 'banking', 'finance', 'transactions'],
885
+ },
886
+ {
887
+ id: 'mcp-quickbooks', name: 'QuickBooks', npmPackage: 'quickbooks-mcp',
888
+ description: 'QuickBooks - invoices, expenses, customers, reports',
889
+ icon: 'receipt', category: 'data', author: 'Intuit', transport: 'stdio',
890
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'quickbooks-mcp'],
891
+ configFields: [
892
+ { key: 'QUICKBOOKS_CLIENT_ID', label: 'Client ID', type: 'text', placeholder: '', required: true },
893
+ { key: 'QUICKBOOKS_CLIENT_SECRET', label: 'Client Secret', type: 'password', placeholder: '', required: true },
894
+ ],
895
+ tags: ['quickbooks', 'accounting', 'invoices', 'finance'],
896
+ authMethod: 'api-key',
897
+ },
898
+ {
899
+ id: 'mcp-xero', name: 'Xero', npmPackage: 'xero-mcp',
900
+ description: 'Xero accounting - invoices, contacts, bank transactions, reports',
901
+ icon: 'receipt', category: 'data', author: 'Xero', transport: 'stdio',
902
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'xero-mcp'],
903
+ configFields: [
904
+ { key: 'XERO_CLIENT_ID', label: 'Client ID', type: 'text', placeholder: '', required: true },
905
+ { key: 'XERO_CLIENT_SECRET', label: 'Client Secret', type: 'password', placeholder: '', required: true },
906
+ ],
907
+ tags: ['xero', 'accounting', 'invoices', 'finance'],
908
+ authMethod: 'api-key',
909
+ },
910
+ // ─── CMS & CONTENT ─────────────────────────────────────
911
+ {
912
+ id: 'mcp-wordpress', name: 'WordPress', npmPackage: 'wordpress-mcp',
913
+ description: 'WordPress - posts, pages, media, comments via REST API',
914
+ icon: 'file-text', category: 'writing', author: 'Community', transport: 'stdio',
915
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'wordpress-mcp'],
916
+ configFields: [
917
+ { key: 'WORDPRESS_URL', label: 'Site URL', type: 'url', placeholder: 'https://yoursite.com', required: true },
918
+ { key: 'WORDPRESS_USER', label: 'Username', type: 'text', placeholder: '', required: true },
919
+ { key: 'WORDPRESS_APP_PASSWORD', label: 'Application Password', type: 'password', placeholder: '', required: true },
920
+ ],
921
+ tags: ['wordpress', 'cms', 'blog', 'content'],
922
+ authMethod: 'api-key',
923
+ },
924
+ {
925
+ id: 'mcp-contentful', name: 'Contentful', npmPackage: 'contentful-mcp',
926
+ description: 'Contentful - content types, entries, assets, spaces',
927
+ icon: 'file-text', category: 'writing', author: 'Contentful', transport: 'stdio',
928
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'contentful-mcp'],
929
+ configFields: [
930
+ { key: 'CONTENTFUL_SPACE_ID', label: 'Space ID', type: 'text', placeholder: '', required: true },
931
+ { key: 'CONTENTFUL_ACCESS_TOKEN', label: 'Access Token', type: 'password', placeholder: '', required: true },
932
+ ],
933
+ tags: ['contentful', 'cms', 'headless', 'content'],
934
+ authMethod: 'api-key',
935
+ },
936
+ {
937
+ id: 'mcp-sanity', name: 'Sanity', npmPackage: 'sanity-mcp',
938
+ description: 'Sanity CMS - documents, GROQ queries, assets, mutations',
939
+ icon: 'file-text', category: 'writing', author: 'Sanity', transport: 'stdio',
940
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'sanity-mcp'],
941
+ configFields: [
942
+ { key: 'SANITY_PROJECT_ID', label: 'Project ID', type: 'text', placeholder: '', required: true },
943
+ { key: 'SANITY_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true },
944
+ ],
945
+ tags: ['sanity', 'cms', 'headless', 'groq'],
946
+ authMethod: 'api-key',
947
+ },
948
+ // ─── MISC / UTILITY ────────────────────────────────────
949
+ {
950
+ id: 'mcp-weather', name: 'Weather', npmPackage: 'weather-mcp',
951
+ description: 'Weather data - current conditions, forecasts, historical data',
952
+ icon: 'cloud', category: 'data', author: 'Community', transport: 'stdio',
953
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'weather-mcp'],
954
+ configFields: [{ key: 'OPENWEATHER_API_KEY', label: 'OpenWeatherMap API Key', type: 'password', placeholder: '', required: true }],
955
+ tags: ['weather', 'forecast', 'climate', 'temperature'],
956
+ authMethod: 'api-key',
957
+ },
958
+ {
959
+ id: 'mcp-wolfram', name: 'Wolfram Alpha', npmPackage: 'wolfram-mcp',
960
+ description: 'Wolfram Alpha computational intelligence - math, science, data',
961
+ icon: 'calculator', category: 'research', author: 'Community', transport: 'stdio',
962
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'wolfram-mcp'],
963
+ configFields: [{ key: 'WOLFRAM_APP_ID', label: 'App ID', type: 'password', placeholder: '', required: true }],
964
+ tags: ['wolfram', 'math', 'science', 'computation'],
965
+ authMethod: 'api-key',
966
+ },
967
+ {
968
+ id: 'mcp-whois', name: 'WHOIS', npmPackage: 'whois-mcp',
969
+ description: 'Domain WHOIS lookup - registration, expiry, nameservers',
970
+ icon: 'globe', category: 'research', author: 'Community', transport: 'stdio',
971
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'whois-mcp'],
972
+ configFields: [],
973
+ tags: ['whois', 'domain', 'dns', 'lookup'],
974
+ authMethod: 'none',
975
+ },
976
+ {
977
+ id: 'mcp-mermaid', name: 'Mermaid', npmPackage: 'mermaid-mcp',
978
+ description: 'Generate Mermaid diagrams - flowcharts, sequence, gantt, class',
979
+ icon: 'workflow', category: 'design', author: 'Community', transport: 'stdio',
980
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'mermaid-mcp'],
981
+ configFields: [],
982
+ tags: ['mermaid', 'diagrams', 'flowchart', 'visualization'],
983
+ authMethod: 'none',
984
+ },
985
+ {
986
+ id: 'mcp-screenshot', name: 'Screenshot', npmPackage: 'screenshot-mcp',
987
+ description: 'Take screenshots of websites - full page, element, viewport',
988
+ icon: 'camera', category: 'research', author: 'Community', transport: 'stdio',
989
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'screenshot-mcp'],
990
+ configFields: [],
991
+ tags: ['screenshot', 'capture', 'web', 'image'],
992
+ authMethod: 'none',
993
+ },
994
+ {
995
+ id: 'mcp-pdf', name: 'PDF Tools', npmPackage: 'pdf-mcp',
996
+ description: 'Extract text, tables, and images from PDF documents',
997
+ icon: 'file', category: 'data', author: 'Community', transport: 'stdio',
998
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'pdf-mcp'],
999
+ configFields: [],
1000
+ tags: ['pdf', 'extract', 'text', 'documents'],
1001
+ authMethod: 'none',
1002
+ },
1003
+ {
1004
+ id: 'mcp-csv', name: 'CSV Tools', npmPackage: 'csv-mcp',
1005
+ description: 'Parse, query, transform, and generate CSV/TSV files',
1006
+ icon: 'table', category: 'data', author: 'Community', transport: 'stdio',
1007
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'csv-mcp'],
1008
+ configFields: [],
1009
+ tags: ['csv', 'tsv', 'data', 'tables', 'transform'],
1010
+ authMethod: 'none',
1011
+ },
1012
+ {
1013
+ id: 'mcp-s3', name: 'S3 / Object Storage', npmPackage: 's3-mcp',
1014
+ description: 'S3-compatible storage - list, read, write, delete objects',
1015
+ icon: 'hard-drive', category: 'data', author: 'Community', transport: 'stdio',
1016
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 's3-mcp'],
1017
+ configFields: [
1018
+ { key: 'S3_ENDPOINT', label: 'Endpoint', type: 'url', placeholder: 'https://s3.amazonaws.com', required: false },
1019
+ { key: 'S3_ACCESS_KEY', label: 'Access Key', type: 'text', placeholder: '', required: true },
1020
+ { key: 'S3_SECRET_KEY', label: 'Secret Key', type: 'password', placeholder: '', required: true },
1021
+ { key: 'S3_BUCKET', label: 'Bucket Name', type: 'text', placeholder: 'my-bucket', required: true },
1022
+ ],
1023
+ tags: ['s3', 'storage', 'objects', 'bucket'],
1024
+ authMethod: 'api-key',
1025
+ },
1026
+ {
1027
+ id: 'mcp-ssh', name: 'SSH', npmPackage: 'ssh-mcp',
1028
+ description: 'Execute commands on remote servers via SSH',
1029
+ icon: 'terminal', category: 'coding', author: 'Community', transport: 'stdio',
1030
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'ssh-mcp'],
1031
+ configFields: [
1032
+ { key: 'SSH_HOST', label: 'Host', type: 'text', placeholder: '192.168.1.100', required: true },
1033
+ { key: 'SSH_USER', label: 'Username', type: 'text', placeholder: 'root', required: true },
1034
+ { key: 'SSH_KEY_PATH', label: 'Private Key Path', type: 'text', placeholder: '~/.ssh/id_rsa', required: false },
1035
+ ],
1036
+ tags: ['ssh', 'remote', 'terminal', 'server'],
1037
+ authMethod: 'none',
1038
+ },
1039
+ {
1040
+ id: 'mcp-terraform', name: 'Terraform', npmPackage: 'terraform-mcp',
1041
+ description: 'Terraform - plan, apply, state, modules, resources',
1042
+ icon: 'server', category: 'coding', author: 'HashiCorp', transport: 'stdio',
1043
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'terraform-mcp'],
1044
+ configFields: [],
1045
+ tags: ['terraform', 'iac', 'infrastructure', 'devops'],
1046
+ authMethod: 'none',
1047
+ },
1048
+ {
1049
+ id: 'mcp-prometheus', name: 'Prometheus', npmPackage: 'prometheus-mcp',
1050
+ description: 'Prometheus - PromQL queries, metrics, alerts, targets',
1051
+ icon: 'bar-chart', category: 'data', author: 'Community', transport: 'stdio',
1052
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'prometheus-mcp'],
1053
+ configFields: [{ key: 'PROMETHEUS_URL', label: 'URL', type: 'url', placeholder: 'http://localhost:9090', required: true }],
1054
+ tags: ['prometheus', 'metrics', 'monitoring', 'promql'],
1055
+ authMethod: 'none',
1056
+ },
1057
+ {
1058
+ id: 'mcp-intercom', name: 'Intercom', npmPackage: 'intercom-mcp',
1059
+ description: 'Intercom - conversations, contacts, companies, articles',
1060
+ icon: 'message-circle', category: 'data', author: 'Intercom', transport: 'stdio',
1061
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'intercom-mcp'],
1062
+ configFields: [{ key: 'INTERCOM_TOKEN', label: 'Access Token', type: 'password', placeholder: '', required: true }],
1063
+ tags: ['intercom', 'support', 'chat', 'crm'],
1064
+ authMethod: 'api-key',
1065
+ },
1066
+ {
1067
+ id: 'mcp-zendesk', name: 'Zendesk', npmPackage: 'zendesk-mcp',
1068
+ description: 'Zendesk - tickets, users, organizations, search',
1069
+ icon: 'headphones', category: 'data', author: 'Zendesk', transport: 'stdio',
1070
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'zendesk-mcp'],
1071
+ configFields: [
1072
+ { key: 'ZENDESK_SUBDOMAIN', label: 'Subdomain', type: 'text', placeholder: 'your-org', required: true },
1073
+ { key: 'ZENDESK_EMAIL', label: 'Email', type: 'text', placeholder: 'agent@company.com', required: true },
1074
+ { key: 'ZENDESK_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true },
1075
+ ],
1076
+ tags: ['zendesk', 'support', 'tickets', 'helpdesk'],
1077
+ authMethod: 'api-key',
1078
+ },
1079
+ {
1080
+ id: 'mcp-freshdesk', name: 'Freshdesk', npmPackage: 'freshdesk-mcp',
1081
+ description: 'Freshdesk - tickets, contacts, groups, canned responses',
1082
+ icon: 'headphones', category: 'data', author: 'Community', transport: 'stdio',
1083
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'freshdesk-mcp'],
1084
+ configFields: [
1085
+ { key: 'FRESHDESK_DOMAIN', label: 'Domain', type: 'text', placeholder: 'your-org.freshdesk.com', required: true },
1086
+ { key: 'FRESHDESK_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
1087
+ ],
1088
+ tags: ['freshdesk', 'support', 'tickets', 'helpdesk'],
1089
+ authMethod: 'api-key',
1090
+ },
1091
+ {
1092
+ id: 'mcp-clickup', name: 'ClickUp', npmPackage: 'clickup-mcp',
1093
+ description: 'ClickUp - tasks, lists, spaces, goals, docs, time tracking',
1094
+ icon: 'check-square', category: 'coding', author: 'Community', transport: 'stdio',
1095
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'clickup-mcp'],
1096
+ configFields: [{ key: 'CLICKUP_TOKEN', label: 'Personal API Token', type: 'password', placeholder: 'pk_...', required: true }],
1097
+ tags: ['clickup', 'tasks', 'project-management', 'productivity'],
1098
+ authMethod: 'api-key',
1099
+ },
1100
+ {
1101
+ id: 'mcp-trello', name: 'Trello', npmPackage: 'trello-mcp',
1102
+ description: 'Trello - boards, lists, cards, checklists, members',
1103
+ icon: 'layout', category: 'data', author: 'Community', transport: 'stdio',
1104
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'trello-mcp'],
1105
+ configFields: [
1106
+ { key: 'TRELLO_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
1107
+ { key: 'TRELLO_TOKEN', label: 'Token', type: 'password', placeholder: '', required: true },
1108
+ ],
1109
+ tags: ['trello', 'boards', 'kanban', 'cards'],
1110
+ authMethod: 'api-key',
1111
+ },
1112
+ {
1113
+ id: 'mcp-monday', name: 'Monday.com', npmPackage: 'monday-mcp',
1114
+ description: 'Monday.com - boards, items, columns, updates, automations',
1115
+ icon: 'layout', category: 'data', author: 'Community', transport: 'stdio',
1116
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'monday-mcp'],
1117
+ configFields: [{ key: 'MONDAY_API_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true }],
1118
+ tags: ['monday', 'boards', 'project-management', 'workflow'],
1119
+ authMethod: 'api-key',
1120
+ },
1121
+ {
1122
+ id: 'mcp-github-actions', name: 'GitHub Actions', npmPackage: 'github-actions-mcp',
1123
+ description: 'GitHub Actions - workflows, runs, jobs, artifacts, secrets',
1124
+ icon: 'play-circle', category: 'coding', author: 'Community', transport: 'stdio',
1125
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'github-actions-mcp'],
1126
+ configFields: [{ key: 'GITHUB_TOKEN', label: 'Personal Access Token', type: 'password', placeholder: 'ghp_...', required: true }],
1127
+ tags: ['github-actions', 'ci-cd', 'workflows', 'automation'],
1128
+ authMethod: 'api-key',
1129
+ },
1130
+ {
1131
+ id: 'mcp-circleci', name: 'CircleCI', npmPackage: 'circleci-mcp',
1132
+ description: 'CircleCI - pipelines, jobs, workflows, orbs, insights',
1133
+ icon: 'play-circle', category: 'coding', author: 'Community', transport: 'stdio',
1134
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'circleci-mcp'],
1135
+ configFields: [{ key: 'CIRCLECI_TOKEN', label: 'Personal API Token', type: 'password', placeholder: '', required: true }],
1136
+ tags: ['circleci', 'ci-cd', 'pipelines', 'automation'],
1137
+ authMethod: 'api-key',
1138
+ },
1139
+ {
1140
+ id: 'mcp-upstash', name: 'Upstash', npmPackage: '@upstash/mcp-server',
1141
+ description: 'Upstash - serverless Redis and Kafka, QStash message queue',
1142
+ icon: 'database', category: 'data', author: 'Upstash', transport: 'stdio',
1143
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@upstash/mcp-server'],
1144
+ configFields: [
1145
+ { key: 'UPSTASH_REDIS_REST_URL', label: 'Redis REST URL', type: 'url', placeholder: '', required: true },
1146
+ { key: 'UPSTASH_REDIS_REST_TOKEN', label: 'Redis REST Token', type: 'password', placeholder: '', required: true },
1147
+ ],
1148
+ website: 'https://upstash.com', tags: ['upstash', 'redis', 'kafka', 'serverless'],
1149
+ },
1150
+ {
1151
+ id: 'mcp-sendgrid', name: 'SendGrid', npmPackage: 'sendgrid-mcp',
1152
+ description: 'SendGrid - send transactional emails, manage templates, contacts',
1153
+ icon: 'mail', category: 'data', author: 'Community', transport: 'stdio',
1154
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'sendgrid-mcp'],
1155
+ configFields: [{ key: 'SENDGRID_API_KEY', label: 'API Key', type: 'password', placeholder: 'SG.', required: true }],
1156
+ tags: ['sendgrid', 'email', 'transactional', 'templates'],
1157
+ authMethod: 'api-key',
1158
+ },
1159
+ {
1160
+ id: 'mcp-resend', name: 'Resend', npmPackage: 'resend-mcp',
1161
+ description: 'Resend - send emails with React Email templates',
1162
+ icon: 'mail', category: 'data', author: 'Resend', transport: 'stdio',
1163
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'resend-mcp'],
1164
+ configFields: [{ key: 'RESEND_API_KEY', label: 'API Key', type: 'password', placeholder: 're_...', required: true }],
1165
+ website: 'https://resend.com', tags: ['resend', 'email', 'react-email', 'transactional'],
1166
+ },
1167
+ {
1168
+ id: 'mcp-openapi', name: 'OpenAPI', npmPackage: 'openapi-mcp',
1169
+ description: 'Load any OpenAPI/Swagger spec and call its endpoints as MCP tools',
1170
+ icon: 'globe', category: 'coding', author: 'Community', transport: 'stdio',
1171
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'openapi-mcp'],
1172
+ configFields: [{ key: 'OPENAPI_SPEC_URL', label: 'Spec URL', type: 'url', placeholder: 'https://api.example.com/openapi.json', required: true }],
1173
+ tags: ['openapi', 'swagger', 'rest', 'api'],
1174
+ authMethod: 'none',
1175
+ },
1176
+ {
1177
+ id: 'mcp-graphql', name: 'GraphQL', npmPackage: 'graphql-mcp',
1178
+ description: 'Query any GraphQL endpoint - introspection, queries, mutations',
1179
+ icon: 'globe', category: 'coding', author: 'Community', transport: 'stdio',
1180
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', 'graphql-mcp'],
1181
+ configFields: [
1182
+ { key: 'GRAPHQL_URL', label: 'Endpoint URL', type: 'url', placeholder: 'https://api.example.com/graphql', required: true },
1183
+ { key: 'GRAPHQL_AUTH_HEADER', label: 'Auth Header Value', type: 'password', placeholder: 'Bearer ...', required: false },
1184
+ ],
1185
+ tags: ['graphql', 'api', 'query', 'mutation'],
1186
+ authMethod: 'api-key',
1187
+ },
1188
+ {
1189
+ id: 'mcp-coda', name: 'Coda', npmPackage: 'coda-mcp',
1190
+ description: 'Coda docs - tables, rows, formulas, pages, automations',
1191
+ icon: 'file-text', category: 'data', author: 'Community', transport: 'stdio',
1192
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'coda-mcp'],
1193
+ configFields: [{ key: 'CODA_API_TOKEN', label: 'API Token', type: 'password', placeholder: '', required: true }],
1194
+ tags: ['coda', 'docs', 'tables', 'automation'],
1195
+ authMethod: 'api-key',
1196
+ },
1197
+ {
1198
+ id: 'mcp-segment', name: 'Segment', npmPackage: 'segment-mcp',
1199
+ description: 'Segment - track events, identify users, manage sources & destinations',
1200
+ icon: 'bar-chart', category: 'data', author: 'Twilio', transport: 'stdio',
1201
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'segment-mcp'],
1202
+ configFields: [{ key: 'SEGMENT_WRITE_KEY', label: 'Write Key', type: 'password', placeholder: '', required: true }],
1203
+ tags: ['segment', 'analytics', 'events', 'cdp'],
1204
+ authMethod: 'api-key',
1205
+ },
1206
+ {
1207
+ id: 'mcp-amplitude', name: 'Amplitude', npmPackage: 'amplitude-mcp',
1208
+ description: 'Amplitude - events, user analytics, cohorts, retention',
1209
+ icon: 'bar-chart', category: 'data', author: 'Community', transport: 'stdio',
1210
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'amplitude-mcp'],
1211
+ configFields: [
1212
+ { key: 'AMPLITUDE_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true },
1213
+ { key: 'AMPLITUDE_SECRET_KEY', label: 'Secret Key', type: 'password', placeholder: '', required: true },
1214
+ ],
1215
+ tags: ['amplitude', 'analytics', 'events', 'product'],
1216
+ authMethod: 'api-key',
1217
+ },
1218
+ // ─── DOMAIN-SPECIFIC ─────────────────────────────────
1219
+ {
1220
+ id: 'mcp-context7', name: 'Context7', npmPackage: '@upstash/context7-mcp',
1221
+ description: 'Pull up-to-date library documentation and code examples on demand',
1222
+ icon: 'book-open', category: 'domain', author: 'Upstash', transport: 'stdio',
1223
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@upstash/context7-mcp'],
1224
+ configFields: [],
1225
+ tags: ['docs', 'documentation', 'libraries', 'context'],
1226
+ authMethod: 'none',
1227
+ },
1228
+ {
1229
+ id: 'mcp-aws-kb-retrieval', name: 'AWS KB Retrieval', npmPackage: '@modelcontextprotocol/server-aws-kb-retrieval',
1230
+ description: 'Retrieve from AWS Bedrock Knowledge Bases using RAG',
1231
+ icon: 'database', category: 'domain', author: 'MCP Official', transport: 'stdio',
1232
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-aws-kb-retrieval'],
1233
+ configFields: [
1234
+ { key: 'AWS_ACCESS_KEY_ID', label: 'Access Key ID', type: 'text', placeholder: 'AKIA...', required: true },
1235
+ { key: 'AWS_SECRET_ACCESS_KEY', label: 'Secret Access Key', type: 'password', placeholder: '', required: true },
1236
+ { key: 'AWS_REGION', label: 'Region', type: 'text', placeholder: 'us-east-1', required: true },
1237
+ ],
1238
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['aws', 'bedrock', 'rag', 'knowledge-base'],
1239
+ },
1240
+ {
1241
+ id: 'mcp-everart', name: 'EverArt', npmPackage: '@modelcontextprotocol/server-everart',
1242
+ description: 'AI image generation with multiple models via EverArt platform',
1243
+ icon: 'image', category: 'design', author: 'MCP Official', transport: 'stdio',
1244
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@modelcontextprotocol/server-everart'],
1245
+ configFields: [{ key: 'EVERART_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
1246
+ repo: 'https://github.com/modelcontextprotocol/servers', tags: ['image', 'generation', 'ai-art', 'design'],
1247
+ },
1248
+ {
1249
+ id: 'mcp-greptile', name: 'Greptile', npmPackage: '@greptile/mcp-server',
1250
+ description: 'AI-powered codebase search and understanding',
1251
+ icon: 'search', category: 'coding', author: 'Greptile', transport: 'stdio',
1252
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@greptile/mcp-server'],
1253
+ configFields: [{ key: 'GREPTILE_API_KEY', label: 'API Key', type: 'password', placeholder: '', required: true }],
1254
+ website: 'https://greptile.com', tags: ['code-search', 'codebase', 'ai', 'understanding'],
1255
+ },
1256
+ {
1257
+ id: 'mcp-e2b', name: 'E2B Code Interpreter', npmPackage: '@e2b/mcp-server',
1258
+ description: 'Sandboxed code execution - run Python, JS, and more in secure cloud sandbox',
1259
+ icon: 'terminal', category: 'coding', author: 'E2B', transport: 'stdio',
1260
+ runtimes: ['claude', 'amp', 'codex'], command: 'npx', defaultArgs: ['-y', '@e2b/mcp-server'],
1261
+ configFields: [{ key: 'E2B_API_KEY', label: 'API Key', type: 'password', placeholder: 'e2b_...', required: true }],
1262
+ website: 'https://e2b.dev', tags: ['sandbox', 'code-execution', 'interpreter', 'python'],
1263
+ },
1264
+ {
1265
+ id: 'mcp-hubspot-dev', name: 'HubSpot Developer', npmPackage: '@hubspot/mcp-server',
1266
+ description: 'HubSpot developer tools - CMS, projects, functions, deploy',
1267
+ icon: 'hexagon', category: 'domain', author: 'HubSpot', transport: 'stdio',
1268
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', '@hubspot/mcp-server'],
1269
+ configFields: [{ key: 'HUBSPOT_PORTAL_ID', label: 'Portal ID', type: 'text', placeholder: '', required: true }],
1270
+ website: 'https://developers.hubspot.com', tags: ['hubspot', 'cms', 'developer', 'deploy'],
1271
+ },
1272
+ {
1273
+ id: 'mcp-medical-ref', name: 'Medical Reference', npmPackage: 'medical-ref-mcp',
1274
+ description: 'Medical terminology, drug interactions, clinical guidelines lookup',
1275
+ icon: 'heart', category: 'domain', author: 'Community', transport: 'stdio',
1276
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'medical-ref-mcp'],
1277
+ configFields: [],
1278
+ tags: ['medical', 'healthcare', 'drugs', 'clinical'],
1279
+ authMethod: 'none',
1280
+ },
1281
+ {
1282
+ id: 'mcp-legal', name: 'Legal Research', npmPackage: 'legal-mcp',
1283
+ description: 'Legal document search - case law, statutes, regulations',
1284
+ icon: 'scale', category: 'domain', author: 'Community', transport: 'stdio',
1285
+ runtimes: ['claude', 'amp'], command: 'npx', defaultArgs: ['-y', 'legal-mcp'],
1286
+ configFields: [],
1287
+ tags: ['legal', 'law', 'case-law', 'regulations'],
1288
+ authMethod: 'none',
1289
+ },
1290
+ ];
1291
+ // Helper: search MCP registry
1292
+ export function searchMcpRegistry(query, category) {
1293
+ const q = query.toLowerCase();
1294
+ return MCP_REGISTRY.filter((entry) => {
1295
+ const matchesCategory = !category || category === 'all' || entry.category === category;
1296
+ const matchesQuery = !q ||
1297
+ entry.name.toLowerCase().includes(q) ||
1298
+ entry.description.toLowerCase().includes(q) ||
1299
+ entry.npmPackage.toLowerCase().includes(q) ||
1300
+ entry.tags.some((tag) => tag.includes(q));
1301
+ return matchesCategory && matchesQuery;
1302
+ });
1303
+ }