github-to-mcp-monorepo 1.0.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 (388) hide show
  1. package/.env.example +8 -0
  2. package/.github/CODEOWNERS +6 -0
  3. package/.husky/pre-commit +1 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +5 -0
  6. package/.prettierrc +7 -0
  7. package/.vscode/settings.json +4 -0
  8. package/ARCHITECTURE.md +1429 -0
  9. package/CHANGELOG.md +167 -0
  10. package/CONTRIBUTING.md +327 -0
  11. package/LICENSE +201 -0
  12. package/README.md +1028 -0
  13. package/SECURITY.md +248 -0
  14. package/VISUAL_GUIDE.md +437 -0
  15. package/apps/vscode/IMPLEMENTATION.md +480 -0
  16. package/apps/vscode/README.md +248 -0
  17. package/apps/vscode/package.json +381 -0
  18. package/apps/vscode/resources/icon.png +0 -0
  19. package/apps/vscode/resources/icon.svg +5 -0
  20. package/apps/vscode/src/commands/browseRegistry.ts +211 -0
  21. package/apps/vscode/src/commands/configureClaudeDesktop.ts +332 -0
  22. package/apps/vscode/src/commands/convert.ts +82 -0
  23. package/apps/vscode/src/commands/convertCurrentRepo.ts +109 -0
  24. package/apps/vscode/src/commands/convertFromUrl.ts +138 -0
  25. package/apps/vscode/src/commands/index.ts +121 -0
  26. package/apps/vscode/src/commands/validate.ts +197 -0
  27. package/apps/vscode/src/extension.ts +464 -0
  28. package/apps/vscode/src/global.d.ts +36 -0
  29. package/apps/vscode/src/test/extension.test.ts +73 -0
  30. package/apps/vscode/src/utils/file-generator.ts +529 -0
  31. package/apps/vscode/src/utils/github-api.ts +335 -0
  32. package/apps/vscode/src/utils/index.ts +29 -0
  33. package/apps/vscode/src/utils/mcp-config.ts +334 -0
  34. package/apps/vscode/src/utils/storage.ts +87 -0
  35. package/apps/vscode/src/views/McpServersTreeView.ts +160 -0
  36. package/apps/vscode/src/views/OutputChannelView.ts +195 -0
  37. package/apps/vscode/src/views/StatusBarItem.ts +251 -0
  38. package/apps/vscode/src/views/ToolsExplorerView.ts +314 -0
  39. package/apps/vscode/src/views/historyProvider.ts +75 -0
  40. package/apps/vscode/src/views/index.ts +12 -0
  41. package/apps/vscode/src/views/resultsPanel.ts +330 -0
  42. package/apps/vscode/src/webviews/ConversionPanel.ts +350 -0
  43. package/apps/vscode/src/webviews/ToolDetailsPanel.ts +448 -0
  44. package/apps/vscode/src/webviews/index.ts +9 -0
  45. package/apps/vscode/src/webviews/webview-ui/styles.ts +492 -0
  46. package/apps/vscode/tsconfig.json +20 -0
  47. package/apps/web/PLAYGROUND_GUIDE.md +499 -0
  48. package/apps/web/README.md +505 -0
  49. package/apps/web/app/api/convert/route.ts +100 -0
  50. package/apps/web/app/api/convert/stream/route.ts +198 -0
  51. package/apps/web/app/api/deploy/route.ts +157 -0
  52. package/apps/web/app/api/edge/route.ts +308 -0
  53. package/apps/web/app/api/export-docker/route.ts +284 -0
  54. package/apps/web/app/api/generate-openapi/route.ts +119 -0
  55. package/apps/web/app/api/mcp/[serverId]/route.ts +263 -0
  56. package/apps/web/app/api/playground/connect/route.ts +143 -0
  57. package/apps/web/app/api/playground/disconnect/route.ts +78 -0
  58. package/apps/web/app/api/playground/execute/route.ts +135 -0
  59. package/apps/web/app/api/playground/sessions/route.ts +103 -0
  60. package/apps/web/app/api/playground/tools/route.ts +117 -0
  61. package/apps/web/app/api/playground/v2/connect/route.ts +96 -0
  62. package/apps/web/app/api/playground/v2/disconnect/route.ts +88 -0
  63. package/apps/web/app/api/playground/v2/health/route.ts +80 -0
  64. package/apps/web/app/api/playground/v2/prompts/route.ts +160 -0
  65. package/apps/web/app/api/playground/v2/resources/route.ts +159 -0
  66. package/apps/web/app/api/playground/v2/sessions/route.ts +184 -0
  67. package/apps/web/app/api/playground/v2/tools/route.ts +167 -0
  68. package/apps/web/app/api/stream/route.ts +232 -0
  69. package/apps/web/app/batch/BatchConvertClient.tsx +190 -0
  70. package/apps/web/app/batch/page.tsx +37 -0
  71. package/apps/web/app/convert/page.tsx +269 -0
  72. package/apps/web/app/dashboard/page.tsx +380 -0
  73. package/apps/web/app/globals.css +622 -0
  74. package/apps/web/app/layout.tsx +120 -0
  75. package/apps/web/app/manifest.ts +31 -0
  76. package/apps/web/app/opengraph-image.tsx +112 -0
  77. package/apps/web/app/page.old.tsx +924 -0
  78. package/apps/web/app/page.tsx +77 -0
  79. package/apps/web/app/playground/page.tsx +306 -0
  80. package/apps/web/app/playground/v2/error.tsx +163 -0
  81. package/apps/web/app/playground/v2/layout.tsx +58 -0
  82. package/apps/web/app/playground/v2/loading.tsx +152 -0
  83. package/apps/web/app/playground/v2/page.tsx +644 -0
  84. package/apps/web/app/playground/v2/providers.tsx +214 -0
  85. package/apps/web/app/playground/v2/use-shortcuts.ts +209 -0
  86. package/apps/web/app/playground/v2/use-url-state.ts +296 -0
  87. package/apps/web/app/providers.tsx +22 -0
  88. package/apps/web/app/sitemap.ts +32 -0
  89. package/apps/web/app/twitter-image.tsx +112 -0
  90. package/apps/web/components/BranchSelector.tsx +401 -0
  91. package/apps/web/components/ClaudeConfigExport.tsx +226 -0
  92. package/apps/web/components/Features.tsx +84 -0
  93. package/apps/web/components/Footer.tsx +119 -0
  94. package/apps/web/components/GenerationProgress.tsx +248 -0
  95. package/apps/web/components/GithubUrlInput.tsx +483 -0
  96. package/apps/web/components/Header.tsx +175 -0
  97. package/apps/web/components/Hero.tsx +117 -0
  98. package/apps/web/components/HowItWorks.tsx +119 -0
  99. package/apps/web/components/InstallBanner.tsx +158 -0
  100. package/apps/web/components/Logo.tsx +116 -0
  101. package/apps/web/components/ParticleBackground.tsx +105 -0
  102. package/apps/web/components/Playground.tsx +472 -0
  103. package/apps/web/components/PlaygroundToolTester.tsx +410 -0
  104. package/apps/web/components/ProductCards.tsx +179 -0
  105. package/apps/web/components/SplitView.tsx +194 -0
  106. package/apps/web/components/ToolFilter.tsx +260 -0
  107. package/apps/web/components/ToolList.tsx +325 -0
  108. package/apps/web/components/batch/BatchConvert.tsx +785 -0
  109. package/apps/web/components/batch/index.ts +7 -0
  110. package/apps/web/components/convert/ConfigTabs.tsx +230 -0
  111. package/apps/web/components/convert/ConversionResult.tsx +482 -0
  112. package/apps/web/components/convert/InlinePlayground.tsx +259 -0
  113. package/apps/web/components/convert/LoadingSteps.tsx +311 -0
  114. package/apps/web/components/convert/OneClickInstall.tsx +224 -0
  115. package/apps/web/components/convert/ToolCard.tsx +189 -0
  116. package/apps/web/components/convert/TryInPlayground.tsx +242 -0
  117. package/apps/web/components/convert/index.ts +12 -0
  118. package/apps/web/components/deploy/DeployButton.tsx +369 -0
  119. package/apps/web/components/deploy/index.ts +7 -0
  120. package/apps/web/components/docker/DockerExport.tsx +690 -0
  121. package/apps/web/components/docker/index.ts +7 -0
  122. package/apps/web/components/install/OneClickInstall.tsx +676 -0
  123. package/apps/web/components/install/index.ts +7 -0
  124. package/apps/web/components/playground/CapabilityTabs.tsx +150 -0
  125. package/apps/web/components/playground/ConnectionStatusV2.tsx +322 -0
  126. package/apps/web/components/playground/EmptyStates.tsx +305 -0
  127. package/apps/web/components/playground/ExecutionLog.tsx +260 -0
  128. package/apps/web/components/playground/ExecutionLogV2.tsx +378 -0
  129. package/apps/web/components/playground/JsonViewer.tsx +388 -0
  130. package/apps/web/components/playground/PlaygroundLayout.tsx +244 -0
  131. package/apps/web/components/playground/PromptsPanel.tsx +385 -0
  132. package/apps/web/components/playground/ResourcesPanel.tsx +378 -0
  133. package/apps/web/components/playground/SchemaForm.tsx +477 -0
  134. package/apps/web/components/playground/ServerStatus.tsx +151 -0
  135. package/apps/web/components/playground/ShareButton.tsx +239 -0
  136. package/apps/web/components/playground/ToolsPanel.tsx +309 -0
  137. package/apps/web/components/playground/TransportConfigurator.tsx +563 -0
  138. package/apps/web/components/playground/index.ts +74 -0
  139. package/apps/web/components/playground/types.ts +202 -0
  140. package/apps/web/components/streaming/StreamingProgress.tsx +441 -0
  141. package/apps/web/components/streaming/index.ts +7 -0
  142. package/apps/web/components/ui/badge.tsx +42 -0
  143. package/apps/web/components/ui/button.tsx +88 -0
  144. package/apps/web/components/ui/card.tsx +75 -0
  145. package/apps/web/components/ui/code-block.tsx +122 -0
  146. package/apps/web/components/ui/index.ts +12 -0
  147. package/apps/web/components/ui/input.tsx +55 -0
  148. package/apps/web/components/ui/tabs.tsx +61 -0
  149. package/apps/web/hooks/index.ts +85 -0
  150. package/apps/web/hooks/types.ts +1173 -0
  151. package/apps/web/hooks/use-conversion.ts +133 -0
  152. package/apps/web/hooks/use-execution-history.ts +376 -0
  153. package/apps/web/hooks/use-generation-progress.ts +147 -0
  154. package/apps/web/hooks/use-local-storage.ts +88 -0
  155. package/apps/web/hooks/use-mcp-client.ts +623 -0
  156. package/apps/web/hooks/use-mcp-connection.ts +500 -0
  157. package/apps/web/hooks/use-mcp-execution.ts +282 -0
  158. package/apps/web/hooks/use-mcp-prompts.ts +441 -0
  159. package/apps/web/hooks/use-mcp-resources.ts +430 -0
  160. package/apps/web/hooks/use-mcp-tools.ts +540 -0
  161. package/apps/web/hooks/use-playground-store.ts +299 -0
  162. package/apps/web/hooks/use-playground.ts +184 -0
  163. package/apps/web/hooks/use-streaming-conversion.ts +227 -0
  164. package/apps/web/hooks/useBatchConversion.ts +271 -0
  165. package/apps/web/hooks/useDockerConfig.ts +161 -0
  166. package/apps/web/hooks/usePlatformDetection.ts +80 -0
  167. package/apps/web/hooks/useStreaming.ts +199 -0
  168. package/apps/web/lib/api/errors.ts +386 -0
  169. package/apps/web/lib/api/index.ts +137 -0
  170. package/apps/web/lib/api/logger.ts +187 -0
  171. package/apps/web/lib/api/middleware.ts +364 -0
  172. package/apps/web/lib/api/openapi.ts +977 -0
  173. package/apps/web/lib/api/session-manager.ts +594 -0
  174. package/apps/web/lib/api/types.ts +433 -0
  175. package/apps/web/lib/api/validation.ts +523 -0
  176. package/apps/web/lib/constants.ts +114 -0
  177. package/apps/web/lib/mcp/client.ts +1137 -0
  178. package/apps/web/lib/mcp/events.ts +651 -0
  179. package/apps/web/lib/mcp/index.ts +347 -0
  180. package/apps/web/lib/mcp/logger.ts +428 -0
  181. package/apps/web/lib/mcp/metrics.ts +703 -0
  182. package/apps/web/lib/mcp/retry.ts +616 -0
  183. package/apps/web/lib/mcp/session-manager.ts +779 -0
  184. package/apps/web/lib/mcp/transports.ts +988 -0
  185. package/apps/web/lib/mcp/types.ts +594 -0
  186. package/apps/web/lib/mcp-client-enhanced.ts +871 -0
  187. package/apps/web/lib/mcp-client.ts +778 -0
  188. package/apps/web/lib/mcp-errors.ts +489 -0
  189. package/apps/web/lib/mcp-sandbox.ts +593 -0
  190. package/apps/web/lib/mcp-testing.ts +428 -0
  191. package/apps/web/lib/mcp-types.ts +448 -0
  192. package/apps/web/lib/playground-store.tsx +1147 -0
  193. package/apps/web/lib/utils.ts +439 -0
  194. package/apps/web/next-env.d.ts +5 -0
  195. package/apps/web/next.config.js +23 -0
  196. package/apps/web/package.json +55 -0
  197. package/apps/web/postcss.config.js +6 -0
  198. package/apps/web/public/.well-known/ai-plugin.json +17 -0
  199. package/apps/web/public/logo.svg +6 -0
  200. package/apps/web/public/robots.txt +22 -0
  201. package/apps/web/public/schema.json +27 -0
  202. package/apps/web/tailwind.config.js +26 -0
  203. package/apps/web/tailwind.config.ts +123 -0
  204. package/apps/web/tsconfig.json +20 -0
  205. package/apps/web/types/deploy.ts +139 -0
  206. package/apps/web/types/index.ts +247 -0
  207. package/apps/web/vercel.json +39 -0
  208. package/eslint.config.mjs +23 -0
  209. package/llms.txt +102 -0
  210. package/mkdocs/docs/api/core.md +318 -0
  211. package/mkdocs/docs/api/index.md +128 -0
  212. package/mkdocs/docs/api/mcp-server.md +301 -0
  213. package/mkdocs/docs/api/openapi-parser.md +254 -0
  214. package/mkdocs/docs/assets/logo.svg +7 -0
  215. package/mkdocs/docs/changelog.md +118 -0
  216. package/mkdocs/docs/cli/generate.md +148 -0
  217. package/mkdocs/docs/cli/index.md +52 -0
  218. package/mkdocs/docs/cli/inspect.md +164 -0
  219. package/mkdocs/docs/cli/serve.md +136 -0
  220. package/mkdocs/docs/concepts/classification.md +254 -0
  221. package/mkdocs/docs/concepts/how-it-works.md +299 -0
  222. package/mkdocs/docs/concepts/index.md +77 -0
  223. package/mkdocs/docs/concepts/mcp-protocol.md +362 -0
  224. package/mkdocs/docs/concepts/tool-types.md +382 -0
  225. package/mkdocs/docs/contributing/architecture.md +262 -0
  226. package/mkdocs/docs/contributing/development.md +245 -0
  227. package/mkdocs/docs/contributing/index.md +73 -0
  228. package/mkdocs/docs/contributing/testing.md +320 -0
  229. package/mkdocs/docs/getting-started/configuration.md +235 -0
  230. package/mkdocs/docs/getting-started/index.md +54 -0
  231. package/mkdocs/docs/getting-started/installation.md +145 -0
  232. package/mkdocs/docs/getting-started/quickstart.md +160 -0
  233. package/mkdocs/docs/guides/batch.md +375 -0
  234. package/mkdocs/docs/guides/claude-desktop.md +227 -0
  235. package/mkdocs/docs/guides/cursor.md +188 -0
  236. package/mkdocs/docs/guides/custom-tools.md +367 -0
  237. package/mkdocs/docs/guides/index.md +78 -0
  238. package/mkdocs/docs/guides/private-repos.md +221 -0
  239. package/mkdocs/docs/guides/vscode.md +247 -0
  240. package/mkdocs/docs/index.md +175 -0
  241. package/mkdocs/docs/reference/config.md +223 -0
  242. package/mkdocs/docs/reference/env.md +192 -0
  243. package/mkdocs/docs/reference/index.md +102 -0
  244. package/mkdocs/docs/reference/tools.md +309 -0
  245. package/mkdocs/docs/stylesheets/extra.css +231 -0
  246. package/mkdocs/mkdocs.yml +204 -0
  247. package/mkdocs/overrides/.gitkeep +1 -0
  248. package/mkdocs/overrides/main.html +7 -0
  249. package/mkdocs/python-deps.txt +7 -0
  250. package/mkdocs/vercel.json +11 -0
  251. package/package.json +63 -0
  252. package/packages/core/package.json +61 -0
  253. package/packages/core/src/__tests__/bitbucket-client.test.ts +366 -0
  254. package/packages/core/src/__tests__/cli.test.ts +235 -0
  255. package/packages/core/src/__tests__/code-extractor.test.ts +378 -0
  256. package/packages/core/src/__tests__/docker-generator.test.ts +255 -0
  257. package/packages/core/src/__tests__/github-client.test.ts +390 -0
  258. package/packages/core/src/__tests__/gitlab-client.test.ts +319 -0
  259. package/packages/core/src/__tests__/go-extractor.test.ts +351 -0
  260. package/packages/core/src/__tests__/graphql-extractor.test.ts +330 -0
  261. package/packages/core/src/__tests__/java-extractor.test.ts +497 -0
  262. package/packages/core/src/__tests__/plugins.test.ts +467 -0
  263. package/packages/core/src/__tests__/readme-extractor.test.ts +258 -0
  264. package/packages/core/src/__tests__/redis-cache.test.ts +307 -0
  265. package/packages/core/src/__tests__/rust-extractor.test.ts +252 -0
  266. package/packages/core/src/__tests__/streaming.test.ts +251 -0
  267. package/packages/core/src/additional-extractors.ts +333 -0
  268. package/packages/core/src/cache/cache-interface.ts +179 -0
  269. package/packages/core/src/cache/index.ts +210 -0
  270. package/packages/core/src/cache/redis-cache.ts +291 -0
  271. package/packages/core/src/cache/upstash-cache.ts +379 -0
  272. package/packages/core/src/cache.ts +251 -0
  273. package/packages/core/src/cli.ts +822 -0
  274. package/packages/core/src/code-extractor.ts +696 -0
  275. package/packages/core/src/docker-generator.ts +470 -0
  276. package/packages/core/src/edge-compatible.ts +491 -0
  277. package/packages/core/src/extractors/go-extractor.ts +791 -0
  278. package/packages/core/src/extractors/index.ts +9 -0
  279. package/packages/core/src/extractors/java-extractor.ts +937 -0
  280. package/packages/core/src/extractors/rust-extractor.ts +744 -0
  281. package/packages/core/src/github-client.ts +319 -0
  282. package/packages/core/src/go-generator.ts +356 -0
  283. package/packages/core/src/graphql-extractor.ts +358 -0
  284. package/packages/core/src/index.ts +797 -0
  285. package/packages/core/src/langchain-exporter.ts +617 -0
  286. package/packages/core/src/language-parsers.ts +1114 -0
  287. package/packages/core/src/mcp-introspector.ts +279 -0
  288. package/packages/core/src/monorepo-detector.ts +378 -0
  289. package/packages/core/src/plugins/index.ts +370 -0
  290. package/packages/core/src/plugins/registry.ts +404 -0
  291. package/packages/core/src/plugins/types.ts +215 -0
  292. package/packages/core/src/providers/base-provider.ts +246 -0
  293. package/packages/core/src/providers/bitbucket-client.ts +464 -0
  294. package/packages/core/src/providers/gitlab-client.ts +388 -0
  295. package/packages/core/src/providers/index.ts +176 -0
  296. package/packages/core/src/python-generator.ts +260 -0
  297. package/packages/core/src/queue/index.ts +100 -0
  298. package/packages/core/src/queue/memory-queue.ts +445 -0
  299. package/packages/core/src/queue/redis-queue.ts +578 -0
  300. package/packages/core/src/queue/types.ts +251 -0
  301. package/packages/core/src/readme-extractor.ts +409 -0
  302. package/packages/core/src/schema-generator.ts +638 -0
  303. package/packages/core/src/streaming.ts +999 -0
  304. package/packages/core/src/types.ts +289 -0
  305. package/packages/core/tsconfig.json +9 -0
  306. package/packages/core/tsup.config.ts +25 -0
  307. package/packages/mcp-server/README.md +297 -0
  308. package/packages/mcp-server/package.json +55 -0
  309. package/packages/mcp-server/src/__tests__/mcp-server.test.ts +177 -0
  310. package/packages/mcp-server/src/__tests__/tools.test.ts +217 -0
  311. package/packages/mcp-server/src/index.ts +1206 -0
  312. package/packages/mcp-server/src/prompts/index.ts +601 -0
  313. package/packages/mcp-server/src/tools/export-docker.ts +362 -0
  314. package/packages/mcp-server/src/tools/generate-openapi.ts +162 -0
  315. package/packages/mcp-server/src/tools/monitor-mcp-server.ts +448 -0
  316. package/packages/mcp-server/src/tools/stream-convert.ts +398 -0
  317. package/packages/mcp-server/src/tools/test-mcp-tool.ts +531 -0
  318. package/packages/mcp-server/tsconfig.json +12 -0
  319. package/packages/mcp-server/tsup.config.ts +14 -0
  320. package/packages/openapi-parser/package-lock.json +3028 -0
  321. package/packages/openapi-parser/package.json +41 -0
  322. package/packages/openapi-parser/src/analyzer.ts +700 -0
  323. package/packages/openapi-parser/src/asyncapi-parser.ts +475 -0
  324. package/packages/openapi-parser/src/cli.ts +302 -0
  325. package/packages/openapi-parser/src/generator.ts +570 -0
  326. package/packages/openapi-parser/src/generators/express-analyzer.ts +649 -0
  327. package/packages/openapi-parser/src/generators/fastapi-analyzer.ts +960 -0
  328. package/packages/openapi-parser/src/generators/index.ts +200 -0
  329. package/packages/openapi-parser/src/generators/nextjs-analyzer.ts +768 -0
  330. package/packages/openapi-parser/src/generators/openapi-builder.ts +527 -0
  331. package/packages/openapi-parser/src/generators/types.ts +298 -0
  332. package/packages/openapi-parser/src/graphql-parser.ts +462 -0
  333. package/packages/openapi-parser/src/grpc-parser.ts +649 -0
  334. package/packages/openapi-parser/src/har-parser.ts +723 -0
  335. package/packages/openapi-parser/src/index.ts +635 -0
  336. package/packages/openapi-parser/src/insomnia-parser.ts +614 -0
  337. package/packages/openapi-parser/src/parser.ts +231 -0
  338. package/packages/openapi-parser/src/postman-parser.ts +611 -0
  339. package/packages/openapi-parser/src/ref-resolver.ts +313 -0
  340. package/packages/openapi-parser/src/transformer.ts +459 -0
  341. package/packages/openapi-parser/tests/generators/express.test.ts +209 -0
  342. package/packages/openapi-parser/tests/generators/fastapi.test.ts +236 -0
  343. package/packages/openapi-parser/tests/generators/nextjs.test.ts +273 -0
  344. package/packages/openapi-parser/tests/parsers.test.ts +847 -0
  345. package/packages/openapi-parser/tsconfig.json +9 -0
  346. package/packages/openapi-parser/tsup.config.ts +11 -0
  347. package/packages/registry/package.json +59 -0
  348. package/packages/registry/src/cli.ts +456 -0
  349. package/packages/registry/src/index.ts +44 -0
  350. package/packages/registry/src/popular/github.json +47 -0
  351. package/packages/registry/src/popular/index.ts +55 -0
  352. package/packages/registry/src/popular/linear.json +42 -0
  353. package/packages/registry/src/popular/notion.json +42 -0
  354. package/packages/registry/src/popular/openai.json +40 -0
  355. package/packages/registry/src/popular/resend.json +38 -0
  356. package/packages/registry/src/popular/slack.json +42 -0
  357. package/packages/registry/src/popular/stripe.json +163 -0
  358. package/packages/registry/src/popular/supabase.json +42 -0
  359. package/packages/registry/src/popular/twilio.json +40 -0
  360. package/packages/registry/src/popular/vercel.json +40 -0
  361. package/packages/registry/src/registry.ts +492 -0
  362. package/packages/registry/src/storage.ts +334 -0
  363. package/packages/registry/src/types.ts +275 -0
  364. package/packages/registry/src/updater.ts +208 -0
  365. package/packages/registry/tsconfig.json +10 -0
  366. package/packages/registry/tsup.config.ts +11 -0
  367. package/pnpm-workspace.yaml +3 -0
  368. package/scripts/build-docs.sh +16 -0
  369. package/server.json +9 -0
  370. package/templates/Dockerfile.python.template +60 -0
  371. package/templates/Dockerfile.typescript.template +60 -0
  372. package/templates/docker-compose.template.yml +68 -0
  373. package/tests/fixtures/express-app/index.js +34 -0
  374. package/tests/fixtures/express-app/routes/posts.js +43 -0
  375. package/tests/fixtures/express-app/routes/users.js +58 -0
  376. package/tests/fixtures/fastapi-app/main.py +125 -0
  377. package/tests/fixtures/fastapi-app/routes/admin.py +42 -0
  378. package/tests/fixtures/graphql/simple-schema.graphql +65 -0
  379. package/tests/fixtures/mocks/github-api-responses.json +63 -0
  380. package/tests/fixtures/nextjs-app/app/api/posts/route.ts +55 -0
  381. package/tests/fixtures/nextjs-app/app/api/users/[id]/route.ts +63 -0
  382. package/tests/fixtures/nextjs-app/app/api/users/route.ts +44 -0
  383. package/tests/fixtures/nextjs-app/pages/api/health.ts +28 -0
  384. package/tests/fixtures/openapi/petstore.yaml +179 -0
  385. package/tests/integration/langchain-export.test.ts +405 -0
  386. package/tests/integration/openapi-conversion.test.ts +221 -0
  387. package/tsconfig.json +18 -0
  388. package/vitest.config.ts +32 -0
