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,301 @@
1
+ # MCP Server
2
+
3
+ The `@github-to-mcp/mcp-server` package provides the MCP server implementation.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @github-to-mcp/mcp-server
9
+ ```
10
+
11
+ ## Creating a Server
12
+
13
+ ### Basic Usage
14
+
15
+ ```typescript
16
+ import { createMcpServer } from '@github-to-mcp/mcp-server';
17
+
18
+ const server = createMcpServer({
19
+ name: 'my-mcp-server',
20
+ version: '1.0.0',
21
+ tools: [
22
+ {
23
+ name: 'hello_world',
24
+ description: 'Say hello',
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ name: { type: 'string' }
29
+ }
30
+ },
31
+ execute: async ({ name }) => {
32
+ return { greeting: `Hello, ${name}!` };
33
+ }
34
+ }
35
+ ]
36
+ });
37
+
38
+ await server.start();
39
+ ```
40
+
41
+ ### With Generated Tools
42
+
43
+ ```typescript
44
+ import { createMcpServer } from '@github-to-mcp/mcp-server';
45
+ import { generateFromGithub } from '@nirholas/github-to-mcp';
46
+
47
+ const result = await generateFromGithub('https://github.com/owner/repo');
48
+
49
+ const server = createMcpServer({
50
+ name: 'repo-mcp',
51
+ version: '1.0.0',
52
+ tools: result.tools.map(tool => ({
53
+ ...tool,
54
+ execute: createExecutor(tool),
55
+ })),
56
+ });
57
+
58
+ await server.start();
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Server Options
64
+
65
+ ### McpServerOptions
66
+
67
+ ```typescript
68
+ interface McpServerOptions {
69
+ /** Server name */
70
+ name: string;
71
+
72
+ /** Server version */
73
+ version: string;
74
+
75
+ /** Tool definitions */
76
+ tools: ToolDefinition[];
77
+
78
+ /** Transport type */
79
+ transport?: 'stdio' | 'http';
80
+
81
+ /** HTTP port (if using http transport) */
82
+ port?: number;
83
+
84
+ /** Enable logging */
85
+ logging?: boolean;
86
+
87
+ /** Custom logger */
88
+ logger?: Logger;
89
+ }
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Transport Modes
95
+
96
+ ### Stdio (Default)
97
+
98
+ For process-based communication with AI clients:
99
+
100
+ ```typescript
101
+ const server = createMcpServer({
102
+ name: 'my-server',
103
+ transport: 'stdio',
104
+ tools: [...]
105
+ });
106
+
107
+ await server.start();
108
+ // Communicates via stdin/stdout
109
+ ```
110
+
111
+ ### HTTP
112
+
113
+ For network-based communication:
114
+
115
+ ```typescript
116
+ const server = createMcpServer({
117
+ name: 'my-server',
118
+ transport: 'http',
119
+ port: 3000,
120
+ tools: [...]
121
+ });
122
+
123
+ await server.start();
124
+ // Listening on http://localhost:3000
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Tool Definition
130
+
131
+ ### ToolDefinition
132
+
133
+ ```typescript
134
+ interface ToolDefinition {
135
+ /** Tool name (snake_case recommended) */
136
+ name: string;
137
+
138
+ /** Human-readable description */
139
+ description: string;
140
+
141
+ /** JSON Schema for input parameters */
142
+ inputSchema: JSONSchema;
143
+
144
+ /** Tool execution function */
145
+ execute: (input: unknown, context: ToolContext) => Promise<unknown>;
146
+ }
147
+ ```
148
+
149
+ ### ToolContext
150
+
151
+ ```typescript
152
+ interface ToolContext {
153
+ /** Server configuration */
154
+ config: ServerConfig;
155
+
156
+ /** Logger instance */
157
+ logger: Logger;
158
+
159
+ /** Access to other tools */
160
+ tools: Record<string, ToolDefinition>;
161
+
162
+ /** Request metadata */
163
+ request: RequestMetadata;
164
+ }
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Server Methods
170
+
171
+ ### start()
172
+
173
+ Start the MCP server.
174
+
175
+ ```typescript
176
+ await server.start();
177
+ ```
178
+
179
+ ### stop()
180
+
181
+ Stop the MCP server.
182
+
183
+ ```typescript
184
+ await server.stop();
185
+ ```
186
+
187
+ ### addTool()
188
+
189
+ Add a tool dynamically.
190
+
191
+ ```typescript
192
+ server.addTool({
193
+ name: 'new_tool',
194
+ description: 'A new tool',
195
+ inputSchema: { type: 'object' },
196
+ execute: async () => ({ result: 'ok' }),
197
+ });
198
+ ```
199
+
200
+ ### removeTool()
201
+
202
+ Remove a tool.
203
+
204
+ ```typescript
205
+ server.removeTool('tool_name');
206
+ ```
207
+
208
+ ### listTools()
209
+
210
+ List all registered tools.
211
+
212
+ ```typescript
213
+ const tools = server.listTools();
214
+ console.log(tools.map(t => t.name));
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Error Handling
220
+
221
+ ### ToolError
222
+
223
+ Throw to return an error to the client:
224
+
225
+ ```typescript
226
+ import { ToolError } from '@github-to-mcp/mcp-server';
227
+
228
+ const tool = {
229
+ name: 'risky_operation',
230
+ execute: async ({ path }) => {
231
+ if (path.includes('..')) {
232
+ throw new ToolError('Invalid path: directory traversal not allowed');
233
+ }
234
+ // ...
235
+ }
236
+ };
237
+ ```
238
+
239
+ ### Error Codes
240
+
241
+ ```typescript
242
+ enum ErrorCode {
243
+ InvalidParams = -32602,
244
+ InternalError = -32603,
245
+ ToolNotFound = -32001,
246
+ ExecutionFailed = -32002,
247
+ }
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Middleware
253
+
254
+ Add middleware for cross-cutting concerns:
255
+
256
+ ```typescript
257
+ const server = createMcpServer({
258
+ name: 'my-server',
259
+ tools: [...],
260
+ middleware: [
261
+ // Logging middleware
262
+ async (tool, input, context, next) => {
263
+ console.log(`Calling ${tool.name} with`, input);
264
+ const start = Date.now();
265
+ const result = await next();
266
+ console.log(`${tool.name} completed in ${Date.now() - start}ms`);
267
+ return result;
268
+ },
269
+
270
+ // Caching middleware
271
+ async (tool, input, context, next) => {
272
+ const cacheKey = `${tool.name}:${JSON.stringify(input)}`;
273
+ const cached = cache.get(cacheKey);
274
+ if (cached) return cached;
275
+ const result = await next();
276
+ cache.set(cacheKey, result);
277
+ return result;
278
+ },
279
+ ],
280
+ });
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Protocol Compliance
286
+
287
+ This server implements the [Model Context Protocol](https://modelcontextprotocol.io) specification:
288
+
289
+ - **JSON-RPC 2.0** communication
290
+ - **tools/list** - List available tools
291
+ - **tools/call** - Execute a tool
292
+ - **resources/list** - List resources (optional)
293
+ - **prompts/list** - List prompts (optional)
294
+
295
+ ---
296
+
297
+ ## See Also
298
+
299
+ - [Core API](core.md) - Main library
300
+ - [Claude Desktop](../guides/claude-desktop.md) - Integration guide
301
+ - [MCP Protocol](../concepts/mcp-protocol.md) - Protocol details
@@ -0,0 +1,254 @@
1
+ # OpenAPI Parser
2
+
3
+ The `@github-to-mcp/openapi-parser` package extracts tools from OpenAPI/Swagger and GraphQL schemas.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @github-to-mcp/openapi-parser
9
+ ```
10
+
11
+ ## Functions
12
+
13
+ ### parseOpenAPI
14
+
15
+ Parse an OpenAPI specification and extract tools.
16
+
17
+ ```typescript
18
+ function parseOpenAPI(
19
+ spec: string | object,
20
+ options?: OpenAPIParserOptions
21
+ ): Promise<Tool[]>
22
+ ```
23
+
24
+ #### Example
25
+
26
+ ```typescript
27
+ import { parseOpenAPI } from '@github-to-mcp/openapi-parser';
28
+
29
+ const spec = await fs.readFile('openapi.json', 'utf-8');
30
+ const tools = await parseOpenAPI(spec);
31
+
32
+ console.log(`Extracted ${tools.length} tools from OpenAPI spec`);
33
+ ```
34
+
35
+ ---
36
+
37
+ ### parseGraphQL
38
+
39
+ Parse a GraphQL schema and extract tools.
40
+
41
+ ```typescript
42
+ function parseGraphQL(
43
+ schema: string,
44
+ options?: GraphQLParserOptions
45
+ ): Promise<Tool[]>
46
+ ```
47
+
48
+ #### Example
49
+
50
+ ```typescript
51
+ import { parseGraphQL } from '@github-to-mcp/openapi-parser';
52
+
53
+ const schema = await fs.readFile('schema.graphql', 'utf-8');
54
+ const tools = await parseGraphQL(schema, {
55
+ includeQueries: true,
56
+ includeMutations: true,
57
+ includeSubscriptions: false,
58
+ });
59
+
60
+ console.log(`Extracted ${tools.length} tools from GraphQL schema`);
61
+ ```
62
+
63
+ ---
64
+
65
+ ### findSpecs
66
+
67
+ Find OpenAPI and GraphQL specs in a file tree.
68
+
69
+ ```typescript
70
+ function findSpecs(
71
+ files: FileTree,
72
+ options?: FindSpecsOptions
73
+ ): SpecFiles
74
+ ```
75
+
76
+ #### Example
77
+
78
+ ```typescript
79
+ import { findSpecs } from '@github-to-mcp/openapi-parser';
80
+
81
+ const specs = findSpecs(fileTree, {
82
+ maxDepth: 3,
83
+ patterns: ['**/openapi.{json,yaml}', '**/swagger.{json,yaml}'],
84
+ });
85
+
86
+ console.log(`Found ${specs.openapi.length} OpenAPI specs`);
87
+ console.log(`Found ${specs.graphql.length} GraphQL schemas`);
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Types
93
+
94
+ ### OpenAPIParserOptions
95
+
96
+ ```typescript
97
+ interface OpenAPIParserOptions {
98
+ /** Include all operations or filter */
99
+ includeOperations?: string[];
100
+
101
+ /** Exclude specific operations */
102
+ excludeOperations?: string[];
103
+
104
+ /** Include deprecated operations */
105
+ includeDeprecated?: boolean;
106
+
107
+ /** Custom operation ID generator */
108
+ operationIdGenerator?: (operation: Operation) => string;
109
+
110
+ /** Base URL for API calls */
111
+ baseUrl?: string;
112
+ }
113
+ ```
114
+
115
+ ### GraphQLParserOptions
116
+
117
+ ```typescript
118
+ interface GraphQLParserOptions {
119
+ /** Include query operations */
120
+ includeQueries?: boolean;
121
+
122
+ /** Include mutation operations */
123
+ includeMutations?: boolean;
124
+
125
+ /** Include subscription operations */
126
+ includeSubscriptions?: boolean;
127
+
128
+ /** Include deprecated fields */
129
+ includeDeprecated?: boolean;
130
+ }
131
+ ```
132
+
133
+ ### SpecFiles
134
+
135
+ ```typescript
136
+ interface SpecFiles {
137
+ /** Found OpenAPI specifications */
138
+ openapi: Array<{
139
+ path: string;
140
+ version: '2.0' | '3.0' | '3.1';
141
+ content: string;
142
+ }>;
143
+
144
+ /** Found GraphQL schemas */
145
+ graphql: Array<{
146
+ path: string;
147
+ content: string;
148
+ }>;
149
+ }
150
+ ```
151
+
152
+ ---
153
+
154
+ ## OpenAPI Support
155
+
156
+ ### Supported Versions
157
+
158
+ | Version | Support |
159
+ |---------|---------|
160
+ | OpenAPI 3.1 | ✅ Full |
161
+ | OpenAPI 3.0 | ✅ Full |
162
+ | Swagger 2.0 | ✅ Full |
163
+
164
+ ### Supported Formats
165
+
166
+ | Format | Extensions |
167
+ |--------|------------|
168
+ | JSON | `.json` |
169
+ | YAML | `.yaml`, `.yml` |
170
+
171
+ ### Extracted Information
172
+
173
+ For each operation, the parser extracts:
174
+
175
+ - Operation ID (or generates one)
176
+ - HTTP method and path
177
+ - Description and summary
178
+ - Request parameters (path, query, header)
179
+ - Request body schema
180
+ - Response schemas
181
+ - Security requirements
182
+
183
+ ---
184
+
185
+ ## GraphQL Support
186
+
187
+ ### Supported Features
188
+
189
+ - Queries
190
+ - Mutations
191
+ - Subscriptions (optional)
192
+ - Input types
193
+ - Custom scalars
194
+ - Directives
195
+
196
+ ### Schema Introspection
197
+
198
+ ```typescript
199
+ import { introspectGraphQL } from '@github-to-mcp/openapi-parser';
200
+
201
+ const schema = await introspectGraphQL('https://api.example.com/graphql');
202
+ const tools = await parseGraphQL(schema);
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Advanced Usage
208
+
209
+ ### Custom Tool Naming
210
+
211
+ ```typescript
212
+ const tools = await parseOpenAPI(spec, {
213
+ operationIdGenerator: (op) => {
214
+ // Custom naming: method_path
215
+ return `${op.method}_${op.path.replace(/\//g, '_')}`;
216
+ },
217
+ });
218
+ ```
219
+
220
+ ### Filtering Operations
221
+
222
+ ```typescript
223
+ // Only include specific operations
224
+ const tools = await parseOpenAPI(spec, {
225
+ includeOperations: ['createUser', 'getUser', 'updateUser'],
226
+ });
227
+
228
+ // Exclude deprecated
229
+ const tools = await parseOpenAPI(spec, {
230
+ includeDeprecated: false,
231
+ });
232
+ ```
233
+
234
+ ### Combining Multiple Specs
235
+
236
+ ```typescript
237
+ import { parseOpenAPI, mergeTools } from '@github-to-mcp/openapi-parser';
238
+
239
+ const spec1Tools = await parseOpenAPI(spec1);
240
+ const spec2Tools = await parseOpenAPI(spec2);
241
+
242
+ const allTools = mergeTools([spec1Tools, spec2Tools], {
243
+ deduplicateBy: 'name',
244
+ conflictResolution: 'rename',
245
+ });
246
+ ```
247
+
248
+ ---
249
+
250
+ ## See Also
251
+
252
+ - [Core API](core.md) - Main library
253
+ - [Tool Types](../concepts/tool-types.md) - Understanding extracted tools
254
+ - [How It Works](../concepts/how-it-works.md) - Extraction process
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none">
2
+ <rect width="100" height="100" rx="16" fill="#000"/>
3
+ <path d="M50 20C33.4 20 20 33.4 20 50C20 63.3 28.7 74.5 40.7 78.4C42.2 78.7 42.8 77.8 42.8 77C42.8 76.3 42.8 74.5 42.8 72.1C34.1 74.1 32.3 67.4 32.3 67.4C30.9 63.9 28.9 63 28.9 63C26.1 61.1 29.1 61.1 29.1 61.1C32.2 61.3 33.8 64.3 33.8 64.3C36.5 69.1 41 67.5 42.9 66.8C43.2 64.8 44 63.5 44.9 62.7C38 62 30.8 59.5 30.8 48.1C30.8 44.8 32 42.1 33.9 40C33.5 39.2 32.6 36.1 34.2 31.9C34.2 31.9 36.8 31.1 42.8 35.1C45.2 34.4 47.7 34.1 50.2 34.1C52.7 34.1 55.2 34.4 57.6 35.1C63.5 31 66.2 31.9 66.2 31.9C67.8 36.1 66.9 39.2 66.5 40C68.4 42.1 69.6 44.9 69.6 48.1C69.6 59.6 62.3 62 55.4 62.7C56.5 63.7 57.5 65.6 57.5 68.5C57.5 72.7 57.5 76 57.5 77C57.5 77.8 58.1 78.8 59.6 78.5C71.5 74.6 80.2 63.4 80.2 50.1C80 33.4 66.6 20 50 20Z" fill="#fff"/>
4
+ <path d="M65 55L75 65L85 55" stroke="#fff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <circle cx="80" cy="75" r="8" stroke="#fff" stroke-width="3" fill="none"/>
6
+ <path d="M80 70V80M75 75H85" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
7
+ </svg>
@@ -0,0 +1,118 @@
1
+ # Changelog
2
+
3
+ All notable changes to GitHub to MCP.
4
+
5
+ ## [1.0.0] - 2025-01-17
6
+
7
+ ### 🎉 Initial Release
8
+
9
+ First stable release of GitHub to MCP!
10
+
11
+ ### Features
12
+
13
+ - **Core Conversion** - Convert any GitHub repository to MCP server
14
+ - **Web Interface** - Browser-based conversion at [github-to-mcp.vercel.app](https://github-to-mcp.vercel.app)
15
+ - **CLI Tool** - Command-line interface for automation
16
+ - **Programmatic API** - JavaScript/TypeScript library
17
+
18
+ ### Universal Tools
19
+
20
+ Every generated server includes:
21
+
22
+ - `get_readme` - Fetch repository README
23
+ - `list_files` - Browse directory structure
24
+ - `read_file` - Read file contents
25
+ - `search_code` - Search for code patterns
26
+
27
+ ### Extraction Sources
28
+
29
+ - **OpenAPI/Swagger** - Extract REST API endpoints
30
+ - **GraphQL** - Extract queries and mutations
31
+ - **MCP Servers** - Parse existing tool definitions
32
+ - **Code Analysis** - Detect patterns in source code
33
+
34
+ ### Output Formats
35
+
36
+ - TypeScript MCP servers
37
+ - Python MCP servers (experimental)
38
+
39
+ ### Integrations
40
+
41
+ - Claude Desktop configuration
42
+ - Cursor IDE support
43
+ - Continue extension support
44
+
45
+ ---
46
+
47
+ ## [0.9.0] - 2025-01-10 (Beta)
48
+
49
+ ### Added
50
+
51
+ - GraphQL schema parsing
52
+ - Python output support
53
+ - Batch conversion feature
54
+ - Playground for testing tools
55
+
56
+ ### Changed
57
+
58
+ - Improved OpenAPI parsing accuracy
59
+ - Better error messages
60
+ - Faster generation times
61
+
62
+ ### Fixed
63
+
64
+ - Rate limit handling
65
+ - Large repository support
66
+ - Unicode file handling
67
+
68
+ ---
69
+
70
+ ## [0.8.0] - 2025-01-03 (Alpha)
71
+
72
+ ### Added
73
+
74
+ - Initial CLI implementation
75
+ - OpenAPI extraction
76
+ - Basic web interface
77
+
78
+ ### Known Issues
79
+
80
+ - GraphQL not yet supported
81
+ - Limited error handling
82
+ - No Python output
83
+
84
+ ---
85
+
86
+ ## Versioning
87
+
88
+ This project follows [Semantic Versioning](https://semver.org/):
89
+
90
+ - **MAJOR** - Breaking changes to public API
91
+ - **MINOR** - New features, backward compatible
92
+ - **PATCH** - Bug fixes, backward compatible
93
+
94
+ ---
95
+
96
+ ## Upgrade Guide
97
+
98
+ ### From 0.x to 1.0
99
+
100
+ No breaking changes! Simply update your dependency:
101
+
102
+ ```bash
103
+ npm install @nirholas/github-to-mcp@latest
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Release Schedule
109
+
110
+ - **Major releases**: As needed for breaking changes
111
+ - **Minor releases**: Monthly feature releases
112
+ - **Patch releases**: As needed for bug fixes
113
+
114
+ ---
115
+
116
+ ## Contributing
117
+
118
+ Want to contribute to the next release? See our [Contributing Guide](contributing/index.md)!