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,382 @@
1
+ # Tool Types
2
+
3
+ Understanding the different types of tools generated by GitHub to MCP.
4
+
5
+ ## Overview
6
+
7
+ Tools are the core functionality exposed by MCP servers. GitHub to MCP generates two categories:
8
+
9
+ 1. **Universal Tools** - Always included, work with any repository
10
+ 2. **Extracted Tools** - Specific to the repository's API/functionality
11
+
12
+ ## Universal Tools
13
+
14
+ These tools are included by default for every repository.
15
+
16
+ ### get_readme
17
+
18
+ Fetch the repository's README content.
19
+
20
+ ```json
21
+ {
22
+ "name": "get_readme",
23
+ "description": "Get the README content of the repository",
24
+ "inputSchema": {
25
+ "type": "object",
26
+ "properties": {}
27
+ }
28
+ }
29
+ ```
30
+
31
+ **Use case**: Understanding what a project does, finding documentation.
32
+
33
+ ### list_files
34
+
35
+ List files and directories in the repository.
36
+
37
+ ```json
38
+ {
39
+ "name": "list_files",
40
+ "description": "List files in a directory",
41
+ "inputSchema": {
42
+ "type": "object",
43
+ "properties": {
44
+ "path": {
45
+ "type": "string",
46
+ "description": "Directory path (default: root)"
47
+ },
48
+ "recursive": {
49
+ "type": "boolean",
50
+ "description": "Include subdirectories"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ **Use case**: Exploring project structure, finding specific files.
58
+
59
+ ### read_file
60
+
61
+ Read the contents of any file.
62
+
63
+ ```json
64
+ {
65
+ "name": "read_file",
66
+ "description": "Read the contents of a file",
67
+ "inputSchema": {
68
+ "type": "object",
69
+ "properties": {
70
+ "path": {
71
+ "type": "string",
72
+ "description": "Path to the file"
73
+ }
74
+ },
75
+ "required": ["path"]
76
+ }
77
+ }
78
+ ```
79
+
80
+ **Use case**: Reading source code, configuration files, documentation.
81
+
82
+ ### search_code
83
+
84
+ Search for code patterns in the repository.
85
+
86
+ ```json
87
+ {
88
+ "name": "search_code",
89
+ "description": "Search for code patterns",
90
+ "inputSchema": {
91
+ "type": "object",
92
+ "properties": {
93
+ "query": {
94
+ "type": "string",
95
+ "description": "Search query"
96
+ },
97
+ "path": {
98
+ "type": "string",
99
+ "description": "Limit search to path"
100
+ },
101
+ "extension": {
102
+ "type": "string",
103
+ "description": "File extension filter"
104
+ }
105
+ },
106
+ "required": ["query"]
107
+ }
108
+ }
109
+ ```
110
+
111
+ **Use case**: Finding function definitions, usages, patterns.
112
+
113
+ ---
114
+
115
+ ## Extracted Tools
116
+
117
+ These tools are specific to each repository, extracted from various sources.
118
+
119
+ ### From OpenAPI/Swagger
120
+
121
+ API endpoints become callable tools:
122
+
123
+ **Original OpenAPI:**
124
+ ```yaml
125
+ paths:
126
+ /customers:
127
+ post:
128
+ operationId: createCustomer
129
+ summary: Create a new customer
130
+ requestBody:
131
+ content:
132
+ application/json:
133
+ schema:
134
+ type: object
135
+ properties:
136
+ email:
137
+ type: string
138
+ name:
139
+ type: string
140
+ ```
141
+
142
+ **Generated Tool:**
143
+ ```json
144
+ {
145
+ "name": "create_customer",
146
+ "description": "Create a new customer",
147
+ "inputSchema": {
148
+ "type": "object",
149
+ "properties": {
150
+ "email": { "type": "string" },
151
+ "name": { "type": "string" }
152
+ }
153
+ },
154
+ "source": "openapi"
155
+ }
156
+ ```
157
+
158
+ ### From GraphQL
159
+
160
+ Queries and mutations become tools:
161
+
162
+ **Original GraphQL:**
163
+ ```graphql
164
+ type Query {
165
+ user(id: ID!): User
166
+ users(limit: Int): [User!]!
167
+ }
168
+
169
+ type Mutation {
170
+ createUser(input: CreateUserInput!): User!
171
+ }
172
+ ```
173
+
174
+ **Generated Tools:**
175
+ ```json
176
+ [
177
+ {
178
+ "name": "query_user",
179
+ "description": "Get a user by ID",
180
+ "inputSchema": {
181
+ "type": "object",
182
+ "properties": {
183
+ "id": { "type": "string" }
184
+ },
185
+ "required": ["id"]
186
+ },
187
+ "source": "graphql"
188
+ },
189
+ {
190
+ "name": "create_user",
191
+ "description": "Create a new user",
192
+ "inputSchema": {
193
+ "type": "object",
194
+ "properties": {
195
+ "input": {
196
+ "type": "object",
197
+ "properties": {
198
+ "name": { "type": "string" },
199
+ "email": { "type": "string" }
200
+ }
201
+ }
202
+ }
203
+ },
204
+ "source": "graphql"
205
+ }
206
+ ]
207
+ ```
208
+
209
+ ### From Python Code
210
+
211
+ Functions with `@mcp.tool` decorators:
212
+
213
+ **Original Python:**
214
+ ```python
215
+ from mcp import tool
216
+
217
+ @tool
218
+ def analyze_text(text: str, language: str = "en") -> dict:
219
+ """Analyze the given text for sentiment and entities."""
220
+ # ...
221
+ ```
222
+
223
+ **Generated Tool:**
224
+ ```json
225
+ {
226
+ "name": "analyze_text",
227
+ "description": "Analyze the given text for sentiment and entities.",
228
+ "inputSchema": {
229
+ "type": "object",
230
+ "properties": {
231
+ "text": { "type": "string" },
232
+ "language": { "type": "string", "default": "en" }
233
+ },
234
+ "required": ["text"]
235
+ },
236
+ "source": "code"
237
+ }
238
+ ```
239
+
240
+ ### From Existing MCP Servers
241
+
242
+ For repos that are already MCP servers:
243
+
244
+ ```typescript
245
+ // Original
246
+ server.tool("calculate", "Perform calculations", {
247
+ expression: { type: "string" }
248
+ }, async ({ expression }) => {
249
+ return eval(expression);
250
+ });
251
+ ```
252
+
253
+ **Extracted Tool:**
254
+ ```json
255
+ {
256
+ "name": "calculate",
257
+ "description": "Perform calculations",
258
+ "inputSchema": {
259
+ "type": "object",
260
+ "properties": {
261
+ "expression": { "type": "string" }
262
+ }
263
+ },
264
+ "source": "mcp"
265
+ }
266
+ ```
267
+
268
+ ---
269
+
270
+ ## Tool Naming
271
+
272
+ Tools follow consistent naming conventions:
273
+
274
+ | Source | Convention | Example |
275
+ |--------|------------|---------|
276
+ | Universal | `snake_case` | `read_file` |
277
+ | OpenAPI | `operationId` or `method_path` | `create_customer` |
278
+ | GraphQL | `type_field` | `query_user`, `mutation_create_user` |
279
+ | Code | Original function name | `analyze_text` |
280
+
281
+ ### Conflict Resolution
282
+
283
+ When multiple tools have the same name:
284
+
285
+ 1. Universal tools take precedence
286
+ 2. Later sources add numeric suffix: `read_file_2`
287
+ 3. Or use `--exclude-tools` to remove conflicts
288
+
289
+ ---
290
+
291
+ ## Tool Schemas
292
+
293
+ All tools use JSON Schema for input validation:
294
+
295
+ ### Basic Types
296
+
297
+ ```json
298
+ {
299
+ "type": "object",
300
+ "properties": {
301
+ "name": { "type": "string" },
302
+ "count": { "type": "integer" },
303
+ "enabled": { "type": "boolean" },
304
+ "score": { "type": "number" }
305
+ }
306
+ }
307
+ ```
308
+
309
+ ### Arrays
310
+
311
+ ```json
312
+ {
313
+ "type": "object",
314
+ "properties": {
315
+ "tags": {
316
+ "type": "array",
317
+ "items": { "type": "string" }
318
+ }
319
+ }
320
+ }
321
+ ```
322
+
323
+ ### Nested Objects
324
+
325
+ ```json
326
+ {
327
+ "type": "object",
328
+ "properties": {
329
+ "address": {
330
+ "type": "object",
331
+ "properties": {
332
+ "street": { "type": "string" },
333
+ "city": { "type": "string" }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ ```
339
+
340
+ ### Enums
341
+
342
+ ```json
343
+ {
344
+ "type": "object",
345
+ "properties": {
346
+ "status": {
347
+ "type": "string",
348
+ "enum": ["pending", "active", "completed"]
349
+ }
350
+ }
351
+ }
352
+ ```
353
+
354
+ ---
355
+
356
+ ## Filtering Tools
357
+
358
+ ### Include Specific Tools
359
+
360
+ ```bash
361
+ github-to-mcp <url> --include-tools read_file,search_code,create_customer
362
+ ```
363
+
364
+ ### Exclude Tools
365
+
366
+ ```bash
367
+ github-to-mcp <url> --exclude-tools get_readme
368
+ ```
369
+
370
+ ### Skip Universal Tools
371
+
372
+ ```bash
373
+ github-to-mcp <url> --no-universal
374
+ ```
375
+
376
+ ---
377
+
378
+ ## See Also
379
+
380
+ - [How It Works](how-it-works.md) - Extraction process
381
+ - [Custom Tools](../guides/custom-tools.md) - Extending tools
382
+ - [API Reference](../api/core.md) - Tool type definitions
@@ -0,0 +1,262 @@
1
+ # Architecture
2
+
3
+ Technical architecture of GitHub to MCP.
4
+
5
+ ## Overview
6
+
7
+ GitHub to MCP follows a monorepo architecture with clear separation of concerns:
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────────┐
11
+ │ Applications │
12
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
13
+ │ │ Web App │ │ Docs │ │ VS Code │ │
14
+ │ │ (Next.js) │ │ (Nextra) │ │ (Extension) │ │
15
+ │ └──────┬──────┘ └─────────────┘ └──────┬──────┘ │
16
+ │ │ │ │
17
+ │ └─────────────────┬────────────────┘ │
18
+ │ ↓ │
19
+ ├─────────────────────────────────────────────────────────────────┤
20
+ │ Packages │
21
+ │ ┌─────────────────────────────────────────────────────────┐ │
22
+ │ │ @nirholas/github-to-mcp │ │
23
+ │ │ ┌───────────────┐ ┌───────────────┐ ┌─────────────┐ │ │
24
+ │ │ │ Generator │ │ Extractors │ │ GitHub │ │ │
25
+ │ │ │ │ │ │ │ Client │ │ │
26
+ │ │ └───────┬───────┘ └───────┬───────┘ └──────┬──────┘ │ │
27
+ │ └──────────┼──────────────────┼─────────────────┼─────────┘ │
28
+ │ │ │ │ │
29
+ │ ┌──────────┴──────────┐ ┌────┴────────────────┴─────────┐ │
30
+ │ │ @github-to-mcp/ │ │ @github-to-mcp/mcp-server │ │
31
+ │ │ openapi-parser │ │ │ │
32
+ │ └─────────────────────┘ └───────────────────────────────┘ │
33
+ └─────────────────────────────────────────────────────────────────┘
34
+ ```
35
+
36
+ ## Package Responsibilities
37
+
38
+ ### @nirholas/github-to-mcp (core)
39
+
40
+ The main library that orchestrates the conversion process.
41
+
42
+ **Responsibilities:**
43
+ - Public API (`generateFromGithub`, `parseRepository`)
44
+ - Repository classification
45
+ - Tool extraction coordination
46
+ - Code generation
47
+ - Output bundling
48
+
49
+ **Key Components:**
50
+
51
+ ```typescript
52
+ // Generator - Main orchestrator
53
+ class GithubToMcpGenerator {
54
+ async generate(url: string, options: Options): Promise<Result>
55
+ }
56
+
57
+ // GitHub Client - API interaction
58
+ class GithubClient {
59
+ async getRepository(url: string): Promise<RepoInfo>
60
+ async getFileTree(url: string): Promise<FileTree>
61
+ async getFile(url: string, path: string): Promise<string>
62
+ }
63
+
64
+ // Classifier - Repository type detection
65
+ function classifyRepository(info: RepoInfo): RepositoryType
66
+
67
+ // Extractors - Tool extraction
68
+ interface Extractor {
69
+ extract(info: RepoInfo): Promise<Tool[]>
70
+ }
71
+ ```
72
+
73
+ ### @github-to-mcp/openapi-parser
74
+
75
+ Parses API specifications into tool definitions.
76
+
77
+ **Responsibilities:**
78
+ - OpenAPI 2.0/3.0/3.1 parsing
79
+ - GraphQL schema parsing
80
+ - JSON Schema generation
81
+ - Spec file detection
82
+
83
+ **Key Components:**
84
+
85
+ ```typescript
86
+ // OpenAPI Parser
87
+ function parseOpenAPI(spec: string | object): Promise<Tool[]>
88
+
89
+ // GraphQL Parser
90
+ function parseGraphQL(schema: string): Promise<Tool[]>
91
+
92
+ // Spec Finder
93
+ function findSpecs(files: FileTree): SpecFiles
94
+ ```
95
+
96
+ ### @github-to-mcp/mcp-server
97
+
98
+ MCP server implementation for generated servers.
99
+
100
+ **Responsibilities:**
101
+ - MCP protocol implementation
102
+ - Tool registration and execution
103
+ - Transport handling (stdio, HTTP)
104
+ - Error handling
105
+
106
+ **Key Components:**
107
+
108
+ ```typescript
109
+ // MCP Server
110
+ class McpServer {
111
+ addTool(tool: ToolDefinition): void
112
+ start(): Promise<void>
113
+ stop(): Promise<void>
114
+ }
115
+
116
+ // Transports
117
+ class StdioTransport implements Transport {}
118
+ class HttpTransport implements Transport {}
119
+ ```
120
+
121
+ ## Data Flow
122
+
123
+ ### Generation Flow
124
+
125
+ ```
126
+ 1. User Input (GitHub URL)
127
+
128
+ 2. GithubClient.getRepository()
129
+ - Fetch metadata
130
+ - Fetch README
131
+ - Fetch file tree
132
+
133
+ 3. classifyRepository()
134
+ - Analyze patterns
135
+ - Determine type
136
+
137
+ 4. Extractors.extract()
138
+ - Universal tools
139
+ - OpenAPI extraction
140
+ - GraphQL extraction
141
+ - Code analysis
142
+
143
+ 5. CodeGenerator.generate()
144
+ - Apply templates
145
+ - Generate implementations
146
+
147
+ 6. Bundler.bundle()
148
+ - Create package.json
149
+ - Organize files
150
+ - Write to disk
151
+ ```
152
+
153
+ ### Tool Execution Flow
154
+
155
+ ```
156
+ 1. AI Client sends tools/call
157
+
158
+ 2. McpServer receives request
159
+ - Parse JSON-RPC
160
+ - Validate parameters
161
+
162
+ 3. Tool.execute()
163
+ - Run implementation
164
+ - Handle errors
165
+
166
+ 4. Format response
167
+ - Create content array
168
+ - Return result
169
+ ```
170
+
171
+ ## File Organization
172
+
173
+ ### Core Package Structure
174
+
175
+ ```
176
+ packages/core/
177
+ ├── src/
178
+ │ ├── index.ts # Public exports
179
+ │ ├── generator.ts # Main generator class
180
+ │ ├── types.ts # TypeScript types
181
+ │ ├── github/
182
+ │ │ ├── client.ts # GitHub API client
183
+ │ │ ├── cache.ts # Request caching
184
+ │ │ └── types.ts # GitHub types
185
+ │ ├── classification/
186
+ │ │ ├── classifier.ts # Repository classifier
187
+ │ │ └── patterns.ts # Detection patterns
188
+ │ ├── extractors/
189
+ │ │ ├── universal.ts # Universal tools
190
+ │ │ ├── openapi.ts # OpenAPI extractor
191
+ │ │ ├── graphql.ts # GraphQL extractor
192
+ │ │ └── code.ts # Code analysis
193
+ │ ├── generators/
194
+ │ │ ├── typescript.ts # TS code generator
195
+ │ │ └── python.ts # Python code generator
196
+ │ └── utils/
197
+ │ ├── schema.ts # JSON Schema helpers
198
+ │ └── naming.ts # Naming conventions
199
+ ├── tests/
200
+ ├── package.json
201
+ └── tsconfig.json
202
+ ```
203
+
204
+ ### Web App Structure
205
+
206
+ ```
207
+ apps/web/
208
+ ├── app/
209
+ │ ├── layout.tsx # Root layout
210
+ │ ├── page.tsx # Home page
211
+ │ ├── api/
212
+ │ │ └── generate/ # API routes
213
+ │ ├── playground/ # Playground page
214
+ │ └── batch/ # Batch conversion
215
+ ├── components/
216
+ │ ├── Header.tsx
217
+ │ ├── Footer.tsx
218
+ │ ├── GeneratorForm.tsx
219
+ │ └── ...
220
+ ├── lib/
221
+ │ ├── generator.ts # Client-side generator
222
+ │ └── utils.ts
223
+ └── public/
224
+ ```
225
+
226
+ ## Design Decisions
227
+
228
+ ### Why Monorepo?
229
+
230
+ - **Shared code**: Common utilities across packages
231
+ - **Atomic changes**: Related changes in one PR
232
+ - **Consistent tooling**: Same lint, test, build config
233
+ - **Easy local development**: Automatic linking
234
+
235
+ ### Why TypeScript?
236
+
237
+ - **Type safety**: Catch errors at compile time
238
+ - **Better DX**: IDE autocomplete and documentation
239
+ - **Self-documenting**: Types serve as documentation
240
+ - **Industry standard**: Common in JS/TS ecosystem
241
+
242
+ ### Why Next.js for Web?
243
+
244
+ - **Server components**: Fast initial load
245
+ - **API routes**: Built-in backend
246
+ - **Vercel deployment**: Zero-config hosting
247
+ - **React ecosystem**: Rich component libraries
248
+
249
+ ### Why Separate Parser Package?
250
+
251
+ - **Reusability**: Can be used independently
252
+ - **Testability**: Easier to test in isolation
253
+ - **Performance**: Tree-shakeable for size
254
+ - **Maintenance**: Clear boundaries
255
+
256
+ ---
257
+
258
+ ## See Also
259
+
260
+ - [Development Setup](development.md) - Get started contributing
261
+ - [Testing](testing.md) - Write and run tests
262
+ - [How It Works](../concepts/how-it-works.md) - User-facing explanation