@@ -0,0 +1,505 @@
1
+ # GitHub to MCP - Web Application
2
+
3
+ A modern web interface for converting GitHub repositories into Model Context Protocol (MCP) servers. Built with Next.js 14, React 18, and TypeScript.
4
+
5
+ ## Features
6
+
7
+ ### 🔄 Repository Conversion
8
+ - Convert any GitHub repository to MCP server format
9
+ - Support for OpenAPI specs, GraphQL schemas, and README documentation
10
+ - Real-time progress tracking during conversion
11
+ - Multi-step generation with visual feedback
12
+
13
+ ### 🎮 Interactive Playground
14
+ - Test MCP tools in an interactive sandbox
15
+ - Dynamic form generation from tool schemas
16
+ - Resizable split-panel interface
17
+ - Execute tools with custom parameters
18
+ - Copy results with one click
19
+
20
+ ### 🎯 Advanced Features
21
+ - **Branch/Tag/Commit Selection**: Choose specific Git references for conversion
22
+ - **Tool Filtering & Search**: Find tools quickly with real-time filtering
23
+ - **Claude Desktop Config Export**: One-click configuration setup with NPX, Local, and Python methods
24
+ - **Source Classification**: Automatic detection of OpenAPI, GraphQL, and README-based tools
25
+ - **Tool Confidence Scoring**: See reliability metrics for each tool
26
+
27
+ ### 🎨 Modern UI/UX
28
+ - Glass morphism design with particle effects
29
+ - Smooth animations with Framer Motion
30
+ - Responsive layout for all screen sizes
31
+ - Dark theme optimized for readability
32
+ - Accessibility-focused components
33
+
34
+ ## Quick Start
35
+
36
+ ### Prerequisites
37
+
38
+ - Node.js 18+ or compatible runtime
39
+ - pnpm 8+ (or npm/yarn)
40
+ - GitHub personal access token (for API access)
41
+
42
+ ### Installation
43
+
44
+ ```bash
45
+ # Install dependencies (from repository root)
46
+ pnpm install
47
+
48
+ # Navigate to web app
49
+ cd apps/web
50
+
51
+ # Start development server
52
+ pnpm dev
53
+ ```
54
+
55
+ The application will be available at `http://localhost:3000`
56
+
57
+ ### Building for Production
58
+
59
+ ```bash
60
+ # Build optimized production bundle
61
+ pnpm build
62
+
63
+ # Start production server
64
+ pnpm start
65
+ ```
66
+
67
+ ### Environment Variables
68
+
69
+ Create a `.env.local` file in `apps/web/`:
70
+
71
+ ```env
72
+ # GitHub API access (optional but recommended)
73
+ GITHUB_TOKEN=your_github_personal_access_token
74
+
75
+ # Next.js configuration
76
+ NEXT_PUBLIC_API_URL=http://localhost:3000/api
77
+ ```
78
+
79
+ ## Project Structure
80
+
81
+ ```
82
+ apps/web/
83
+ ├── app/ # Next.js App Router
84
+ │ ├── convert/ # Conversion page
85
+ │ ├── playground/ # Interactive playground
86
+ │ └── api/ # API routes
87
+ ├── components/ # React components
88
+ │ ├── ui/ # Base UI components
89
+ │ ├── convert/ # Conversion-specific
90
+ │ ├── BranchSelector.tsx # Git reference selector
91
+ │ ├── ClaudeConfigExport.tsx # Config export
92
+ │ ├── GenerationProgress.tsx # Progress indicator
93
+ │ ├── Playground.tsx # Main playground
94
+ │ ├── PlaygroundToolTester.tsx # Tool testing
95
+ │ ├── SplitView.tsx # Resizable panels
96
+ │ ├── ToolFilter.tsx # Filter/search UI
97
+ │ └── ToolList.tsx # Tool display
98
+ ├── hooks/ # Custom React hooks
99
+ │ ├── use-conversion.ts # Conversion state
100
+ │ ├── use-generation-progress.ts # Progress tracking
101
+ │ ├── use-local-storage.ts # Persistent storage
102
+ │ └── use-streaming-conversion.ts # SSE handling
103
+ ├── lib/ # Utilities
104
+ │ ├── constants.ts # App constants
105
+ │ └── utils.ts # Helper functions
106
+ ├── types/ # TypeScript definitions
107
+ │ └── index.ts
108
+ └── styles/
109
+ └── globals.css # Global styles
110
+ ```
111
+
112
+ ## Key Components
113
+
114
+ ### Playground
115
+
116
+ Interactive testing environment for MCP tools.
117
+
118
+ ```typescript
119
+ import Playground from '@/components/Playground';
120
+
121
+ <Playground
122
+ initialResult={conversionResult} // Optional pre-loaded result
123
+ />
124
+ ```
125
+
126
+ Features:
127
+ - Tool search and filtering
128
+ - Dynamic parameter forms
129
+ - Mock execution with JSON responses
130
+ - Resizable split-panel layout
131
+ - Demo mode with sample tools
132
+
133
+ ### GenerationProgress
134
+
135
+ Multi-step progress indicator with weighted steps.
136
+
137
+ ```typescript
138
+ import GenerationProgress from '@/components/GenerationProgress';
139
+ import { useGenerationProgress } from '@/hooks/use-generation-progress';
140
+
141
+ const progress = useGenerationProgress();
142
+
143
+ <GenerationProgress progress={progress} />
144
+ ```
145
+
146
+ Steps:
147
+ 1. Fetching Repository (10%)
148
+ 2. Classifying Sources (20%)
149
+ 3. Extracting Tools (40%)
150
+ 4. Generating Server (30%)
151
+
152
+ ### BranchSelector
153
+
154
+ GitHub branch, tag, and commit selector with API integration.
155
+
156
+ ```typescript
157
+ import BranchSelector, { GitRef } from '@/components/BranchSelector';
158
+
159
+ <BranchSelector
160
+ repoUrl="https://github.com/owner/repo"
161
+ onSelect={(ref: GitRef | null) => console.log(ref)}
162
+ />
163
+ ```
164
+
165
+ ### ClaudeConfigExport
166
+
167
+ One-click Claude Desktop configuration export.
168
+
169
+ ```typescript
170
+ import ClaudeConfigExport from '@/components/ClaudeConfigExport';
171
+
172
+ <ClaudeConfigExport
173
+ repoUrl="https://github.com/owner/repo"
174
+ repoName="owner/repo"
175
+ />
176
+ ```
177
+
178
+ Config types:
179
+ - NPX: Zero-install method
180
+ - Local: Clone and build
181
+ - Python: Python-based server
182
+
183
+ ### SplitView
184
+
185
+ Resizable split-panel container.
186
+
187
+ ```typescript
188
+ import SplitView from '@/components/SplitView';
189
+
190
+ <SplitView
191
+ left={<LeftPanel />}
192
+ right={<RightPanel />}
193
+ defaultSplit={30}
194
+ minLeftWidth={250}
195
+ minRightWidth={400}
196
+ />
197
+ ```
198
+
199
+ ## Hooks
200
+
201
+ ### useGenerationProgress
202
+
203
+ Manages conversion progress state.
204
+
205
+ ```typescript
206
+ import { useGenerationProgress } from '@/hooks/use-generation-progress';
207
+
208
+ const progress = useGenerationProgress();
209
+
210
+ // Control progress
211
+ progress.startStep('fetching', 'Fetching repository...');
212
+ progress.completeStep('fetching', 'Repository fetched');
213
+ progress.errorStep('extracting', 'Failed to extract tools');
214
+ progress.addToolsFound(5);
215
+
216
+ // Access state
217
+ console.log(progress.progress); // 0-100
218
+ console.log(progress.isComplete); // boolean
219
+ console.log(progress.hasError); // boolean
220
+ ```
221
+
222
+ ### useLocalStorage
223
+
224
+ Persist state to localStorage with React state sync.
225
+
226
+ ```typescript
227
+ import { useLocalStorage } from '@/hooks/use-local-storage';
228
+
229
+ const [value, setValue] = useLocalStorage<T>('key', defaultValue);
230
+ ```
231
+
232
+ ### useStreamingConversion
233
+
234
+ Handle server-sent events for real-time conversion updates.
235
+
236
+ ```typescript
237
+ import { useStreamingConversion } from '@/hooks/use-streaming-conversion';
238
+
239
+ const { convert, status, result, steps, error } = useStreamingConversion();
240
+
241
+ await convert('https://github.com/owner/repo', { type: 'branch', ref: 'main' });
242
+ ```
243
+
244
+ ## API Routes
245
+
246
+ ### POST /api/convert
247
+
248
+ Convert a GitHub repository to MCP format.
249
+
250
+ **Request:**
251
+ ```json
252
+ {
253
+ "url": "https://github.com/owner/repo",
254
+ "ref": "main",
255
+ "type": "branch"
256
+ }
257
+ ```
258
+
259
+ **Response:**
260
+ Server-sent events (SSE) stream with progress updates:
261
+ ```
262
+ data: {"type": "step", "step": "fetch", "status": "in-progress"}
263
+ data: {"type": "step", "step": "fetch", "status": "complete"}
264
+ data: {"type": "result", "data": {...}}
265
+ ```
266
+
267
+ ## Styling
268
+
269
+ ### Design System
270
+
271
+ **Colors:**
272
+ - Background: `bg-neutral-900/50`
273
+ - Borders: `border-neutral-800`
274
+ - Text: White primary, neutral secondary
275
+ - Source Types:
276
+ - OpenAPI: Purple (`bg-purple-500/20`)
277
+ - GraphQL: Pink (`bg-pink-500/20`)
278
+ - README: Cyan (`bg-cyan-500/20`)
279
+
280
+ **Spacing:**
281
+ - Container: `container mx-auto px-4`
282
+ - Section: `py-8` or `py-12`
283
+ - Component: `p-4` or `p-6`
284
+
285
+ **Typography:**
286
+ - Headings: `text-2xl` to `text-5xl`, `font-bold`
287
+ - Body: `text-sm` to `text-base`
288
+ - Labels: `text-xs`, `text-neutral-400`
289
+
290
+ ### Tailwind Configuration
291
+
292
+ Custom configuration in `tailwind.config.js`:
293
+ - Extended color palette
294
+ - Custom animation utilities
295
+ - Glass morphism utilities
296
+ - Typography plugin
297
+
298
+ ## Development
299
+
300
+ ### Scripts
301
+
302
+ ```bash
303
+ # Development server with hot reload
304
+ pnpm dev
305
+
306
+ # Type checking
307
+ pnpm typecheck
308
+
309
+ # Linting
310
+ pnpm lint
311
+
312
+ # Build for production
313
+ pnpm build
314
+
315
+ # Start production server
316
+ pnpm start
317
+ ```
318
+
319
+ ### Code Style
320
+
321
+ - TypeScript strict mode enabled
322
+ - ESLint with Next.js recommended rules
323
+ - Prettier for code formatting
324
+ - Component-first architecture
325
+ - Hooks for state management
326
+
327
+ ### Adding New Components
328
+
329
+ 1. Create component file in `components/`
330
+ 2. Export TypeScript interfaces for props
331
+ 3. Use `'use client'` directive for client components
332
+ 4. Add JSDoc comments for documentation
333
+ 5. Follow existing naming conventions
334
+
335
+ Example:
336
+
337
+ ```typescript
338
+ /**
339
+ * MyComponent - Brief description
340
+ * @copyright 2024-2026 nirholas
341
+ * @license MIT
342
+ */
343
+
344
+ 'use client';
345
+
346
+ import { useState } from 'react';
347
+
348
+ interface MyComponentProps {
349
+ title: string;
350
+ onAction?: () => void;
351
+ }
352
+
353
+ export default function MyComponent({ title, onAction }: MyComponentProps) {
354
+ const [state, setState] = useState(false);
355
+
356
+ return (
357
+ <div className="p-4 rounded-lg border border-neutral-800">
358
+ <h2>{title}</h2>
359
+ {/* Component content */}
360
+ </div>
361
+ );
362
+ }
363
+ ```
364
+
365
+ ## Testing
366
+
367
+ ### Manual Testing
368
+
369
+ Navigate through the application flows:
370
+
371
+ 1. **Conversion Flow:**
372
+ - Go to Convert page
373
+ - Enter GitHub URL
374
+ - (Optional) Select branch/tag
375
+ - Click Convert
376
+ - Verify progress display
377
+ - Check tool list
378
+ - Test config export
379
+
380
+ 2. **Playground Flow:**
381
+ - Navigate to Playground
382
+ - Search for tools
383
+ - Select a tool
384
+ - Fill in parameters
385
+ - Execute tool
386
+ - Verify response
387
+ - Test copy functionality
388
+
389
+ ### Browser Compatibility
390
+
391
+ Tested on:
392
+ - Chrome 120+ ✅
393
+ - Edge 120+ ✅
394
+ - Firefox 121+ ⚠️ (needs verification)
395
+ - Safari 17+ ⚠️ (needs verification)
396
+
397
+ ## Performance
398
+
399
+ ### Optimization Strategies
400
+
401
+ - **Code Splitting:** Automatic with Next.js App Router
402
+ - **Memoization:** `useMemo` for expensive computations
403
+ - **Lazy Loading:** Dynamic imports for heavy components
404
+ - **Streaming:** Server-sent events for real-time updates
405
+ - **Local Storage:** Persistent state without server requests
406
+
407
+ ### Metrics
408
+
409
+ - Initial page load: ~2.3s
410
+ - Time to interactive: <3s
411
+ - Tool filtering: <50ms
412
+ - Split view resize: 60fps
413
+
414
+ ## Deployment
415
+
416
+ ### Vercel (Recommended)
417
+
418
+ ```bash
419
+ # Install Vercel CLI
420
+ pnpm add -g vercel
421
+
422
+ # Deploy
423
+ vercel
424
+ ```
425
+
426
+ Configuration is in `vercel.json`.
427
+
428
+ ### Docker
429
+
430
+ ```dockerfile
431
+ FROM node:18-alpine
432
+ WORKDIR /app
433
+ COPY . .
434
+ RUN pnpm install
435
+ RUN pnpm build
436
+ CMD ["pnpm", "start"]
437
+ ```
438
+
439
+ ### Environment Variables
440
+
441
+ Set these in your deployment platform:
442
+ - `GITHUB_TOKEN` - GitHub API access
443
+ - `NEXT_PUBLIC_API_URL` - API endpoint URL
444
+
445
+ ## Troubleshooting
446
+
447
+ ### Common Issues
448
+
449
+ **TypeScript Errors:**
450
+ ```bash
451
+ # Restart TypeScript server in VS Code
452
+ Cmd/Ctrl + Shift + P → "TypeScript: Restart TS Server"
453
+ ```
454
+
455
+ **Build Errors:**
456
+ ```bash
457
+ # Clean cache and reinstall
458
+ rm -rf .next node_modules
459
+ pnpm install
460
+ pnpm build
461
+ ```
462
+
463
+ **GitHub API Rate Limit:**
464
+ - Add `GITHUB_TOKEN` to environment variables
465
+ - Use authenticated requests (60 → 5000 requests/hour)
466
+
467
+ **Split View Not Resizing:**
468
+ - Ensure parent container has defined height
469
+ - Add `h-full` or specific height class
470
+
471
+ ## Contributing
472
+
473
+ See [PLAYGROUND_GUIDE.md](./PLAYGROUND_GUIDE.md) for detailed component documentation and development guidelines.
474
+
475
+ ### Pull Request Checklist
476
+
477
+ - [ ] Code follows TypeScript style guide
478
+ - [ ] Components have proper TypeScript types
479
+ - [ ] JSDoc comments added for new functions
480
+ - [ ] Manual testing completed
481
+ - [ ] No TypeScript errors (`pnpm typecheck`)
482
+ - [ ] No ESLint warnings (`pnpm lint`)
483
+
484
+ ## Documentation
485
+
486
+ - [Web UI Enhancements Overview](../../WEB_UI_ENHANCEMENTS.md) - Complete feature documentation
487
+ - [Playground Developer Guide](./PLAYGROUND_GUIDE.md) - Component API reference
488
+ - [Root README](../../README.md) - Project overview
489
+
490
+ ## License
491
+
492
+ MIT - See [LICENSE](../../LICENSE) for details
493
+
494
+ ## Credits
495
+
496
+ - Built with [Next.js](https://nextjs.org/)
497
+ - UI components from [Radix UI](https://www.radix-ui.com/)
498
+ - Icons from [Lucide React](https://lucide.dev/)
499
+ - Animations with [Framer Motion](https://www.framer.com/motion/)
500
+ - Styling with [Tailwind CSS](https://tailwindcss.com/)
501
+ - Inspired by [lyra-web3-playground](https://github.com/nirholas/lyra-web3-playground)
502
+
503
+ ---
504
+
505
+ **Need help?** Open an issue on [GitHub](https://github.com/nirholas/github-to-mcp/issues)
@@ -0,0 +1,100 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
3
+
4
+ export async function POST(request: NextRequest) {
5
+ try {
6
+ const { url } = await request.json();
7
+
8
+ if (!url || typeof url !== 'string') {
9
+ return NextResponse.json(
10
+ { error: 'GitHub URL is required' },
11
+ { status: 400 }
12
+ );
13
+ }
14
+
15
+ // Validate GitHub URL
16
+ const githubPattern = /^https?:\/\/(www\.)?github\.com\/[\w-]+\/[\w.-]+/;
17
+ if (!githubPattern.test(url)) {
18
+ return NextResponse.json(
19
+ { error: 'Invalid GitHub URL format' },
20
+ { status: 400 }
21
+ );
22
+ }
23
+
24
+ // Generate MCP tools
25
+ const result = await generateFromGithub(url, {
26
+ sources: ['readme', 'openapi', 'code'],
27
+ githubToken: process.env.GITHUB_TOKEN,
28
+ });
29
+
30
+ // Generate the MCP server code (TypeScript)
31
+ const code = result.generate();
32
+
33
+ // Generate Python MCP server code
34
+ const pythonCode = result.generatePython ? result.generatePython() : '';
35
+
36
+ // Generate config snippets
37
+ const repoName = result.name;
38
+
39
+ const claudeConfig = JSON.stringify({
40
+ mcpServers: {
41
+ [repoName]: {
42
+ command: 'npx',
43
+ args: ['tsx', `${repoName}-mcp/index.ts`],
44
+ },
45
+ },
46
+ }, null, 2);
47
+
48
+ const cursorConfig = JSON.stringify({
49
+ mcpServers: {
50
+ [repoName]: {
51
+ command: 'npx',
52
+ args: ['tsx', `${repoName}-mcp/index.ts`],
53
+ },
54
+ },
55
+ }, null, 2);
56
+
57
+ const claudePythonConfig = JSON.stringify({
58
+ mcpServers: {
59
+ [repoName]: {
60
+ command: 'python',
61
+ args: ['-m', `${repoName.replace(/-/g, '_')}_mcp`],
62
+ },
63
+ },
64
+ }, null, 2);
65
+
66
+ return NextResponse.json({
67
+ name: result.name,
68
+ tools: result.tools.map((t) => ({
69
+ name: t.name,
70
+ description: t.description,
71
+ inputSchema: t.inputSchema,
72
+ source: t.source,
73
+ })),
74
+ sources: result.sources,
75
+ classification: result.classification,
76
+ code,
77
+ pythonCode,
78
+ claudeConfig,
79
+ cursorConfig,
80
+ claudePythonConfig,
81
+ });
82
+ } catch (error) {
83
+ console.error('Conversion error:', error);
84
+
85
+ const message = error instanceof Error ? error.message : 'Conversion failed';
86
+
87
+ // Handle rate limiting
88
+ if (message.includes('rate limit')) {
89
+ return NextResponse.json(
90
+ { error: 'GitHub API rate limit exceeded. Please try again later or provide a GitHub token.' },
91
+ { status: 429 }
92
+ );
93
+ }
94
+
95
+ return NextResponse.json(
96
+ { error: message },
97
+ { status: 500 }
98
+ );
99
+ }
100
+ }