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,398 @@
1
+ /**
2
+ * @fileoverview Streaming conversion tool for MCP server
3
+ * Provides streaming progress updates via SSE
4
+ * @copyright Copyright (c) 2024-2026 nirholas
5
+ * @license MIT
6
+ */
7
+
8
+ import { TextContent, Tool } from '@modelcontextprotocol/sdk/types.js';
9
+ import { GithubToMcpGenerator, GenerationResult } from '@nirholas/github-to-mcp';
10
+
11
+ /**
12
+ * Progress event types
13
+ */
14
+ export type ProgressEventType =
15
+ | 'start'
16
+ | 'analyzing'
17
+ | 'extracting'
18
+ | 'generating'
19
+ | 'validating'
20
+ | 'complete'
21
+ | 'error';
22
+
23
+ /**
24
+ * Progress event structure
25
+ */
26
+ export interface ProgressEvent {
27
+ type: ProgressEventType;
28
+ message: string;
29
+ progress: number; // 0-100
30
+ details?: {
31
+ step?: string;
32
+ filesProcessed?: number;
33
+ totalFiles?: number;
34
+ toolsFound?: number;
35
+ currentSource?: string;
36
+ };
37
+ timestamp: number;
38
+ }
39
+
40
+ /**
41
+ * Progress callback type
42
+ */
43
+ export type ProgressCallback = (event: ProgressEvent) => void;
44
+
45
+ /**
46
+ * Tool definition for streaming conversion
47
+ */
48
+ export const streamConvertTool: Tool = {
49
+ name: 'stream_convert',
50
+ description: `Convert a GitHub repository with streaming progress updates.
51
+
52
+ Similar to convert_repo but provides real-time progress events during the conversion process.
53
+
54
+ Progress events include:
55
+ - start: Conversion initiated
56
+ - analyzing: Analyzing repository structure
57
+ - extracting: Extracting tools from sources
58
+ - generating: Generating MCP server code
59
+ - validating: Validating generated code
60
+ - complete: Conversion finished
61
+ - error: An error occurred
62
+
63
+ Each event includes a progress percentage and detailed status information.
64
+
65
+ Note: In MCP context, progress is reported via tool output. For SSE streaming, use the HTTP API endpoint.`,
66
+ inputSchema: {
67
+ type: 'object',
68
+ properties: {
69
+ github_url: {
70
+ type: 'string',
71
+ description: 'The GitHub repository URL to convert',
72
+ },
73
+ output_language: {
74
+ type: 'string',
75
+ enum: ['typescript', 'python'],
76
+ default: 'typescript',
77
+ description: 'Target language for generated code',
78
+ },
79
+ sources: {
80
+ type: 'array',
81
+ items: {
82
+ type: 'string',
83
+ enum: ['readme', 'openapi', 'code', 'graphql'],
84
+ },
85
+ description: 'Which extraction sources to use',
86
+ },
87
+ github_token: {
88
+ type: 'string',
89
+ description: 'GitHub token for private repos',
90
+ },
91
+ include_progress: {
92
+ type: 'boolean',
93
+ default: true,
94
+ description: 'Include detailed progress in output',
95
+ },
96
+ },
97
+ required: ['github_url'],
98
+ },
99
+ };
100
+
101
+ /**
102
+ * Convert repository with progress tracking
103
+ */
104
+ export async function convertWithProgress(
105
+ args: {
106
+ github_url: string;
107
+ output_language?: 'typescript' | 'python';
108
+ sources?: string[];
109
+ github_token?: string;
110
+ },
111
+ onProgress?: ProgressCallback
112
+ ): Promise<GenerationResult> {
113
+ const emitProgress = (
114
+ type: ProgressEventType,
115
+ message: string,
116
+ progress: number,
117
+ details?: ProgressEvent['details']
118
+ ) => {
119
+ if (onProgress) {
120
+ onProgress({
121
+ type,
122
+ message,
123
+ progress,
124
+ details,
125
+ timestamp: Date.now(),
126
+ });
127
+ }
128
+ };
129
+
130
+ emitProgress('start', 'Starting conversion...', 0, {
131
+ step: 'initialization',
132
+ });
133
+
134
+ const generator = new GithubToMcpGenerator({
135
+ githubToken: args.github_token,
136
+ sources: args.sources as any,
137
+ outputLanguage: args.output_language || 'typescript',
138
+ });
139
+
140
+ emitProgress('analyzing', 'Analyzing repository structure...', 10, {
141
+ step: 'analysis',
142
+ });
143
+
144
+ // The actual generation
145
+ const result = await generator.generate(args.github_url);
146
+
147
+ emitProgress('extracting', `Extracting tools from ${result.sources.length} sources...`, 40, {
148
+ step: 'extraction',
149
+ toolsFound: result.tools.length,
150
+ });
151
+
152
+ emitProgress('generating', 'Generating MCP server code...', 70, {
153
+ step: 'generation',
154
+ toolsFound: result.tools.length,
155
+ });
156
+
157
+ emitProgress('validating', 'Validating generated code...', 90, {
158
+ step: 'validation',
159
+ });
160
+
161
+ emitProgress('complete', 'Conversion complete!', 100, {
162
+ toolsFound: result.tools.length,
163
+ });
164
+
165
+ return result;
166
+ }
167
+
168
+ /**
169
+ * Handler for stream_convert tool
170
+ */
171
+ export async function handleStreamConvert(args: {
172
+ github_url: string;
173
+ output_language?: 'typescript' | 'python';
174
+ sources?: string[];
175
+ github_token?: string;
176
+ include_progress?: boolean;
177
+ }): Promise<TextContent> {
178
+ try {
179
+ const progressEvents: ProgressEvent[] = [];
180
+
181
+ const onProgress = args.include_progress !== false
182
+ ? (event: ProgressEvent) => progressEvents.push(event)
183
+ : undefined;
184
+
185
+ const result = await convertWithProgress(args, onProgress);
186
+
187
+ // Generate code
188
+ const code = args.output_language === 'python'
189
+ ? result.generatePython()
190
+ : result.generate();
191
+
192
+ // Format progress log
193
+ const progressLog = progressEvents.length > 0
194
+ ? `## Progress Log
195
+
196
+ ${progressEvents.map(e =>
197
+ `- [${new Date(e.timestamp).toISOString()}] **${e.type}** (${e.progress}%): ${e.message}`
198
+ ).join('\n')}
199
+
200
+ `
201
+ : '';
202
+
203
+ return {
204
+ type: 'text',
205
+ text: `# MCP Server Generated Successfully
206
+
207
+ ${progressLog}## Summary
208
+
209
+ - **Repository:** ${args.github_url}
210
+ - **Language:** ${args.output_language || 'typescript'}
211
+ - **Tools Extracted:** ${result.tools.length}
212
+ - **Sources Used:** ${result.sources.map(s => s.type).join(', ')}
213
+
214
+ ## Tools
215
+
216
+ ${result.tools.map((t, i) => `${i + 1}. **${t.name}** - ${t.description}`).join('\n')}
217
+
218
+ ## Generated Code
219
+
220
+ \`\`\`${args.output_language || 'typescript'}
221
+ ${code}
222
+ \`\`\`
223
+ `,
224
+ };
225
+ } catch (error) {
226
+ return {
227
+ type: 'text',
228
+ text: `Error during conversion: ${error instanceof Error ? error.message : String(error)}`,
229
+ };
230
+ }
231
+ }
232
+
233
+ /**
234
+ * Create an SSE stream from progress events
235
+ */
236
+ export function createProgressStream(
237
+ onProgress: ProgressCallback
238
+ ): ReadableStream<Uint8Array> {
239
+ const encoder = new TextEncoder();
240
+
241
+ return new ReadableStream({
242
+ start(controller) {
243
+ const wrappedCallback: ProgressCallback = (event) => {
244
+ const data = `data: ${JSON.stringify(event)}\n\n`;
245
+ controller.enqueue(encoder.encode(data));
246
+ onProgress(event);
247
+
248
+ if (event.type === 'complete' || event.type === 'error') {
249
+ controller.close();
250
+ }
251
+ };
252
+
253
+ // Return the callback for the caller to use
254
+ (controller as any).progressCallback = wrappedCallback;
255
+ },
256
+ });
257
+ }
258
+
259
+ /**
260
+ * Supported AI providers for integration
261
+ */
262
+ export const SUPPORTED_PROVIDERS = [
263
+ {
264
+ name: 'Claude Desktop',
265
+ id: 'claude-desktop',
266
+ description: 'Anthropic Claude Desktop application',
267
+ configFormat: 'json',
268
+ configPath: {
269
+ mac: '~/Library/Application Support/Claude/claude_desktop_config.json',
270
+ windows: '%APPDATA%\\Claude\\claude_desktop_config.json',
271
+ linux: '~/.config/Claude/claude_desktop_config.json',
272
+ },
273
+ },
274
+ {
275
+ name: 'Cursor',
276
+ id: 'cursor',
277
+ description: 'Cursor AI-powered IDE',
278
+ configFormat: 'json',
279
+ configPath: {
280
+ all: '.cursor/mcp.json',
281
+ },
282
+ },
283
+ {
284
+ name: 'VS Code Copilot',
285
+ id: 'vscode-copilot',
286
+ description: 'GitHub Copilot in VS Code',
287
+ configFormat: 'json',
288
+ configPath: {
289
+ all: '.vscode/mcp.json',
290
+ },
291
+ },
292
+ {
293
+ name: 'Windsurf',
294
+ id: 'windsurf',
295
+ description: 'Codeium Windsurf IDE',
296
+ configFormat: 'json',
297
+ configPath: {
298
+ all: '.windsurf/mcp.json',
299
+ },
300
+ },
301
+ {
302
+ name: 'Cline',
303
+ id: 'cline',
304
+ description: 'Cline VS Code extension',
305
+ configFormat: 'json',
306
+ configPath: {
307
+ all: '.cline/mcp_settings.json',
308
+ },
309
+ },
310
+ ] as const;
311
+
312
+ /**
313
+ * Tool definition for listing providers
314
+ */
315
+ export const listProvidersTool: Tool = {
316
+ name: 'list_providers',
317
+ description: `List all supported AI providers and their MCP configuration details.
318
+
319
+ Returns information about:
320
+ - Provider name and description
321
+ - Configuration file format
322
+ - Configuration file paths for different operating systems
323
+ - Example configuration snippets`,
324
+ inputSchema: {
325
+ type: 'object',
326
+ properties: {
327
+ include_examples: {
328
+ type: 'boolean',
329
+ default: true,
330
+ description: 'Include example configurations',
331
+ },
332
+ },
333
+ },
334
+ };
335
+
336
+ /**
337
+ * Handler for list_providers tool
338
+ */
339
+ export async function handleListProviders(args: {
340
+ include_examples?: boolean;
341
+ }): Promise<TextContent> {
342
+ const includeExamples = args.include_examples !== false;
343
+
344
+ let output = `# Supported AI Providers
345
+
346
+ The following AI applications support MCP server integration:
347
+
348
+ `;
349
+
350
+ for (const provider of SUPPORTED_PROVIDERS) {
351
+ output += `## ${provider.name}
352
+
353
+ **ID:** \`${provider.id}\`
354
+ **Description:** ${provider.description}
355
+ **Config Format:** ${provider.configFormat}
356
+
357
+ ### Configuration Paths
358
+
359
+ `;
360
+
361
+ if ('all' in provider.configPath) {
362
+ output += `- All platforms: \`${provider.configPath.all}\`\n`;
363
+ } else {
364
+ output += `- macOS: \`${provider.configPath.mac}\`\n`;
365
+ output += `- Windows: \`${provider.configPath.windows}\`\n`;
366
+ output += `- Linux: \`${provider.configPath.linux}\`\n`;
367
+ }
368
+
369
+ if (includeExamples) {
370
+ const exampleConfig = {
371
+ mcpServers: {
372
+ 'my-server': {
373
+ command: provider.id === 'claude-desktop' ? 'npx' : 'node',
374
+ args: provider.id === 'claude-desktop'
375
+ ? ['tsx', 'path/to/server.ts']
376
+ : ['path/to/server.js'],
377
+ },
378
+ },
379
+ };
380
+
381
+ output += `
382
+ ### Example Configuration
383
+
384
+ \`\`\`json
385
+ ${JSON.stringify(exampleConfig, null, 2)}
386
+ \`\`\`
387
+
388
+ `;
389
+ }
390
+
391
+ output += '\n---\n\n';
392
+ }
393
+
394
+ return {
395
+ type: 'text',
396
+ text: output,
397
+ };
398
+ }