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,245 @@
1
+ # Development Setup
2
+
3
+ Set up your local development environment for contributing to GitHub to MCP.
4
+
5
+ ## Prerequisites
6
+
7
+ - **Node.js 18+** - [Download](https://nodejs.org)
8
+ - **pnpm** - [Install](https://pnpm.io/installation)
9
+ - **Git** - [Download](https://git-scm.com)
10
+
11
+ ## Clone and Install
12
+
13
+ ```bash
14
+ # Clone the repository
15
+ git clone https://github.com/nirholas/github-to-mcp
16
+ cd github-to-mcp
17
+
18
+ # Install dependencies
19
+ pnpm install
20
+ ```
21
+
22
+ ## Project Structure
23
+
24
+ ```
25
+ github-to-mcp/
26
+ ├── apps/
27
+ │ ├── web/ # Next.js web application
28
+ │ ├── docs/ # Documentation (Nextra)
29
+ │ └── vscode/ # VS Code extension
30
+ ├── packages/
31
+ │ ├── core/ # Core conversion library
32
+ │ ├── openapi-parser/ # OpenAPI/GraphQL parser
33
+ │ └── mcp-server/ # MCP server implementation
34
+ ├── mkdocs/ # MkDocs documentation
35
+ ├── tests/ # Integration tests
36
+ └── templates/ # Code generation templates
37
+ ```
38
+
39
+ ## Development Commands
40
+
41
+ ### Build All Packages
42
+
43
+ ```bash
44
+ pnpm build
45
+ ```
46
+
47
+ ### Build Specific Package
48
+
49
+ ```bash
50
+ pnpm --filter @nirholas/github-to-mcp build
51
+ pnpm --filter @github-to-mcp/openapi-parser build
52
+ ```
53
+
54
+ ### Run Development Server
55
+
56
+ ```bash
57
+ pnpm dev
58
+ # Opens web app at http://localhost:3000
59
+ ```
60
+
61
+ ### Run Tests
62
+
63
+ ```bash
64
+ # All tests
65
+ pnpm test
66
+
67
+ # Watch mode
68
+ pnpm test:watch
69
+
70
+ # Coverage
71
+ pnpm test:coverage
72
+ ```
73
+
74
+ ### Lint and Format
75
+
76
+ ```bash
77
+ # Check
78
+ pnpm lint
79
+
80
+ # Fix
81
+ pnpm lint:fix
82
+
83
+ # Format
84
+ pnpm format
85
+ ```
86
+
87
+ ## Package Development
88
+
89
+ ### Core Package
90
+
91
+ The main conversion library:
92
+
93
+ ```bash
94
+ cd packages/core
95
+ pnpm build
96
+ pnpm test
97
+ ```
98
+
99
+ Key files:
100
+ - `src/index.ts` - Public API
101
+ - `src/generator.ts` - Main generator
102
+ - `src/extractors/` - Tool extraction
103
+ - `src/github/` - GitHub API client
104
+
105
+ ### OpenAPI Parser
106
+
107
+ Parse OpenAPI and GraphQL specs:
108
+
109
+ ```bash
110
+ cd packages/openapi-parser
111
+ pnpm build
112
+ pnpm test
113
+ ```
114
+
115
+ Key files:
116
+ - `src/openapi.ts` - OpenAPI parser
117
+ - `src/graphql.ts` - GraphQL parser
118
+ - `src/utils.ts` - Shared utilities
119
+
120
+ ### MCP Server
121
+
122
+ MCP server implementation:
123
+
124
+ ```bash
125
+ cd packages/mcp-server
126
+ pnpm build
127
+ pnpm test
128
+ ```
129
+
130
+ Key files:
131
+ - `src/server.ts` - Server class
132
+ - `src/transport/` - Transport implementations
133
+ - `src/tools/` - Tool registration
134
+
135
+ ## Web App Development
136
+
137
+ ```bash
138
+ cd apps/web
139
+ pnpm dev
140
+ # http://localhost:3000
141
+ ```
142
+
143
+ Key directories:
144
+ - `app/` - Next.js app router pages
145
+ - `components/` - React components
146
+ - `lib/` - Utilities and helpers
147
+
148
+ ## Environment Setup
149
+
150
+ Create `.env.local` in the root:
151
+
152
+ ```bash
153
+ # Optional: For testing with private repos
154
+ GITHUB_TOKEN=ghp_xxxxx
155
+
156
+ # Optional: For enhanced extraction
157
+ OPENAI_API_KEY=sk-xxxxx
158
+ ```
159
+
160
+ ## IDE Setup
161
+
162
+ ### VS Code
163
+
164
+ Install recommended extensions:
165
+ - ESLint
166
+ - Prettier
167
+ - TypeScript
168
+
169
+ The project includes `.vscode/settings.json` for automatic formatting.
170
+
171
+ ### Debugging
172
+
173
+ Launch configurations are provided in `.vscode/launch.json`:
174
+
175
+ 1. Open VS Code
176
+ 2. Go to Run and Debug (Cmd+Shift+D)
177
+ 3. Select a configuration
178
+ 4. Press F5
179
+
180
+ ## Common Tasks
181
+
182
+ ### Add a New Dependency
183
+
184
+ ```bash
185
+ # Root workspace
186
+ pnpm add -w <package>
187
+
188
+ # Specific package
189
+ pnpm --filter @nirholas/github-to-mcp add <package>
190
+ ```
191
+
192
+ ### Create a Changeset
193
+
194
+ For version management:
195
+
196
+ ```bash
197
+ pnpm changeset
198
+ ```
199
+
200
+ ### Link Local Packages
201
+
202
+ For testing locally:
203
+
204
+ ```bash
205
+ pnpm link --global
206
+ ```
207
+
208
+ ## Troubleshooting
209
+
210
+ ### Build Errors
211
+
212
+ ```bash
213
+ # Clean and rebuild
214
+ pnpm clean
215
+ pnpm install
216
+ pnpm build
217
+ ```
218
+
219
+ ### Test Failures
220
+
221
+ ```bash
222
+ # Run specific test
223
+ pnpm test -- --grep "pattern"
224
+
225
+ # Update snapshots
226
+ pnpm test -- -u
227
+ ```
228
+
229
+ ### Type Errors
230
+
231
+ ```bash
232
+ # Check types
233
+ pnpm typecheck
234
+
235
+ # Generate types
236
+ pnpm build
237
+ ```
238
+
239
+ ---
240
+
241
+ ## Next Steps
242
+
243
+ - [Architecture](architecture.md) - Understand the codebase
244
+ - [Testing](testing.md) - Write tests
245
+ - [Contributing Guide](index.md) - Contribution guidelines
@@ -0,0 +1,73 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in contributing to GitHub to MCP! 🎉
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Clone the repository
9
+ git clone https://github.com/nirholas/github-to-mcp
10
+ cd github-to-mcp
11
+
12
+ # Install dependencies
13
+ pnpm install
14
+
15
+ # Build all packages
16
+ pnpm build
17
+
18
+ # Run tests
19
+ pnpm test
20
+
21
+ # Start development server
22
+ pnpm dev
23
+ ```
24
+
25
+ ## Ways to Contribute
26
+
27
+ <div class="feature-grid" markdown>
28
+
29
+ <div class="feature-card" markdown>
30
+
31
+ ### 🐛 Bug Reports
32
+ Found a bug? [Open an issue](https://github.com/nirholas/github-to-mcp/issues/new?template=bug_report.md) with steps to reproduce.
33
+
34
+ </div>
35
+
36
+ <div class="feature-card" markdown>
37
+
38
+ ### 💡 Feature Requests
39
+ Have an idea? [Start a discussion](https://github.com/nirholas/github-to-mcp/discussions/new?category=ideas).
40
+
41
+ </div>
42
+
43
+ <div class="feature-card" markdown>
44
+
45
+ ### 📖 Documentation
46
+ Improve docs, fix typos, add examples.
47
+
48
+ </div>
49
+
50
+ <div class="feature-card" markdown>
51
+
52
+ ### 🔧 Code
53
+ Fix bugs, add features, improve performance.
54
+
55
+ </div>
56
+
57
+ </div>
58
+
59
+ ## Guides
60
+
61
+ | Guide | Description |
62
+ |-------|-------------|
63
+ | [Development Setup](development.md) | Set up your local environment |
64
+ | [Architecture](architecture.md) | Understand the codebase |
65
+ | [Testing](testing.md) | Write and run tests |
66
+
67
+ ## Code of Conduct
68
+
69
+ Be respectful and inclusive. See our [Code of Conduct](https://github.com/nirholas/github-to-mcp/blob/main/CODE_OF_CONDUCT.md).
70
+
71
+ ## License
72
+
73
+ By contributing, you agree that your contributions will be licensed under the MIT License.
@@ -0,0 +1,320 @@
1
+ # Testing
2
+
3
+ Guide to writing and running tests for GitHub to MCP.
4
+
5
+ ## Running Tests
6
+
7
+ ### All Tests
8
+
9
+ ```bash
10
+ pnpm test
11
+ ```
12
+
13
+ ### Watch Mode
14
+
15
+ ```bash
16
+ pnpm test:watch
17
+ ```
18
+
19
+ ### Coverage Report
20
+
21
+ ```bash
22
+ pnpm test:coverage
23
+ ```
24
+
25
+ ### Specific Package
26
+
27
+ ```bash
28
+ pnpm --filter @nirholas/github-to-mcp test
29
+ pnpm --filter @github-to-mcp/openapi-parser test
30
+ ```
31
+
32
+ ## Test Structure
33
+
34
+ ```
35
+ tests/
36
+ ├── unit/ # Unit tests
37
+ │ ├── core/
38
+ │ │ ├── generator.test.ts
39
+ │ │ ├── classifier.test.ts
40
+ │ │ └── extractors/
41
+ │ ├── openapi-parser/
42
+ │ └── mcp-server/
43
+ ├── integration/ # Integration tests
44
+ │ ├── generation.test.ts
45
+ │ └── end-to-end.test.ts
46
+ └── fixtures/ # Test data
47
+ ├── repos/
48
+ ├── openapi/
49
+ └── graphql/
50
+ ```
51
+
52
+ ## Writing Tests
53
+
54
+ ### Unit Tests
55
+
56
+ Test individual functions in isolation:
57
+
58
+ ```typescript
59
+ import { describe, it, expect, vi } from 'vitest';
60
+ import { classifyRepository } from '@nirholas/github-to-mcp';
61
+
62
+ describe('classifyRepository', () => {
63
+ it('should classify MCP server repos', () => {
64
+ const repo = {
65
+ packageJson: {
66
+ dependencies: {
67
+ '@modelcontextprotocol/sdk': '^1.0.0'
68
+ }
69
+ }
70
+ };
71
+
72
+ expect(classifyRepository(repo)).toBe('mcp-server');
73
+ });
74
+
75
+ it('should classify API SDK repos', () => {
76
+ const repo = {
77
+ files: ['openapi.json'],
78
+ packageJson: {}
79
+ };
80
+
81
+ expect(classifyRepository(repo)).toBe('api-sdk');
82
+ });
83
+ });
84
+ ```
85
+
86
+ ### Mocking
87
+
88
+ Use Vitest's mocking capabilities:
89
+
90
+ ```typescript
91
+ import { vi } from 'vitest';
92
+ import { GithubClient } from '../src/github/client';
93
+
94
+ // Mock entire module
95
+ vi.mock('../src/github/client');
96
+
97
+ // Mock specific function
98
+ const mockFetch = vi.fn();
99
+ vi.spyOn(global, 'fetch').mockImplementation(mockFetch);
100
+
101
+ // Setup mock return value
102
+ mockFetch.mockResolvedValue({
103
+ ok: true,
104
+ json: () => Promise.resolve({ data: 'test' })
105
+ });
106
+ ```
107
+
108
+ ### Integration Tests
109
+
110
+ Test multiple components together:
111
+
112
+ ```typescript
113
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
114
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
115
+
116
+ describe('End-to-end generation', () => {
117
+ it('should generate MCP server from public repo', async () => {
118
+ const result = await generateFromGithub(
119
+ 'https://github.com/octocat/Hello-World',
120
+ { token: process.env.GITHUB_TOKEN }
121
+ );
122
+
123
+ expect(result.tools).toHaveLength(4); // Universal tools
124
+ expect(result.tools.map(t => t.name)).toContain('read_file');
125
+ expect(result.tools.map(t => t.name)).toContain('list_files');
126
+ });
127
+
128
+ it('should extract OpenAPI tools', async () => {
129
+ const result = await generateFromGithub(
130
+ 'https://github.com/stripe/stripe-node'
131
+ );
132
+
133
+ // Should have more than universal tools
134
+ expect(result.tools.length).toBeGreaterThan(4);
135
+ expect(result.tools.some(t => t.source === 'openapi')).toBe(true);
136
+ });
137
+ });
138
+ ```
139
+
140
+ ### Fixture Tests
141
+
142
+ Test with predefined data:
143
+
144
+ ```typescript
145
+ import { readFixture } from '../helpers';
146
+ import { parseOpenAPI } from '@github-to-mcp/openapi-parser';
147
+
148
+ describe('OpenAPI Parser', () => {
149
+ it('should parse petstore spec', async () => {
150
+ const spec = await readFixture('openapi/petstore.json');
151
+ const tools = await parseOpenAPI(spec);
152
+
153
+ expect(tools).toMatchSnapshot();
154
+ });
155
+
156
+ it('should parse GitHub API spec', async () => {
157
+ const spec = await readFixture('openapi/github-api.yaml');
158
+ const tools = await parseOpenAPI(spec);
159
+
160
+ expect(tools.length).toBeGreaterThan(100);
161
+ });
162
+ });
163
+ ```
164
+
165
+ ## Test Helpers
166
+
167
+ ### fixtures/helpers.ts
168
+
169
+ ```typescript
170
+ import fs from 'fs/promises';
171
+ import path from 'path';
172
+
173
+ export async function readFixture(name: string): Promise<string> {
174
+ const fixturePath = path.join(__dirname, 'fixtures', name);
175
+ return fs.readFile(fixturePath, 'utf-8');
176
+ }
177
+
178
+ export function createMockRepo(overrides = {}) {
179
+ return {
180
+ owner: 'test',
181
+ name: 'repo',
182
+ url: 'https://github.com/test/repo',
183
+ readme: '# Test Repo',
184
+ files: [],
185
+ packageJson: {},
186
+ ...overrides
187
+ };
188
+ }
189
+
190
+ export function createMockTool(overrides = {}) {
191
+ return {
192
+ name: 'test_tool',
193
+ description: 'A test tool',
194
+ inputSchema: { type: 'object' },
195
+ source: 'universal',
196
+ ...overrides
197
+ };
198
+ }
199
+ ```
200
+
201
+ ## Testing Patterns
202
+
203
+ ### Testing Extractors
204
+
205
+ ```typescript
206
+ describe('OpenAPI Extractor', () => {
207
+ it('should extract operations with operationId', async () => {
208
+ const repo = createMockRepo({
209
+ files: ['openapi.json'],
210
+ fileContents: {
211
+ 'openapi.json': JSON.stringify({
212
+ openapi: '3.0.0',
213
+ paths: {
214
+ '/users': {
215
+ get: {
216
+ operationId: 'listUsers',
217
+ summary: 'List all users'
218
+ }
219
+ }
220
+ }
221
+ })
222
+ }
223
+ });
224
+
225
+ const extractor = new OpenAPIExtractor();
226
+ const tools = await extractor.extract(repo);
227
+
228
+ expect(tools).toHaveLength(1);
229
+ expect(tools[0].name).toBe('listUsers');
230
+ });
231
+ });
232
+ ```
233
+
234
+ ### Testing Generators
235
+
236
+ ```typescript
237
+ describe('TypeScript Generator', () => {
238
+ it('should generate valid TypeScript', async () => {
239
+ const tools = [createMockTool({ name: 'read_file' })];
240
+ const generator = new TypeScriptGenerator();
241
+
242
+ const code = generator.generate(tools);
243
+
244
+ // Check it's valid TypeScript by parsing
245
+ expect(() => typescript.createSourceFile(
246
+ 'test.ts',
247
+ code,
248
+ typescript.ScriptTarget.Latest
249
+ )).not.toThrow();
250
+ });
251
+ });
252
+ ```
253
+
254
+ ### Testing Error Handling
255
+
256
+ ```typescript
257
+ describe('Error handling', () => {
258
+ it('should throw on invalid URL', async () => {
259
+ await expect(
260
+ generateFromGithub('not-a-url')
261
+ ).rejects.toThrow('Invalid GitHub URL');
262
+ });
263
+
264
+ it('should throw on rate limit', async () => {
265
+ vi.mocked(fetch).mockResolvedValueOnce({
266
+ ok: false,
267
+ status: 403,
268
+ headers: new Headers({
269
+ 'X-RateLimit-Remaining': '0'
270
+ })
271
+ });
272
+
273
+ await expect(
274
+ generateFromGithub('https://github.com/test/repo')
275
+ ).rejects.toThrow('Rate limit exceeded');
276
+ });
277
+ });
278
+ ```
279
+
280
+ ## Snapshot Testing
281
+
282
+ For complex outputs, use snapshots:
283
+
284
+ ```typescript
285
+ it('should generate expected server code', async () => {
286
+ const result = await generateFromGithub(
287
+ 'https://github.com/test/simple-repo'
288
+ );
289
+
290
+ expect(result.toTypeScript()).toMatchSnapshot();
291
+ });
292
+ ```
293
+
294
+ Update snapshots when behavior changes intentionally:
295
+
296
+ ```bash
297
+ pnpm test -- -u
298
+ ```
299
+
300
+ ## Coverage Goals
301
+
302
+ | Package | Target |
303
+ |---------|--------|
304
+ | Core | 80%+ |
305
+ | OpenAPI Parser | 90%+ |
306
+ | MCP Server | 85%+ |
307
+
308
+ Check coverage:
309
+
310
+ ```bash
311
+ pnpm test:coverage
312
+ ```
313
+
314
+ ---
315
+
316
+ ## See Also
317
+
318
+ - [Development Setup](development.md) - Setup environment
319
+ - [Architecture](architecture.md) - Code structure
320
+ - [Contributing](index.md) - Contribution guidelines