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,375 @@
1
+ # Batch Conversion
2
+
3
+ Convert multiple GitHub repositories to MCP servers at once.
4
+
5
+ ## Web UI Batch Mode
6
+
7
+ Visit [github-to-mcp.vercel.app/batch](https://github-to-mcp.vercel.app/batch) to convert multiple repos:
8
+
9
+ 1. Enter one URL per line
10
+ 2. Configure shared options
11
+ 3. Click "Generate All"
12
+ 4. Download as a single ZIP
13
+
14
+ ## CLI Batch Processing
15
+
16
+ ### Using a File List
17
+
18
+ Create a file with URLs (one per line):
19
+
20
+ ```text title="repos.txt"
21
+ https://github.com/stripe/stripe-node
22
+ https://github.com/openai/openai-node
23
+ https://github.com/vercel/next.js
24
+ https://github.com/prisma/prisma
25
+ ```
26
+
27
+ Then process:
28
+
29
+ ```bash
30
+ while read url; do
31
+ npx @nirholas/github-to-mcp "$url" -o "./mcp-servers/$(basename $url)"
32
+ done < repos.txt
33
+ ```
34
+
35
+ ### Parallel Processing
36
+
37
+ For faster conversion, use parallel processing:
38
+
39
+ ```bash
40
+ # Using GNU parallel
41
+ cat repos.txt | parallel -j4 \
42
+ 'npx @nirholas/github-to-mcp {} -o ./mcp-servers/$(basename {})'
43
+ ```
44
+
45
+ ### With xargs
46
+
47
+ ```bash
48
+ cat repos.txt | xargs -I {} -P 4 \
49
+ npx @nirholas/github-to-mcp {} -o ./mcp-servers/$(basename {})
50
+ ```
51
+
52
+ ## Programmatic Batch
53
+
54
+ ### Basic Batch
55
+
56
+ ```typescript
57
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
58
+
59
+ const repos = [
60
+ 'https://github.com/stripe/stripe-node',
61
+ 'https://github.com/openai/openai-node',
62
+ 'https://github.com/vercel/next.js',
63
+ ];
64
+
65
+ async function batchGenerate() {
66
+ for (const repo of repos) {
67
+ const name = repo.split('/').pop();
68
+ console.log(`Generating: ${name}`);
69
+
70
+ const result = await generateFromGithub(repo);
71
+ await result.save(`./mcp-servers/${name}`);
72
+
73
+ console.log(`✓ Generated ${result.tools.length} tools for ${name}`);
74
+ }
75
+ }
76
+
77
+ batchGenerate();
78
+ ```
79
+
80
+ ### Parallel Batch
81
+
82
+ ```typescript
83
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
84
+
85
+ const repos = [
86
+ 'https://github.com/stripe/stripe-node',
87
+ 'https://github.com/openai/openai-node',
88
+ 'https://github.com/vercel/next.js',
89
+ ];
90
+
91
+ async function parallelBatch() {
92
+ const results = await Promise.all(
93
+ repos.map(async (repo) => {
94
+ const name = repo.split('/').pop();
95
+ try {
96
+ const result = await generateFromGithub(repo);
97
+ await result.save(`./mcp-servers/${name}`);
98
+ return { repo, success: true, tools: result.tools.length };
99
+ } catch (error) {
100
+ return { repo, success: false, error: error.message };
101
+ }
102
+ })
103
+ );
104
+
105
+ console.log('Results:', results);
106
+ }
107
+
108
+ parallelBatch();
109
+ ```
110
+
111
+ ### With Concurrency Control
112
+
113
+ ```typescript
114
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
115
+ import pLimit from 'p-limit';
116
+
117
+ const repos = [/* ... */];
118
+ const limit = pLimit(3); // Max 3 concurrent
119
+
120
+ async function controlledBatch() {
121
+ const tasks = repos.map(repo =>
122
+ limit(async () => {
123
+ const name = repo.split('/').pop();
124
+ const result = await generateFromGithub(repo);
125
+ await result.save(`./mcp-servers/${name}`);
126
+ return { name, tools: result.tools.length };
127
+ })
128
+ );
129
+
130
+ const results = await Promise.all(tasks);
131
+ console.log('Completed:', results);
132
+ }
133
+
134
+ controlledBatch();
135
+ ```
136
+
137
+ ## Batch Configuration
138
+
139
+ ### Shared Options
140
+
141
+ Apply the same options to all repos:
142
+
143
+ ```typescript
144
+ const sharedOptions = {
145
+ language: 'typescript',
146
+ includeUniversalTools: true,
147
+ extractFromOpenAPI: true,
148
+ token: process.env.GITHUB_TOKEN,
149
+ };
150
+
151
+ for (const repo of repos) {
152
+ await generateFromGithub(repo, sharedOptions);
153
+ }
154
+ ```
155
+
156
+ ### Per-Repo Options
157
+
158
+ Customize options per repository:
159
+
160
+ ```typescript
161
+ const repoConfigs = [
162
+ {
163
+ url: 'https://github.com/stripe/stripe-node',
164
+ options: { extractFromOpenAPI: true }
165
+ },
166
+ {
167
+ url: 'https://github.com/facebook/react',
168
+ options: { maxDepth: 2 } // Large repo, limit depth
169
+ },
170
+ {
171
+ url: 'https://github.com/my-org/private-repo',
172
+ options: { token: process.env.PRIVATE_TOKEN }
173
+ },
174
+ ];
175
+
176
+ for (const { url, options } of repoConfigs) {
177
+ await generateFromGithub(url, options);
178
+ }
179
+ ```
180
+
181
+ ## Output Organization
182
+
183
+ ### By Category
184
+
185
+ ```bash
186
+ mcp-servers/
187
+ ├── apis/
188
+ │ ├── stripe/
189
+ │ └── openai/
190
+ ├── frameworks/
191
+ │ ├── nextjs/
192
+ │ └── react/
193
+ └── tools/
194
+ ├── prisma/
195
+ └── typescript/
196
+ ```
197
+
198
+ ### By Organization
199
+
200
+ ```bash
201
+ mcp-servers/
202
+ ├── stripe/
203
+ │ └── stripe-node/
204
+ ├── openai/
205
+ │ └── openai-node/
206
+ └── vercel/
207
+ └── next.js/
208
+ ```
209
+
210
+ ### Script for Organization
211
+
212
+ ```typescript
213
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
214
+ import { mkdir } from 'fs/promises';
215
+ import { join } from 'path';
216
+
217
+ async function organizedBatch(repos: string[], baseDir: string) {
218
+ for (const repo of repos) {
219
+ const [, owner, name] = repo.match(/github\.com\/([^/]+)\/([^/]+)/) || [];
220
+
221
+ const outputDir = join(baseDir, owner, name);
222
+ await mkdir(outputDir, { recursive: true });
223
+
224
+ const result = await generateFromGithub(repo);
225
+ await result.save(outputDir);
226
+
227
+ console.log(`✓ ${owner}/${name} → ${outputDir}`);
228
+ }
229
+ }
230
+ ```
231
+
232
+ ## Error Handling
233
+
234
+ ### Retry Failed Repos
235
+
236
+ ```typescript
237
+ async function batchWithRetry(repos: string[], maxRetries = 3) {
238
+ const results = { success: [], failed: [] };
239
+
240
+ for (const repo of repos) {
241
+ let attempt = 0;
242
+ let success = false;
243
+
244
+ while (attempt < maxRetries && !success) {
245
+ try {
246
+ const result = await generateFromGithub(repo);
247
+ await result.save(`./mcp-servers/${repo.split('/').pop()}`);
248
+ results.success.push(repo);
249
+ success = true;
250
+ } catch (error) {
251
+ attempt++;
252
+ console.log(`Retry ${attempt}/${maxRetries} for ${repo}`);
253
+
254
+ if (attempt === maxRetries) {
255
+ results.failed.push({ repo, error: error.message });
256
+ } else {
257
+ await new Promise(r => setTimeout(r, 1000 * attempt)); // Backoff
258
+ }
259
+ }
260
+ }
261
+ }
262
+
263
+ return results;
264
+ }
265
+ ```
266
+
267
+ ### Generate Report
268
+
269
+ ```typescript
270
+ async function batchWithReport(repos: string[]) {
271
+ const report = {
272
+ timestamp: new Date().toISOString(),
273
+ total: repos.length,
274
+ results: []
275
+ };
276
+
277
+ for (const repo of repos) {
278
+ const start = Date.now();
279
+ try {
280
+ const result = await generateFromGithub(repo);
281
+ await result.save(`./mcp-servers/${repo.split('/').pop()}`);
282
+
283
+ report.results.push({
284
+ repo,
285
+ status: 'success',
286
+ tools: result.tools.length,
287
+ duration: Date.now() - start
288
+ });
289
+ } catch (error) {
290
+ report.results.push({
291
+ repo,
292
+ status: 'failed',
293
+ error: error.message,
294
+ duration: Date.now() - start
295
+ });
296
+ }
297
+ }
298
+
299
+ // Save report
300
+ await writeFile(
301
+ './batch-report.json',
302
+ JSON.stringify(report, null, 2)
303
+ );
304
+
305
+ return report;
306
+ }
307
+ ```
308
+
309
+ ## Automation
310
+
311
+ ### GitHub Action
312
+
313
+ ```yaml title=".github/workflows/generate-mcp.yml"
314
+ name: Generate MCP Servers
315
+
316
+ on:
317
+ schedule:
318
+ - cron: '0 0 * * 0' # Weekly on Sunday
319
+ workflow_dispatch:
320
+
321
+ jobs:
322
+ generate:
323
+ runs-on: ubuntu-latest
324
+ steps:
325
+ - uses: actions/checkout@v4
326
+
327
+ - uses: actions/setup-node@v4
328
+ with:
329
+ node-version: '20'
330
+
331
+ - name: Generate MCP Servers
332
+ env:
333
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
334
+ run: |
335
+ npm install -g @nirholas/github-to-mcp
336
+
337
+ while read url; do
338
+ github-to-mcp "$url" -o "./mcp-servers/$(basename $url)"
339
+ done < repos.txt
340
+
341
+ - name: Upload Artifacts
342
+ uses: actions/upload-artifact@v4
343
+ with:
344
+ name: mcp-servers
345
+ path: mcp-servers/
346
+ ```
347
+
348
+ ### Cron Job
349
+
350
+ ```bash title="update-mcp-servers.sh"
351
+ #!/bin/bash
352
+ set -e
353
+
354
+ cd ~/mcp-servers
355
+
356
+ # Update each server
357
+ for repo in stripe/stripe-node openai/openai-node; do
358
+ name=$(basename $repo)
359
+ npx @nirholas/github-to-mcp "https://github.com/$repo" -o "./$name" --force
360
+ echo "Updated $name"
361
+ done
362
+
363
+ # Restart Claude Desktop to pick up changes
364
+ osascript -e 'quit app "Claude"'
365
+ sleep 2
366
+ open -a "Claude"
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Next Steps
372
+
373
+ - [Configuration](../getting-started/configuration.md) - All generation options
374
+ - [CLI Reference](../cli/index.md) - Command-line details
375
+ - [API Reference](../api/index.md) - Programmatic API
@@ -0,0 +1,227 @@
1
+ # Claude Desktop Integration
2
+
3
+ Connect your generated MCP server to Claude Desktop for powerful AI conversations about any codebase.
4
+
5
+ ## Prerequisites
6
+
7
+ - [Claude Desktop](https://claude.ai/download) installed
8
+ - A generated MCP server (see [Quick Start](../getting-started/quickstart.md))
9
+ - Node.js 18+ installed
10
+
11
+ ## Step 1: Generate Your MCP Server
12
+
13
+ First, generate an MCP server for your target repository:
14
+
15
+ ```bash
16
+ npx @nirholas/github-to-mcp https://github.com/owner/repo -o ~/mcp-servers/my-repo
17
+ ```
18
+
19
+ ## Step 2: Find Your Config File
20
+
21
+ Claude Desktop's configuration file location varies by operating system:
22
+
23
+ === "macOS"
24
+
25
+ ```
26
+ ~/Library/Application Support/Claude/claude_desktop_config.json
27
+ ```
28
+
29
+ === "Windows"
30
+
31
+ ```
32
+ %APPDATA%\Claude\claude_desktop_config.json
33
+ ```
34
+
35
+ === "Linux"
36
+
37
+ ```
38
+ ~/.config/Claude/claude_desktop_config.json
39
+ ```
40
+
41
+ !!! tip "Create if Missing"
42
+ If the file doesn't exist, create it with an empty JSON object: `{}`
43
+
44
+ ## Step 3: Add Your MCP Server
45
+
46
+ Edit the config file to add your MCP server:
47
+
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "my-repo": {
52
+ "command": "node",
53
+ "args": ["/Users/yourname/mcp-servers/my-repo/server.mjs"]
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ ### Multiple Servers
60
+
61
+ You can add multiple MCP servers:
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "stripe-sdk": {
67
+ "command": "node",
68
+ "args": ["/Users/yourname/mcp-servers/stripe/server.mjs"]
69
+ },
70
+ "my-project": {
71
+ "command": "node",
72
+ "args": ["/Users/yourname/mcp-servers/my-project/server.mjs"]
73
+ },
74
+ "openai-docs": {
75
+ "command": "node",
76
+ "args": ["/Users/yourname/mcp-servers/openai/server.mjs"]
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ## Step 4: Restart Claude Desktop
83
+
84
+ After editing the config:
85
+
86
+ 1. Quit Claude Desktop completely
87
+ 2. Relaunch Claude Desktop
88
+ 3. Look for the tools icon in the chat input
89
+
90
+ ## Step 5: Verify Connection
91
+
92
+ You should see your MCP tools available in Claude. Click the tools icon (🔧) to see:
93
+
94
+ - `get_readme` - Get the repository README
95
+ - `list_files` - Browse files and directories
96
+ - `read_file` - Read file contents
97
+ - `search_code` - Search for code patterns
98
+ - Plus any extracted tools from the repo
99
+
100
+ ## Using MCP Tools in Conversations
101
+
102
+ Once connected, Claude can use your tools automatically:
103
+
104
+ ### Example: Explore a Codebase
105
+
106
+ > **You:** What does this repository do?
107
+ >
108
+ > **Claude:** *Uses `get_readme` tool* Based on the README, this is a...
109
+
110
+ ### Example: Find Code
111
+
112
+ > **You:** Show me how authentication is implemented
113
+ >
114
+ > **Claude:** *Uses `search_code` tool* I found authentication in these files...
115
+ > *Uses `read_file` tool* Here's the implementation...
116
+
117
+ ### Example: Navigate Structure
118
+
119
+ > **You:** What's in the src directory?
120
+ >
121
+ > **Claude:** *Uses `list_files` tool* The src directory contains...
122
+
123
+ ## Troubleshooting
124
+
125
+ ### Tools Not Appearing
126
+
127
+ 1. **Check the config path** - Make sure you edited the correct file
128
+ 2. **Validate JSON** - Use a JSON validator to check syntax
129
+ 3. **Check absolute paths** - Paths must be absolute, not relative
130
+ 4. **Restart Claude** - Fully quit and relaunch
131
+
132
+ ### Server Errors
133
+
134
+ Check the server works standalone:
135
+
136
+ ```bash
137
+ cd ~/mcp-servers/my-repo
138
+ npm install
139
+ node server.mjs
140
+ ```
141
+
142
+ ### Permission Issues
143
+
144
+ Ensure the server file is executable:
145
+
146
+ ```bash
147
+ chmod +x ~/mcp-servers/my-repo/server.mjs
148
+ ```
149
+
150
+ ### View Logs
151
+
152
+ Enable MCP logging in Claude Desktop:
153
+
154
+ 1. Open Claude Desktop
155
+ 2. Go to Settings → Developer
156
+ 3. Enable "Show MCP Logs"
157
+
158
+ ---
159
+
160
+ ## Advanced Configuration
161
+
162
+ ### Environment Variables
163
+
164
+ Pass environment variables to your server:
165
+
166
+ ```json
167
+ {
168
+ "mcpServers": {
169
+ "my-repo": {
170
+ "command": "node",
171
+ "args": ["/path/to/server.mjs"],
172
+ "env": {
173
+ "GITHUB_TOKEN": "ghp_xxxxx",
174
+ "DEBUG": "true"
175
+ }
176
+ }
177
+ }
178
+ }
179
+ ```
180
+
181
+ ### Working Directory
182
+
183
+ Set the working directory:
184
+
185
+ ```json
186
+ {
187
+ "mcpServers": {
188
+ "my-repo": {
189
+ "command": "node",
190
+ "args": ["server.mjs"],
191
+ "cwd": "/path/to/my-repo"
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ ### Using Python Servers
198
+
199
+ For Python-generated servers:
200
+
201
+ ```json
202
+ {
203
+ "mcpServers": {
204
+ "my-repo": {
205
+ "command": "python",
206
+ "args": ["/path/to/server.py"]
207
+ }
208
+ }
209
+ }
210
+ ```
211
+
212
+ ---
213
+
214
+ ## Best Practices
215
+
216
+ 1. **Use descriptive names** - Name servers after their repositories
217
+ 2. **Keep servers updated** - Regenerate when the source repo updates
218
+ 3. **Organize servers** - Keep all servers in a dedicated directory
219
+ 4. **Document your setup** - Note which servers you've added
220
+
221
+ ---
222
+
223
+ ## Next Steps
224
+
225
+ - [Cursor Integration](cursor.md) - Use MCP with Cursor IDE
226
+ - [Custom Tools](custom-tools.md) - Extend your generated tools
227
+ - [API Reference](../api/index.md) - Programmatic server generation