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,318 @@
1
+ # Core API
2
+
3
+ The `@nirholas/github-to-mcp` package provides the core conversion functionality.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @nirholas/github-to-mcp
9
+ ```
10
+
11
+ ## Functions
12
+
13
+ ### generateFromGithub
14
+
15
+ Generate an MCP server from a GitHub repository URL.
16
+
17
+ ```typescript
18
+ function generateFromGithub(
19
+ url: string,
20
+ options?: GeneratorOptions
21
+ ): Promise<GeneratorResult>
22
+ ```
23
+
24
+ #### Parameters
25
+
26
+ | Parameter | Type | Description |
27
+ |-----------|------|-------------|
28
+ | `url` | `string` | GitHub repository URL |
29
+ | `options` | `GeneratorOptions` | Optional configuration |
30
+
31
+ #### Returns
32
+
33
+ `Promise<GeneratorResult>` - The generation result with tools and save methods.
34
+
35
+ #### Example
36
+
37
+ ```typescript
38
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
39
+
40
+ const result = await generateFromGithub(
41
+ 'https://github.com/stripe/stripe-node',
42
+ {
43
+ token: process.env.GITHUB_TOKEN,
44
+ language: 'typescript',
45
+ includeUniversalTools: true,
46
+ }
47
+ );
48
+
49
+ console.log(`Generated ${result.tools.length} tools`);
50
+ await result.save('./stripe-mcp');
51
+ ```
52
+
53
+ ---
54
+
55
+ ### parseRepository
56
+
57
+ Parse a repository and extract tool information without generating code.
58
+
59
+ ```typescript
60
+ function parseRepository(
61
+ url: string,
62
+ options?: ParseOptions
63
+ ): Promise<RepositoryInfo>
64
+ ```
65
+
66
+ #### Parameters
67
+
68
+ | Parameter | Type | Description |
69
+ |-----------|------|-------------|
70
+ | `url` | `string` | GitHub repository URL |
71
+ | `options` | `ParseOptions` | Optional configuration |
72
+
73
+ #### Returns
74
+
75
+ `Promise<RepositoryInfo>` - Parsed repository information.
76
+
77
+ #### Example
78
+
79
+ ```typescript
80
+ import { parseRepository } from '@nirholas/github-to-mcp';
81
+
82
+ const info = await parseRepository('https://github.com/openai/openai-node');
83
+
84
+ console.log(`Type: ${info.type}`); // 'api-sdk'
85
+ console.log(`Language: ${info.language}`); // 'TypeScript'
86
+ console.log(`Tools found: ${info.tools.length}`);
87
+ ```
88
+
89
+ ---
90
+
91
+ ### classifyRepository
92
+
93
+ Classify a repository by analyzing its contents.
94
+
95
+ ```typescript
96
+ function classifyRepository(
97
+ repoInfo: RepositoryInfo
98
+ ): RepositoryType
99
+ ```
100
+
101
+ #### Returns
102
+
103
+ One of: `'mcp-server'` | `'api-sdk'` | `'cli-tool'` | `'library'` | `'documentation'` | `'data'` | `'unknown'`
104
+
105
+ ---
106
+
107
+ ### extractTools
108
+
109
+ Extract tools from various sources in a repository.
110
+
111
+ ```typescript
112
+ function extractTools(
113
+ repoInfo: RepositoryInfo,
114
+ options?: ExtractionOptions
115
+ ): Promise<Tool[]>
116
+ ```
117
+
118
+ #### Example
119
+
120
+ ```typescript
121
+ import { parseRepository, extractTools } from '@nirholas/github-to-mcp';
122
+
123
+ const info = await parseRepository('https://github.com/owner/repo');
124
+ const tools = await extractTools(info, {
125
+ fromOpenAPI: true,
126
+ fromGraphQL: true,
127
+ fromCode: true,
128
+ });
129
+
130
+ console.log(`Extracted ${tools.length} tools`);
131
+ ```
132
+
133
+ ---
134
+
135
+ ## Types
136
+
137
+ ### GeneratorOptions
138
+
139
+ ```typescript
140
+ interface GeneratorOptions {
141
+ /** GitHub personal access token */
142
+ token?: string;
143
+
144
+ /** Output language */
145
+ language?: 'typescript' | 'python';
146
+
147
+ /** Only include these tools */
148
+ includeTools?: string[];
149
+
150
+ /** Exclude these tools */
151
+ excludeTools?: string[];
152
+
153
+ /** Include universal tools (read_file, etc.) */
154
+ includeUniversalTools?: boolean;
155
+
156
+ /** Extract tools from OpenAPI specs */
157
+ extractFromOpenAPI?: boolean;
158
+
159
+ /** Extract tools from GraphQL schemas */
160
+ extractFromGraphQL?: boolean;
161
+
162
+ /** Extract tools from source code */
163
+ extractFromCode?: boolean;
164
+
165
+ /** Extract tools from README */
166
+ extractFromReadme?: boolean;
167
+
168
+ /** Maximum directory depth to scan */
169
+ maxDepth?: number;
170
+
171
+ /** Maximum file size to read (bytes) */
172
+ maxFileSize?: number;
173
+
174
+ /** Request timeout (ms) */
175
+ timeout?: number;
176
+ }
177
+ ```
178
+
179
+ ### GeneratorResult
180
+
181
+ ```typescript
182
+ interface GeneratorResult {
183
+ /** List of generated tools */
184
+ tools: Tool[];
185
+
186
+ /** Repository metadata */
187
+ metadata: RepositoryMetadata;
188
+
189
+ /** Repository classification */
190
+ type: RepositoryType;
191
+
192
+ /** Save to a directory */
193
+ save(path: string): Promise<void>;
194
+
195
+ /** Get TypeScript code */
196
+ toTypeScript(): string;
197
+
198
+ /** Get Python code */
199
+ toPython(): string;
200
+
201
+ /** Get as zip buffer */
202
+ toZip(): Promise<Buffer>;
203
+ }
204
+ ```
205
+
206
+ ### Tool
207
+
208
+ ```typescript
209
+ interface Tool {
210
+ /** Tool name (snake_case) */
211
+ name: string;
212
+
213
+ /** Human-readable description */
214
+ description: string;
215
+
216
+ /** JSON Schema for input parameters */
217
+ inputSchema: JSONSchema;
218
+
219
+ /** Where the tool was extracted from */
220
+ source: 'universal' | 'openapi' | 'graphql' | 'code' | 'readme';
221
+
222
+ /** Tool implementation (generated code) */
223
+ implementation?: string;
224
+ }
225
+ ```
226
+
227
+ ### RepositoryInfo
228
+
229
+ ```typescript
230
+ interface RepositoryInfo {
231
+ /** Repository owner */
232
+ owner: string;
233
+
234
+ /** Repository name */
235
+ name: string;
236
+
237
+ /** Full URL */
238
+ url: string;
239
+
240
+ /** Default branch */
241
+ defaultBranch: string;
242
+
243
+ /** Repository description */
244
+ description: string;
245
+
246
+ /** Star count */
247
+ stars: number;
248
+
249
+ /** Primary language */
250
+ language: string;
251
+
252
+ /** Repository classification */
253
+ type: RepositoryType;
254
+
255
+ /** README content */
256
+ readme: string;
257
+
258
+ /** File tree */
259
+ files: FileTree;
260
+ }
261
+ ```
262
+
263
+ ### RepositoryType
264
+
265
+ ```typescript
266
+ type RepositoryType =
267
+ | 'mcp-server' // Existing MCP server
268
+ | 'api-sdk' // API client library
269
+ | 'cli-tool' // Command-line tool
270
+ | 'library' // General library
271
+ | 'documentation' // Documentation only
272
+ | 'data' // Data/config repo
273
+ | 'unknown'; // Unclassified
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Error Handling
279
+
280
+ ### GithubApiError
281
+
282
+ Thrown when GitHub API requests fail.
283
+
284
+ ```typescript
285
+ import { generateFromGithub, GithubApiError } from '@nirholas/github-to-mcp';
286
+
287
+ try {
288
+ await generateFromGithub('https://github.com/owner/private-repo');
289
+ } catch (error) {
290
+ if (error instanceof GithubApiError) {
291
+ console.log(`GitHub API error: ${error.status} - ${error.message}`);
292
+ }
293
+ }
294
+ ```
295
+
296
+ ### ExtractionError
297
+
298
+ Thrown when tool extraction fails.
299
+
300
+ ```typescript
301
+ import { ExtractionError } from '@nirholas/github-to-mcp';
302
+
303
+ try {
304
+ // ...
305
+ } catch (error) {
306
+ if (error instanceof ExtractionError) {
307
+ console.log(`Extraction failed: ${error.source} - ${error.message}`);
308
+ }
309
+ }
310
+ ```
311
+
312
+ ---
313
+
314
+ ## See Also
315
+
316
+ - [OpenAPI Parser](openapi-parser.md) - Parser module
317
+ - [MCP Server](mcp-server.md) - Server implementation
318
+ - [Configuration](../getting-started/configuration.md) - Options guide
@@ -0,0 +1,128 @@
1
+ # API Reference
2
+
3
+ Programmatic API for GitHub to MCP.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @nirholas/github-to-mcp
9
+ ```
10
+
11
+ ## Packages
12
+
13
+ | Package | Description |
14
+ |---------|-------------|
15
+ | [`@nirholas/github-to-mcp`](core.md) | Core conversion library |
16
+ | [`@github-to-mcp/openapi-parser`](openapi-parser.md) | OpenAPI/GraphQL parser |
17
+ | [`@github-to-mcp/mcp-server`](mcp-server.md) | MCP server implementation |
18
+
19
+ ## Quick Start
20
+
21
+ ```typescript
22
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
23
+
24
+ // Generate from a GitHub URL
25
+ const result = await generateFromGithub('https://github.com/stripe/stripe-node');
26
+
27
+ // Access generated tools
28
+ console.log(`Generated ${result.tools.length} tools`);
29
+ result.tools.forEach(tool => {
30
+ console.log(`- ${tool.name}: ${tool.description}`);
31
+ });
32
+
33
+ // Save to disk
34
+ await result.save('./my-mcp-server');
35
+
36
+ // Or get the code directly
37
+ const code = result.toTypeScript();
38
+ ```
39
+
40
+ ## Core Functions
41
+
42
+ ### generateFromGithub
43
+
44
+ Main function to generate MCP server from a repository.
45
+
46
+ ```typescript
47
+ import { generateFromGithub, type GeneratorOptions } from '@nirholas/github-to-mcp';
48
+
49
+ const options: GeneratorOptions = {
50
+ token: process.env.GITHUB_TOKEN,
51
+ language: 'typescript',
52
+ includeUniversalTools: true,
53
+ };
54
+
55
+ const result = await generateFromGithub(
56
+ 'https://github.com/owner/repo',
57
+ options
58
+ );
59
+ ```
60
+
61
+ ### parseRepository
62
+
63
+ Parse a repository without generating code.
64
+
65
+ ```typescript
66
+ import { parseRepository } from '@nirholas/github-to-mcp';
67
+
68
+ const info = await parseRepository('https://github.com/owner/repo');
69
+ console.log(info.type); // 'api-sdk' | 'mcp-server' | etc.
70
+ console.log(info.tools); // Extracted tool definitions
71
+ console.log(info.metadata); // Repo metadata
72
+ ```
73
+
74
+ ### createMcpServer
75
+
76
+ Create an MCP server instance from tools.
77
+
78
+ ```typescript
79
+ import { createMcpServer } from '@nirholas/github-to-mcp';
80
+
81
+ const server = createMcpServer({
82
+ name: 'my-server',
83
+ tools: [...],
84
+ transport: 'stdio', // or 'http'
85
+ });
86
+
87
+ await server.start();
88
+ ```
89
+
90
+ ## Type Definitions
91
+
92
+ ```typescript
93
+ interface GeneratorOptions {
94
+ token?: string;
95
+ language?: 'typescript' | 'python';
96
+ includeTools?: string[];
97
+ excludeTools?: string[];
98
+ includeUniversalTools?: boolean;
99
+ extractFromOpenAPI?: boolean;
100
+ extractFromGraphQL?: boolean;
101
+ extractFromCode?: boolean;
102
+ extractFromReadme?: boolean;
103
+ maxDepth?: number;
104
+ maxFileSize?: number;
105
+ timeout?: number;
106
+ }
107
+
108
+ interface GeneratorResult {
109
+ tools: Tool[];
110
+ metadata: RepositoryMetadata;
111
+ save(path: string): Promise<void>;
112
+ toTypeScript(): string;
113
+ toPython(): string;
114
+ }
115
+
116
+ interface Tool {
117
+ name: string;
118
+ description: string;
119
+ inputSchema: JSONSchema;
120
+ source: 'universal' | 'openapi' | 'graphql' | 'code' | 'readme';
121
+ }
122
+ ```
123
+
124
+ ## See Also
125
+
126
+ - [Core API](core.md) - Full core library reference
127
+ - [OpenAPI Parser](openapi-parser.md) - Parser module
128
+ - [Configuration](../getting-started/configuration.md) - Options reference