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,188 @@
1
+ # Cursor Integration
2
+
3
+ Use GitHub to MCP with Cursor IDE for AI-assisted coding with full codebase context.
4
+
5
+ ## Prerequisites
6
+
7
+ - [Cursor](https://cursor.sh) installed
8
+ - A generated MCP server (see [Quick Start](../getting-started/quickstart.md))
9
+ - Node.js 18+ installed
10
+
11
+ ## Step 1: Generate Your MCP Server
12
+
13
+ ```bash
14
+ npx @nirholas/github-to-mcp https://github.com/owner/repo -o ~/mcp-servers/my-repo
15
+ ```
16
+
17
+ ## Step 2: Configure Cursor
18
+
19
+ Cursor's MCP configuration is in your settings. Open Cursor and:
20
+
21
+ 1. Press `Cmd/Ctrl + ,` to open Settings
22
+ 2. Search for "MCP"
23
+ 3. Click "Edit in settings.json"
24
+
25
+ Or edit directly:
26
+
27
+ === "macOS"
28
+
29
+ ```
30
+ ~/Library/Application Support/Cursor/User/settings.json
31
+ ```
32
+
33
+ === "Windows"
34
+
35
+ ```
36
+ %APPDATA%\Cursor\User\settings.json
37
+ ```
38
+
39
+ === "Linux"
40
+
41
+ ```
42
+ ~/.config/Cursor/User/settings.json
43
+ ```
44
+
45
+ ## Step 3: Add MCP Server
46
+
47
+ Add your MCP server configuration:
48
+
49
+ ```json
50
+ {
51
+ "mcp.servers": {
52
+ "my-repo": {
53
+ "command": "node",
54
+ "args": ["/Users/yourname/mcp-servers/my-repo/server.mjs"]
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ## Step 4: Restart Cursor
61
+
62
+ 1. Close all Cursor windows
63
+ 2. Relaunch Cursor
64
+ 3. The MCP tools should now be available
65
+
66
+ ## Using MCP with Cursor
67
+
68
+ ### In Chat (Cmd+L)
69
+
70
+ Ask questions about the connected repository:
71
+
72
+ > **You:** How does the authentication middleware work?
73
+ >
74
+ > **Cursor:** *Uses MCP tools to search and read files* The authentication middleware in this repo...
75
+
76
+ ### In Composer (Cmd+K)
77
+
78
+ Reference MCP tools when generating code:
79
+
80
+ > **You:** Create a new endpoint similar to the existing /users endpoint
81
+ >
82
+ > **Cursor:** *Uses `search_code` to find the users endpoint, `read_file` to understand the pattern*
83
+
84
+ ### Context Awareness
85
+
86
+ With MCP connected, Cursor can:
87
+
88
+ - Search the entire repository for relevant code
89
+ - Understand API patterns and conventions
90
+ - Find related implementations
91
+ - Reference documentation
92
+
93
+ ## Multiple Repositories
94
+
95
+ Configure multiple repos for cross-codebase AI assistance:
96
+
97
+ ```json
98
+ {
99
+ "mcp.servers": {
100
+ "frontend": {
101
+ "command": "node",
102
+ "args": ["/path/to/frontend-mcp/server.mjs"]
103
+ },
104
+ "backend": {
105
+ "command": "node",
106
+ "args": ["/path/to/backend-mcp/server.mjs"]
107
+ },
108
+ "shared-lib": {
109
+ "command": "node",
110
+ "args": ["/path/to/shared-mcp/server.mjs"]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## Workflow Tips
117
+
118
+ ### 1. Connect External Dependencies
119
+
120
+ Generate MCP servers for libraries you use:
121
+
122
+ ```bash
123
+ # Your project's main dependency
124
+ npx @nirholas/github-to-mcp https://github.com/prisma/prisma -o ~/mcp-servers/prisma
125
+ ```
126
+
127
+ Then ask Cursor about Prisma patterns while coding.
128
+
129
+ ### 2. Reference Documentation Repos
130
+
131
+ ```bash
132
+ npx @nirholas/github-to-mcp https://github.com/vercel/next.js -o ~/mcp-servers/nextjs
133
+ ```
134
+
135
+ Ask about Next.js best practices with real code context.
136
+
137
+ ### 3. Keep Servers Updated
138
+
139
+ When dependencies update, regenerate:
140
+
141
+ ```bash
142
+ npx @nirholas/github-to-mcp https://github.com/prisma/prisma -o ~/mcp-servers/prisma --force
143
+ ```
144
+
145
+ ## Troubleshooting
146
+
147
+ ### MCP Not Working
148
+
149
+ 1. Check Cursor version (MCP requires recent versions)
150
+ 2. Verify the config file location
151
+ 3. Test the server standalone:
152
+ ```bash
153
+ node ~/mcp-servers/my-repo/server.mjs
154
+ ```
155
+
156
+ ### Slow Responses
157
+
158
+ For large repos, optimize your MCP server:
159
+
160
+ ```bash
161
+ npx @nirholas/github-to-mcp <url> \
162
+ --exclude-tools get_readme \
163
+ -o ~/mcp-servers/my-repo
164
+ ```
165
+
166
+ ### Permission Errors
167
+
168
+ On macOS, you may need to allow Node.js:
169
+
170
+ 1. System Preferences → Security & Privacy
171
+ 2. Allow `node` to run
172
+
173
+ ---
174
+
175
+ ## Best Practices
176
+
177
+ 1. **Local repos first** - For your active project, use Cursor's built-in context
178
+ 2. **MCP for external** - Use MCP for dependencies and reference repos
179
+ 3. **Selective tools** - Exclude unused tools for faster responses
180
+ 4. **Keep servers lean** - Don't generate servers for massive repos unless needed
181
+
182
+ ---
183
+
184
+ ## Next Steps
185
+
186
+ - [VS Code Integration](vscode.md)
187
+ - [Custom Tools](custom-tools.md)
188
+ - [Batch Conversion](batch.md) - Generate multiple servers at once
@@ -0,0 +1,367 @@
1
+ # Custom Tools
2
+
3
+ Extend and customize the generated MCP tools to fit your needs.
4
+
5
+ ## Understanding Generated Tools
6
+
7
+ Each generated MCP server includes tool implementations that you can modify:
8
+
9
+ ```
10
+ my-mcp-server/
11
+ ├── server.mjs # Main server (registers tools)
12
+ ├── tools/
13
+ │ ├── index.mjs # Tool exports
14
+ │ ├── read_file.mjs
15
+ │ ├── list_files.mjs
16
+ │ ├── search_code.mjs
17
+ │ └── get_readme.mjs
18
+ └── package.json
19
+ ```
20
+
21
+ ## Modifying Existing Tools
22
+
23
+ ### Example: Add Caching to read_file
24
+
25
+ Edit `tools/read_file.mjs`:
26
+
27
+ ```javascript
28
+ import { LRUCache } from 'lru-cache';
29
+
30
+ // Add a cache
31
+ const cache = new LRUCache({ max: 100, ttl: 1000 * 60 * 5 });
32
+
33
+ export const readFileTool = {
34
+ name: 'read_file',
35
+ description: 'Read the contents of a file from the repository',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ path: {
40
+ type: 'string',
41
+ description: 'Path to the file to read'
42
+ }
43
+ },
44
+ required: ['path']
45
+ },
46
+ async execute({ path }) {
47
+ // Check cache first
48
+ const cached = cache.get(path);
49
+ if (cached) {
50
+ return { content: cached, cached: true };
51
+ }
52
+
53
+ // Fetch if not cached
54
+ const content = await fetchFileFromGithub(path);
55
+ cache.set(path, content);
56
+
57
+ return { content, cached: false };
58
+ }
59
+ };
60
+ ```
61
+
62
+ ### Example: Add Filtering to list_files
63
+
64
+ ```javascript
65
+ export const listFilesTool = {
66
+ name: 'list_files',
67
+ description: 'List files in a directory with optional filtering',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ path: {
72
+ type: 'string',
73
+ description: 'Directory path'
74
+ },
75
+ pattern: {
76
+ type: 'string',
77
+ description: 'Glob pattern to filter files (e.g., "*.ts")'
78
+ },
79
+ maxDepth: {
80
+ type: 'number',
81
+ description: 'Maximum depth to traverse'
82
+ }
83
+ },
84
+ required: ['path']
85
+ },
86
+ async execute({ path, pattern, maxDepth = 3 }) {
87
+ let files = await fetchDirectoryListing(path, maxDepth);
88
+
89
+ if (pattern) {
90
+ const minimatch = await import('minimatch');
91
+ files = files.filter(f => minimatch.default(f.name, pattern));
92
+ }
93
+
94
+ return { files };
95
+ }
96
+ };
97
+ ```
98
+
99
+ ## Adding New Tools
100
+
101
+ ### Step 1: Create the Tool File
102
+
103
+ Create `tools/my_custom_tool.mjs`:
104
+
105
+ ```javascript
106
+ export const myCustomTool = {
107
+ name: 'analyze_dependencies',
108
+ description: 'Analyze package.json dependencies and find outdated packages',
109
+ inputSchema: {
110
+ type: 'object',
111
+ properties: {
112
+ checkUpdates: {
113
+ type: 'boolean',
114
+ description: 'Check npm for newer versions'
115
+ }
116
+ }
117
+ },
118
+ async execute({ checkUpdates = false }) {
119
+ // Read package.json
120
+ const packageJson = await this.tools.read_file.execute({
121
+ path: 'package.json'
122
+ });
123
+
124
+ const pkg = JSON.parse(packageJson.content);
125
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
126
+
127
+ const result = {
128
+ total: Object.keys(deps).length,
129
+ dependencies: pkg.dependencies,
130
+ devDependencies: pkg.devDependencies
131
+ };
132
+
133
+ if (checkUpdates) {
134
+ // Check for updates (simplified example)
135
+ result.outdated = await checkForUpdates(deps);
136
+ }
137
+
138
+ return result;
139
+ }
140
+ };
141
+ ```
142
+
143
+ ### Step 2: Register the Tool
144
+
145
+ Edit `tools/index.mjs`:
146
+
147
+ ```javascript
148
+ export { readFileTool } from './read_file.mjs';
149
+ export { listFilesTool } from './list_files.mjs';
150
+ export { searchCodeTool } from './search_code.mjs';
151
+ export { getReadmeTool } from './get_readme.mjs';
152
+ // Add your custom tool
153
+ export { myCustomTool } from './my_custom_tool.mjs';
154
+ ```
155
+
156
+ ### Step 3: Add to Server
157
+
158
+ Edit `server.mjs`:
159
+
160
+ ```javascript
161
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
162
+ import * as tools from './tools/index.mjs';
163
+
164
+ const server = new Server({
165
+ name: 'my-repo-mcp',
166
+ version: '1.0.0'
167
+ });
168
+
169
+ // Register all tools
170
+ Object.values(tools).forEach(tool => {
171
+ server.setRequestHandler('tools/call', tool.name, tool.execute);
172
+ });
173
+ ```
174
+
175
+ ## Tool Patterns
176
+
177
+ ### Composite Tools
178
+
179
+ Create tools that combine multiple operations:
180
+
181
+ ```javascript
182
+ export const explainCodeTool = {
183
+ name: 'explain_code',
184
+ description: 'Read a file and provide structured information about it',
185
+ inputSchema: {
186
+ type: 'object',
187
+ properties: {
188
+ path: { type: 'string' }
189
+ },
190
+ required: ['path']
191
+ },
192
+ async execute({ path }, { tools }) {
193
+ // Use other tools
194
+ const content = await tools.read_file.execute({ path });
195
+ const related = await tools.search_code.execute({
196
+ query: path.split('/').pop().replace('.', '')
197
+ });
198
+
199
+ return {
200
+ content: content.content,
201
+ relatedFiles: related.results.slice(0, 5),
202
+ lineCount: content.content.split('\n').length,
203
+ language: detectLanguage(path)
204
+ };
205
+ }
206
+ };
207
+ ```
208
+
209
+ ### Tools with Side Effects
210
+
211
+ For tools that modify state (use cautiously):
212
+
213
+ ```javascript
214
+ export const createIssueTool = {
215
+ name: 'create_issue',
216
+ description: 'Create a GitHub issue (requires write access)',
217
+ inputSchema: {
218
+ type: 'object',
219
+ properties: {
220
+ title: { type: 'string' },
221
+ body: { type: 'string' },
222
+ labels: { type: 'array', items: { type: 'string' } }
223
+ },
224
+ required: ['title', 'body']
225
+ },
226
+ async execute({ title, body, labels = [] }, { config }) {
227
+ const response = await fetch(
228
+ `https://api.github.com/repos/${config.owner}/${config.repo}/issues`,
229
+ {
230
+ method: 'POST',
231
+ headers: {
232
+ Authorization: `token ${config.token}`,
233
+ 'Content-Type': 'application/json'
234
+ },
235
+ body: JSON.stringify({ title, body, labels })
236
+ }
237
+ );
238
+
239
+ return await response.json();
240
+ }
241
+ };
242
+ ```
243
+
244
+ ### Paginated Tools
245
+
246
+ Handle large result sets:
247
+
248
+ ```javascript
249
+ export const searchCodeTool = {
250
+ name: 'search_code',
251
+ inputSchema: {
252
+ type: 'object',
253
+ properties: {
254
+ query: { type: 'string' },
255
+ page: { type: 'number', default: 1 },
256
+ perPage: { type: 'number', default: 30 }
257
+ },
258
+ required: ['query']
259
+ },
260
+ async execute({ query, page = 1, perPage = 30 }) {
261
+ const results = await searchGithubCode(query, page, perPage);
262
+
263
+ return {
264
+ results: results.items,
265
+ total: results.total_count,
266
+ page,
267
+ perPage,
268
+ hasMore: results.total_count > page * perPage
269
+ };
270
+ }
271
+ };
272
+ ```
273
+
274
+ ## TypeScript Tools
275
+
276
+ For TypeScript servers, use proper types:
277
+
278
+ ```typescript
279
+ import { Tool, ToolResult } from '@modelcontextprotocol/sdk';
280
+
281
+ interface ReadFileInput {
282
+ path: string;
283
+ }
284
+
285
+ interface ReadFileOutput {
286
+ content: string;
287
+ encoding: string;
288
+ }
289
+
290
+ export const readFileTool: Tool<ReadFileInput, ReadFileOutput> = {
291
+ name: 'read_file',
292
+ description: 'Read file contents',
293
+ inputSchema: {
294
+ type: 'object',
295
+ properties: {
296
+ path: { type: 'string' }
297
+ },
298
+ required: ['path']
299
+ },
300
+ async execute(input: ReadFileInput): Promise<ToolResult<ReadFileOutput>> {
301
+ const content = await fetchFile(input.path);
302
+ return {
303
+ content,
304
+ encoding: 'utf-8'
305
+ };
306
+ }
307
+ };
308
+ ```
309
+
310
+ ## Testing Custom Tools
311
+
312
+ ### Unit Testing
313
+
314
+ ```javascript
315
+ import { describe, it, expect } from 'vitest';
316
+ import { myCustomTool } from './my_custom_tool.mjs';
317
+
318
+ describe('myCustomTool', () => {
319
+ it('should analyze dependencies', async () => {
320
+ const mockTools = {
321
+ read_file: {
322
+ execute: async () => ({
323
+ content: JSON.stringify({
324
+ dependencies: { 'lodash': '^4.0.0' }
325
+ })
326
+ })
327
+ }
328
+ };
329
+
330
+ const result = await myCustomTool.execute(
331
+ { checkUpdates: false },
332
+ { tools: mockTools }
333
+ );
334
+
335
+ expect(result.total).toBe(1);
336
+ expect(result.dependencies.lodash).toBe('^4.0.0');
337
+ });
338
+ });
339
+ ```
340
+
341
+ ### Integration Testing
342
+
343
+ ```bash
344
+ # Start the server
345
+ node server.mjs &
346
+
347
+ # Test with MCP inspector
348
+ mcp-inspector ws://localhost:3000 --call analyze_dependencies
349
+ ```
350
+
351
+ ---
352
+
353
+ ## Best Practices
354
+
355
+ 1. **Keep tools focused** - One tool, one purpose
356
+ 2. **Validate inputs** - Check required fields and types
357
+ 3. **Handle errors gracefully** - Return meaningful error messages
358
+ 4. **Document well** - Clear descriptions help AI use tools correctly
359
+ 5. **Test thoroughly** - Both unit and integration tests
360
+
361
+ ---
362
+
363
+ ## Next Steps
364
+
365
+ - [Batch Conversion](batch.md) - Convert multiple repos
366
+ - [API Reference](../api/index.md) - Full programmatic API
367
+ - [Architecture](../contributing/architecture.md) - How it all works
@@ -0,0 +1,78 @@
1
+ # Guides
2
+
3
+ Step-by-step tutorials for using GitHub to MCP with your favorite tools.
4
+
5
+ ## Integration Guides
6
+
7
+ <div class="feature-grid" markdown>
8
+
9
+ <div class="feature-card" markdown>
10
+
11
+ ### [Claude Desktop](claude-desktop.md)
12
+ Connect your MCP server to Claude Desktop for powerful AI conversations about your codebase.
13
+
14
+ </div>
15
+
16
+ <div class="feature-card" markdown>
17
+
18
+ ### [Cursor](cursor.md)
19
+ Integrate MCP servers with Cursor IDE for enhanced AI-assisted coding.
20
+
21
+ </div>
22
+
23
+ <div class="feature-card" markdown>
24
+
25
+ ### [VS Code](vscode.md)
26
+ Use MCP servers with VS Code and GitHub Copilot.
27
+
28
+ </div>
29
+
30
+ </div>
31
+
32
+ ## Feature Guides
33
+
34
+ <div class="feature-grid" markdown>
35
+
36
+ <div class="feature-card" markdown>
37
+
38
+ ### [Private Repos](private-repos.md)
39
+ Work with private repositories using GitHub authentication.
40
+
41
+ </div>
42
+
43
+ <div class="feature-card" markdown>
44
+
45
+ ### [Custom Tools](custom-tools.md)
46
+ Modify and extend the generated MCP tools.
47
+
48
+ </div>
49
+
50
+ <div class="feature-card" markdown>
51
+
52
+ ### [Batch Conversion](batch.md)
53
+ Convert multiple repositories at once.
54
+
55
+ </div>
56
+
57
+ </div>
58
+
59
+ ---
60
+
61
+ ## Quick Links
62
+
63
+ | Guide | Best For |
64
+ |-------|----------|
65
+ | [Claude Desktop](claude-desktop.md) | General AI conversations, research |
66
+ | [Cursor](cursor.md) | AI-assisted coding, refactoring |
67
+ | [VS Code](vscode.md) | GitHub Copilot integration |
68
+ | [Private Repos](private-repos.md) | Internal/proprietary codebases |
69
+ | [Custom Tools](custom-tools.md) | Advanced users, API extensions |
70
+ | [Batch Conversion](batch.md) | Multiple repos, automation |
71
+
72
+ ---
73
+
74
+ ## Need Help?
75
+
76
+ - Check the [FAQ](../reference/index.md#faq)
77
+ - Join the [GitHub Discussions](https://github.com/nirholas/github-to-mcp/discussions)
78
+ - Report issues on [GitHub](https://github.com/nirholas/github-to-mcp/issues)