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,235 @@
1
+ # Configuration
2
+
3
+ Customize how GitHub to MCP generates your MCP servers.
4
+
5
+ ## CLI Options
6
+
7
+ ```bash
8
+ github-to-mcp <url> [options]
9
+ ```
10
+
11
+ | Option | Description | Default |
12
+ |--------|-------------|---------|
13
+ | `-o, --output <dir>` | Output directory | `./output` |
14
+ | `-l, --language <lang>` | Output language (`typescript` or `python`) | `typescript` |
15
+ | `-t, --token <token>` | GitHub personal access token | `$GITHUB_TOKEN` |
16
+ | `--include-tools <tools>` | Comma-separated list of tools to include | All |
17
+ | `--exclude-tools <tools>` | Comma-separated list of tools to exclude | None |
18
+ | `--no-universal` | Skip universal tools (read_file, etc.) | `false` |
19
+ | `-v, --verbose` | Enable verbose output | `false` |
20
+ | `-h, --help` | Show help | |
21
+
22
+ ### Examples
23
+
24
+ Generate with specific output directory:
25
+
26
+ ```bash
27
+ github-to-mcp https://github.com/owner/repo -o ./my-mcp-server
28
+ ```
29
+
30
+ Generate Python server instead of TypeScript:
31
+
32
+ ```bash
33
+ github-to-mcp https://github.com/owner/repo -l python
34
+ ```
35
+
36
+ Only include specific tools:
37
+
38
+ ```bash
39
+ github-to-mcp https://github.com/owner/repo --include-tools read_file,search_code
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Programmatic Options
45
+
46
+ When using the JavaScript API:
47
+
48
+ ```typescript
49
+ import { generateFromGithub, type GeneratorOptions } from '@nirholas/github-to-mcp';
50
+
51
+ const options: GeneratorOptions = {
52
+ // GitHub authentication
53
+ token: process.env.GITHUB_TOKEN,
54
+
55
+ // Output configuration
56
+ language: 'typescript', // or 'python'
57
+
58
+ // Tool filtering
59
+ includeTools: ['read_file', 'search_code'],
60
+ excludeTools: [],
61
+ includeUniversalTools: true,
62
+
63
+ // Extraction options
64
+ extractFromOpenAPI: true,
65
+ extractFromGraphQL: true,
66
+ extractFromCode: true,
67
+ extractFromReadme: true,
68
+
69
+ // Advanced
70
+ maxDepth: 3, // Max directory depth to scan
71
+ maxFileSize: 100000, // Max file size in bytes
72
+ timeout: 30000, // Request timeout in ms
73
+ };
74
+
75
+ const result = await generateFromGithub(
76
+ 'https://github.com/owner/repo',
77
+ options
78
+ );
79
+ ```
80
+
81
+ ### GeneratorOptions Reference
82
+
83
+ | Property | Type | Default | Description |
84
+ |----------|------|---------|-------------|
85
+ | `token` | `string` | `undefined` | GitHub personal access token |
86
+ | `language` | `'typescript' \| 'python'` | `'typescript'` | Output language |
87
+ | `includeTools` | `string[]` | `[]` | Only include these tools |
88
+ | `excludeTools` | `string[]` | `[]` | Exclude these tools |
89
+ | `includeUniversalTools` | `boolean` | `true` | Include base tools |
90
+ | `extractFromOpenAPI` | `boolean` | `true` | Extract from OpenAPI specs |
91
+ | `extractFromGraphQL` | `boolean` | `true` | Extract from GraphQL schemas |
92
+ | `extractFromCode` | `boolean` | `true` | Extract from code analysis |
93
+ | `extractFromReadme` | `boolean` | `true` | Extract from README |
94
+ | `maxDepth` | `number` | `3` | Max directory depth |
95
+ | `maxFileSize` | `number` | `100000` | Max file size (bytes) |
96
+ | `timeout` | `number` | `30000` | Request timeout (ms) |
97
+
98
+ ---
99
+
100
+ ## Environment Variables
101
+
102
+ | Variable | Description | Required |
103
+ |----------|-------------|----------|
104
+ | `GITHUB_TOKEN` | GitHub personal access token | No (but recommended) |
105
+ | `OPENAI_API_KEY` | OpenAI API key for enhanced extraction | No |
106
+ | `LOG_LEVEL` | Logging verbosity (`debug`, `info`, `warn`, `error`) | No |
107
+
108
+ ### Setting Environment Variables
109
+
110
+ === "macOS/Linux"
111
+
112
+ ```bash
113
+ # Add to ~/.bashrc or ~/.zshrc
114
+ export GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
115
+ export LOG_LEVEL=debug
116
+ ```
117
+
118
+ === "Windows"
119
+
120
+ ```powershell
121
+ # PowerShell
122
+ $env:GITHUB_TOKEN="ghp_xxxxxxxxxxxxx"
123
+ $env:LOG_LEVEL="debug"
124
+ ```
125
+
126
+ === ".env file"
127
+
128
+ ```bash
129
+ # Create .env file in your project
130
+ GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
131
+ LOG_LEVEL=debug
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Output Configuration
137
+
138
+ ### TypeScript Output
139
+
140
+ When `language: 'typescript'`:
141
+
142
+ ```
143
+ output/
144
+ ├── package.json
145
+ ├── tsconfig.json
146
+ ├── server.ts
147
+ ├── server.mjs # Compiled output
148
+ └── tools/
149
+ ├── index.ts
150
+ └── *.ts
151
+ ```
152
+
153
+ ### Python Output
154
+
155
+ When `language: 'python'`:
156
+
157
+ ```
158
+ output/
159
+ ├── pyproject.toml
160
+ ├── requirements.txt
161
+ ├── server.py
162
+ └── tools/
163
+ ├── __init__.py
164
+ └── *.py
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Tool Filtering
170
+
171
+ ### Include Specific Tools
172
+
173
+ Only generate certain tools:
174
+
175
+ ```typescript
176
+ const result = await generateFromGithub(url, {
177
+ includeTools: ['read_file', 'search_code', 'create_customer']
178
+ });
179
+ ```
180
+
181
+ ### Exclude Tools
182
+
183
+ Generate all tools except specific ones:
184
+
185
+ ```typescript
186
+ const result = await generateFromGithub(url, {
187
+ excludeTools: ['get_readme'] // Skip README tool
188
+ });
189
+ ```
190
+
191
+ ### Skip Universal Tools
192
+
193
+ Only generate extracted tools:
194
+
195
+ ```typescript
196
+ const result = await generateFromGithub(url, {
197
+ includeUniversalTools: false
198
+ });
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Advanced Configuration
204
+
205
+ ### Custom Extraction
206
+
207
+ Control what sources are scanned:
208
+
209
+ ```typescript
210
+ const result = await generateFromGithub(url, {
211
+ extractFromOpenAPI: true, // Check for openapi.json, swagger.yaml
212
+ extractFromGraphQL: true, // Check for schema.graphql
213
+ extractFromCode: true, // Analyze source code
214
+ extractFromReadme: false, // Skip README parsing
215
+ });
216
+ ```
217
+
218
+ ### Performance Tuning
219
+
220
+ For large repositories:
221
+
222
+ ```typescript
223
+ const result = await generateFromGithub(url, {
224
+ maxDepth: 2, // Limit directory depth
225
+ maxFileSize: 50000, // Skip files > 50KB
226
+ timeout: 60000, // Increase timeout to 60s
227
+ });
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Next Steps
233
+
234
+ - [CLI Reference](../cli/index.md) — Full command-line documentation
235
+ - [API Reference](../api/index.md) — Detailed programmatic API
@@ -0,0 +1,54 @@
1
+ # Getting Started
2
+
3
+ Welcome to GitHub to MCP! This section will help you get up and running in minutes.
4
+
5
+ ## What is GitHub to MCP?
6
+
7
+ GitHub to MCP is a tool that converts any GitHub repository into a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server. This allows AI assistants like Claude, ChatGPT, Cursor, and others to interact with your code.
8
+
9
+ ## Prerequisites
10
+
11
+ Before you begin, make sure you have:
12
+
13
+ - **Node.js 18+** installed
14
+ - **npm** or **pnpm** package manager
15
+ - (Optional) A **GitHub token** for private repos or higher rate limits
16
+
17
+ ## Quick Navigation
18
+
19
+ <div class="feature-grid" markdown>
20
+
21
+ <div class="feature-card" markdown>
22
+
23
+ ### [Installation](installation.md)
24
+
25
+ Install the CLI tool and set up your environment
26
+
27
+ </div>
28
+
29
+ <div class="feature-card" markdown>
30
+
31
+ ### [Quick Start](quickstart.md)
32
+
33
+ Generate your first MCP server in 60 seconds
34
+
35
+ </div>
36
+
37
+ <div class="feature-card" markdown>
38
+
39
+ ### [Configuration](configuration.md)
40
+
41
+ Customize output and behavior
42
+
43
+ </div>
44
+
45
+ </div>
46
+
47
+ ## Next Steps
48
+
49
+ 1. [Install the tool](installation.md)
50
+ 2. [Generate your first server](quickstart.md)
51
+ 3. [Connect to Claude Desktop](../guides/claude-desktop.md)
52
+
53
+ !!! tip "Try the Web UI"
54
+ Don't want to install anything? Use the [web interface](https://github-to-mcp.vercel.app) to convert repos directly in your browser.
@@ -0,0 +1,145 @@
1
+ # Installation
2
+
3
+ There are multiple ways to install and use GitHub to MCP depending on your needs.
4
+
5
+ ## Web UI (No Installation)
6
+
7
+ The easiest way to get started — no installation required:
8
+
9
+ 👉 **[github-to-mcp.vercel.app](https://github-to-mcp.vercel.app)**
10
+
11
+ Simply paste a GitHub URL, configure options, and download your generated MCP server.
12
+
13
+ ---
14
+
15
+ ## CLI Installation
16
+
17
+ ### Using npx (Recommended)
18
+
19
+ Run directly without installing:
20
+
21
+ ```bash
22
+ npx @nirholas/github-to-mcp https://github.com/owner/repo
23
+ ```
24
+
25
+ ### Global Installation
26
+
27
+ Install globally for repeated use:
28
+
29
+ === "npm"
30
+
31
+ ```bash
32
+ npm install -g @nirholas/github-to-mcp
33
+ ```
34
+
35
+ === "pnpm"
36
+
37
+ ```bash
38
+ pnpm add -g @nirholas/github-to-mcp
39
+ ```
40
+
41
+ === "yarn"
42
+
43
+ ```bash
44
+ yarn global add @nirholas/github-to-mcp
45
+ ```
46
+
47
+ Then use the `github-to-mcp` command:
48
+
49
+ ```bash
50
+ github-to-mcp https://github.com/stripe/stripe-node
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Programmatic Installation
56
+
57
+ Add as a dependency to your project:
58
+
59
+ === "npm"
60
+
61
+ ```bash
62
+ npm install @nirholas/github-to-mcp
63
+ ```
64
+
65
+ === "pnpm"
66
+
67
+ ```bash
68
+ pnpm add @nirholas/github-to-mcp
69
+ ```
70
+
71
+ === "yarn"
72
+
73
+ ```bash
74
+ yarn add @nirholas/github-to-mcp
75
+ ```
76
+
77
+ Then import in your code:
78
+
79
+ ```typescript
80
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Verify Installation
86
+
87
+ Check that the CLI is installed correctly:
88
+
89
+ ```bash
90
+ github-to-mcp --version
91
+ ```
92
+
93
+ You should see the version number printed:
94
+
95
+ ```
96
+ @nirholas/github-to-mcp v1.0.0
97
+ ```
98
+
99
+ ---
100
+
101
+ ## System Requirements
102
+
103
+ | Requirement | Version |
104
+ |-------------|---------|
105
+ | Node.js | 18.0.0 or higher |
106
+ | npm | 9.0.0 or higher |
107
+ | Operating System | macOS, Linux, Windows |
108
+
109
+ ---
110
+
111
+ ## Environment Setup
112
+
113
+ ### GitHub Token (Optional)
114
+
115
+ For private repositories or to increase API rate limits (60/hr → 5000/hr), set a GitHub token:
116
+
117
+ === "macOS/Linux"
118
+
119
+ ```bash
120
+ export GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
121
+ ```
122
+
123
+ === "Windows (PowerShell)"
124
+
125
+ ```powershell
126
+ $env:GITHUB_TOKEN="ghp_xxxxxxxxxxxxx"
127
+ ```
128
+
129
+ === "Windows (CMD)"
130
+
131
+ ```cmd
132
+ set GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
133
+ ```
134
+
135
+ !!! tip "Creating a GitHub Token"
136
+ 1. Go to [GitHub Settings → Developer Settings → Personal Access Tokens](https://github.com/settings/tokens)
137
+ 2. Click "Generate new token (classic)"
138
+ 3. Select scopes: `repo` (for private repos) or `public_repo` (for public only)
139
+ 4. Copy and save the token
140
+
141
+ ---
142
+
143
+ ## Next Steps
144
+
145
+ Now that you have GitHub to MCP installed, continue to the [Quick Start](quickstart.md) guide to generate your first MCP server!
@@ -0,0 +1,160 @@
1
+ # Quick Start
2
+
3
+ Generate your first MCP server in under 60 seconds!
4
+
5
+ ## Step 1: Choose a Repository
6
+
7
+ Pick any GitHub repository you want to convert. For this example, we'll use the Stripe Node.js SDK:
8
+
9
+ ```
10
+ https://github.com/stripe/stripe-node
11
+ ```
12
+
13
+ ## Step 2: Generate the MCP Server
14
+
15
+ ### Using the Web UI
16
+
17
+ 1. Go to [github-to-mcp.vercel.app](https://github-to-mcp.vercel.app)
18
+ 2. Paste the repository URL
19
+ 3. Click **Generate**
20
+ 4. Download the generated server
21
+
22
+ ### Using the CLI
23
+
24
+ ```bash
25
+ npx @nirholas/github-to-mcp https://github.com/stripe/stripe-node -o ./stripe-mcp
26
+ ```
27
+
28
+ This will create a complete MCP server in the `./stripe-mcp` directory.
29
+
30
+ ### Using the API
31
+
32
+ ```typescript
33
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
34
+
35
+ const result = await generateFromGithub('https://github.com/stripe/stripe-node');
36
+
37
+ console.log(`Generated ${result.tools.length} tools`);
38
+ console.log('Tools:', result.tools.map(t => t.name));
39
+
40
+ // Save to disk
41
+ await result.save('./stripe-mcp');
42
+ ```
43
+
44
+ ## Step 3: Explore the Output
45
+
46
+ The generated MCP server includes:
47
+
48
+ ```
49
+ stripe-mcp/
50
+ ├── package.json # Dependencies and scripts
51
+ ├── server.mjs # Main MCP server code
52
+ ├── tools/ # Generated tool implementations
53
+ │ ├── read_file.mjs
54
+ │ ├── list_files.mjs
55
+ │ ├── search_code.mjs
56
+ │ └── get_readme.mjs
57
+ └── README.md # Usage instructions
58
+ ```
59
+
60
+ ## Step 4: Test the Server
61
+
62
+ Start the MCP server locally:
63
+
64
+ ```bash
65
+ cd stripe-mcp
66
+ npm install
67
+ npm start
68
+ ```
69
+
70
+ The server is now running and ready to accept MCP connections!
71
+
72
+ ## Step 5: Connect to an AI Assistant
73
+
74
+ ### Claude Desktop
75
+
76
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
77
+
78
+ ```json
79
+ {
80
+ "mcpServers": {
81
+ "stripe": {
82
+ "command": "node",
83
+ "args": ["/path/to/stripe-mcp/server.mjs"]
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ Restart Claude Desktop, and you'll see the tools available:
90
+
91
+ ![Claude with MCP tools](https://github-to-mcp.vercel.app/docs/claude-tools.png)
92
+
93
+ ### Cursor
94
+
95
+ Add to your Cursor MCP configuration:
96
+
97
+ ```json
98
+ {
99
+ "mcp": {
100
+ "servers": {
101
+ "stripe": {
102
+ "command": "node",
103
+ "args": ["/path/to/stripe-mcp/server.mjs"]
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ ---
111
+
112
+ ## What Tools Were Generated?
113
+
114
+ For the Stripe SDK, you'll get these tools:
115
+
116
+ ### Universal Tools (Always Included)
117
+
118
+ | Tool | Description |
119
+ |------|-------------|
120
+ | `get_readme` | Fetch the README content |
121
+ | `list_files` | Browse directory structure |
122
+ | `read_file` | Read any file's contents |
123
+ | `search_code` | Search for code patterns |
124
+
125
+ ### Extracted Tools (From OpenAPI Spec)
126
+
127
+ Since Stripe has an OpenAPI specification, additional tools are extracted:
128
+
129
+ | Tool | Description |
130
+ |------|-------------|
131
+ | `create_customer` | Create a new customer |
132
+ | `list_charges` | List all charges |
133
+ | `create_payment_intent` | Create a payment intent |
134
+ | ... | And many more! |
135
+
136
+ ---
137
+
138
+ ## Example Conversations
139
+
140
+ Once connected, you can have conversations like:
141
+
142
+ > **You:** What's in the Stripe SDK readme?
143
+ >
144
+ > **Claude:** *Uses `get_readme` tool* The Stripe Node.js SDK provides access to the Stripe API...
145
+
146
+ > **You:** Show me how to create a customer
147
+ >
148
+ > **Claude:** *Uses `search_code` and `read_file` tools* Here's the code for creating a customer...
149
+
150
+ > **You:** List all the API files
151
+ >
152
+ > **Claude:** *Uses `list_files` tool* Here are the files in the `lib/resources/` directory...
153
+
154
+ ---
155
+
156
+ ## Next Steps
157
+
158
+ - [Configure your server](configuration.md) — Customize output options
159
+ - [Connect to Claude Desktop](../guides/claude-desktop.md) — Detailed integration guide
160
+ - [Use with private repos](../guides/private-repos.md) — Work with your own code