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,594 @@
1
+ /**
2
+ * MCP SDK Types - Type definitions for MCP client wrapper
3
+ * @copyright 2024-2026 nirholas
4
+ * @license MIT
5
+ */
6
+
7
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
8
+
9
+ // ============================================================================
10
+ // Transport Types
11
+ // ============================================================================
12
+
13
+ /**
14
+ * Supported MCP transport types
15
+ */
16
+ export type TransportType = 'stdio' | 'sse' | 'streamable-http';
17
+
18
+ /**
19
+ * Configuration for stdio transport - spawns a local process
20
+ */
21
+ export interface StdioTransportConfig {
22
+ readonly type: 'stdio';
23
+ /** The command to execute */
24
+ readonly command: string;
25
+ /** Command line arguments */
26
+ readonly args?: readonly string[];
27
+ /** Environment variables for the process */
28
+ readonly env?: Readonly<Record<string, string>>;
29
+ /** Working directory for the process */
30
+ readonly cwd?: string;
31
+ }
32
+
33
+ /**
34
+ * Configuration for SSE transport - connects to legacy HTTP+SSE server
35
+ * @deprecated SSE transport is deprecated in favor of streamable-http
36
+ */
37
+ export interface SseTransportConfig {
38
+ readonly type: 'sse';
39
+ /** The server URL to connect to */
40
+ readonly url: string;
41
+ /** Optional request headers */
42
+ readonly headers?: Readonly<Record<string, string>>;
43
+ }
44
+
45
+ /**
46
+ * Configuration for Streamable HTTP transport - connects to modern HTTP server
47
+ */
48
+ export interface StreamableHttpTransportConfig {
49
+ readonly type: 'streamable-http';
50
+ /** The server URL to connect to */
51
+ readonly url: string;
52
+ /** Optional request headers */
53
+ readonly headers?: Readonly<Record<string, string>>;
54
+ /** Optional session ID for reconnection */
55
+ readonly sessionId?: string;
56
+ }
57
+
58
+ /**
59
+ * Discriminated union of all transport configurations
60
+ */
61
+ export type TransportConfig =
62
+ | StdioTransportConfig
63
+ | SseTransportConfig
64
+ | StreamableHttpTransportConfig;
65
+
66
+ // ============================================================================
67
+ // MCP Capability Types
68
+ // ============================================================================
69
+
70
+ /**
71
+ * Server capabilities returned during initialization
72
+ */
73
+ export interface McpCapabilities {
74
+ /** Whether the server supports tools */
75
+ readonly tools?: {
76
+ readonly listChanged?: boolean;
77
+ };
78
+ /** Whether the server supports resources */
79
+ readonly resources?: {
80
+ readonly subscribe?: boolean;
81
+ readonly listChanged?: boolean;
82
+ };
83
+ /** Whether the server supports prompts */
84
+ readonly prompts?: {
85
+ readonly listChanged?: boolean;
86
+ };
87
+ /** Whether the server supports logging */
88
+ readonly logging?: Record<string, unknown>;
89
+ /** Experimental capabilities */
90
+ readonly experimental?: Record<string, unknown>;
91
+ }
92
+
93
+ // ============================================================================
94
+ // MCP Tool Types
95
+ // ============================================================================
96
+
97
+ /**
98
+ * JSON Schema property definition for tool input
99
+ */
100
+ export interface JsonSchemaProperty {
101
+ readonly type: string;
102
+ readonly description?: string;
103
+ readonly enum?: readonly unknown[];
104
+ readonly default?: unknown;
105
+ readonly items?: JsonSchemaProperty;
106
+ readonly properties?: Readonly<Record<string, JsonSchemaProperty>>;
107
+ readonly required?: readonly string[];
108
+ readonly additionalProperties?: boolean | JsonSchemaProperty;
109
+ }
110
+
111
+ /**
112
+ * JSON Schema for tool input validation
113
+ */
114
+ export interface ToolInputSchema {
115
+ readonly type: 'object';
116
+ readonly properties?: Readonly<Record<string, JsonSchemaProperty>>;
117
+ readonly required?: readonly string[];
118
+ readonly additionalProperties?: boolean;
119
+ }
120
+
121
+ /**
122
+ * MCP Tool definition
123
+ */
124
+ export interface McpTool {
125
+ readonly name: string;
126
+ readonly description?: string;
127
+ readonly inputSchema: ToolInputSchema;
128
+ }
129
+
130
+ /**
131
+ * Content types for tool execution results
132
+ */
133
+ export interface TextContent {
134
+ readonly type: 'text';
135
+ readonly text: string;
136
+ }
137
+
138
+ export interface ImageContent {
139
+ readonly type: 'image';
140
+ readonly data: string;
141
+ readonly mimeType: string;
142
+ }
143
+
144
+ export interface EmbeddedResourceContent {
145
+ readonly type: 'resource';
146
+ readonly resource: {
147
+ readonly uri: string;
148
+ readonly mimeType?: string;
149
+ readonly text?: string;
150
+ readonly blob?: string;
151
+ };
152
+ }
153
+
154
+ export type ToolResultContent = TextContent | ImageContent | EmbeddedResourceContent;
155
+
156
+ /**
157
+ * Result of calling a tool
158
+ */
159
+ export interface McpToolCallResult {
160
+ readonly content: readonly ToolResultContent[];
161
+ readonly isError?: boolean;
162
+ }
163
+
164
+ // ============================================================================
165
+ // MCP Resource Types
166
+ // ============================================================================
167
+
168
+ /**
169
+ * MCP Resource definition
170
+ */
171
+ export interface McpResource {
172
+ readonly uri: string;
173
+ readonly name: string;
174
+ readonly description?: string;
175
+ readonly mimeType?: string;
176
+ }
177
+
178
+ /**
179
+ * Contents of a resource
180
+ */
181
+ export interface McpResourceContents {
182
+ readonly uri: string;
183
+ readonly mimeType?: string;
184
+ readonly text?: string;
185
+ readonly blob?: string;
186
+ }
187
+
188
+ // ============================================================================
189
+ // MCP Prompt Types
190
+ // ============================================================================
191
+
192
+ /**
193
+ * Prompt argument definition
194
+ */
195
+ export interface McpPromptArgument {
196
+ readonly name: string;
197
+ readonly description?: string;
198
+ readonly required?: boolean;
199
+ }
200
+
201
+ /**
202
+ * MCP Prompt definition
203
+ */
204
+ export interface McpPrompt {
205
+ readonly name: string;
206
+ readonly description?: string;
207
+ readonly arguments?: readonly McpPromptArgument[];
208
+ }
209
+
210
+ /**
211
+ * Message role in prompt
212
+ */
213
+ export type PromptMessageRole = 'user' | 'assistant';
214
+
215
+ /**
216
+ * Content in a prompt message
217
+ */
218
+ export interface PromptTextContent {
219
+ readonly type: 'text';
220
+ readonly text: string;
221
+ }
222
+
223
+ export interface PromptImageContent {
224
+ readonly type: 'image';
225
+ readonly data: string;
226
+ readonly mimeType: string;
227
+ }
228
+
229
+ export interface PromptResourceContent {
230
+ readonly type: 'resource';
231
+ readonly resource: {
232
+ readonly uri: string;
233
+ readonly mimeType?: string;
234
+ readonly text?: string;
235
+ readonly blob?: string;
236
+ };
237
+ }
238
+
239
+ export type PromptMessageContent =
240
+ | PromptTextContent
241
+ | PromptImageContent
242
+ | PromptResourceContent;
243
+
244
+ /**
245
+ * Message in a prompt
246
+ */
247
+ export interface McpPromptMessage {
248
+ readonly role: PromptMessageRole;
249
+ readonly content: PromptMessageContent;
250
+ }
251
+
252
+ /**
253
+ * Result of getting a prompt
254
+ */
255
+ export interface McpPromptResult {
256
+ readonly description?: string;
257
+ readonly messages: readonly McpPromptMessage[];
258
+ }
259
+
260
+ // ============================================================================
261
+ // MCP Session Types
262
+ // ============================================================================
263
+
264
+ /**
265
+ * Connection state of an MCP client
266
+ */
267
+ export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';
268
+
269
+ /**
270
+ * MCP Session representing an active connection
271
+ */
272
+ export interface McpSession {
273
+ /** Unique session identifier */
274
+ readonly id: string;
275
+ /** Transport configuration used for this session */
276
+ readonly transportConfig: TransportConfig;
277
+ /** Current connection state */
278
+ readonly state: ConnectionState;
279
+ /** Server capabilities discovered during initialization */
280
+ readonly capabilities?: McpCapabilities;
281
+ /** Server info from initialization */
282
+ readonly serverInfo?: {
283
+ readonly name: string;
284
+ readonly version: string;
285
+ };
286
+ /** When the session was created */
287
+ readonly createdAt: Date;
288
+ /** When the session was last used */
289
+ lastUsedAt: Date;
290
+ }
291
+
292
+ /**
293
+ * Internal session data with mutable transport
294
+ */
295
+ export interface McpSessionInternal extends McpSession {
296
+ /** The underlying transport instance */
297
+ transport: Transport;
298
+ /** Cleanup timer reference */
299
+ cleanupTimer: ReturnType<typeof setTimeout>;
300
+ }
301
+
302
+ // ============================================================================
303
+ // MCP Execution Result Types
304
+ // ============================================================================
305
+
306
+ /**
307
+ * Successful execution result
308
+ */
309
+ export interface McpExecutionSuccess<T = unknown> {
310
+ readonly success: true;
311
+ readonly data: T;
312
+ readonly executionTimeMs: number;
313
+ }
314
+
315
+ /**
316
+ * Failed execution result
317
+ */
318
+ export interface McpExecutionFailure {
319
+ readonly success: false;
320
+ readonly error: McpError;
321
+ readonly executionTimeMs: number;
322
+ }
323
+
324
+ /**
325
+ * Result of an MCP execution (tool call, resource read, etc.)
326
+ */
327
+ export type McpExecutionResult<T = unknown> =
328
+ | McpExecutionSuccess<T>
329
+ | McpExecutionFailure;
330
+
331
+ // ============================================================================
332
+ // Error Types
333
+ // ============================================================================
334
+
335
+ /**
336
+ * Error codes for MCP operations
337
+ */
338
+ export enum McpErrorCode {
339
+ // Connection errors
340
+ ConnectionFailed = 'CONNECTION_FAILED',
341
+ ConnectionTimeout = 'CONNECTION_TIMEOUT',
342
+ ConnectionClosed = 'CONNECTION_CLOSED',
343
+ NotConnected = 'NOT_CONNECTED',
344
+ AlreadyConnected = 'ALREADY_CONNECTED',
345
+
346
+ // Protocol errors
347
+ InvalidRequest = 'INVALID_REQUEST',
348
+ InvalidResponse = 'INVALID_RESPONSE',
349
+ MethodNotFound = 'METHOD_NOT_FOUND',
350
+ InvalidParams = 'INVALID_PARAMS',
351
+
352
+ // Resource errors
353
+ ResourceNotFound = 'RESOURCE_NOT_FOUND',
354
+ ResourceAccessDenied = 'RESOURCE_ACCESS_DENIED',
355
+
356
+ // Tool errors
357
+ ToolNotFound = 'TOOL_NOT_FOUND',
358
+ ToolExecutionFailed = 'TOOL_EXECUTION_FAILED',
359
+
360
+ // Prompt errors
361
+ PromptNotFound = 'PROMPT_NOT_FOUND',
362
+
363
+ // Session errors
364
+ SessionNotFound = 'SESSION_NOT_FOUND',
365
+ SessionExpired = 'SESSION_EXPIRED',
366
+ MaxSessionsReached = 'MAX_SESSIONS_REACHED',
367
+
368
+ // Transport errors
369
+ TransportError = 'TRANSPORT_ERROR',
370
+ UnsupportedTransport = 'UNSUPPORTED_TRANSPORT',
371
+
372
+ // General errors
373
+ Timeout = 'TIMEOUT',
374
+ InternalError = 'INTERNAL_ERROR',
375
+ Unknown = 'UNKNOWN',
376
+ }
377
+
378
+ /**
379
+ * Base MCP Error class
380
+ */
381
+ export class McpError extends Error {
382
+ constructor(
383
+ public readonly code: McpErrorCode,
384
+ message: string,
385
+ public readonly cause?: unknown
386
+ ) {
387
+ super(message);
388
+ this.name = 'McpError';
389
+ // Maintain proper stack trace in V8 environments
390
+ if (Error.captureStackTrace) {
391
+ Error.captureStackTrace(this, McpError);
392
+ }
393
+ }
394
+
395
+ /**
396
+ * Create a JSON-serializable representation
397
+ */
398
+ toJSON(): Readonly<{
399
+ name: string;
400
+ code: McpErrorCode;
401
+ message: string;
402
+ cause?: unknown;
403
+ }> {
404
+ return {
405
+ name: this.name,
406
+ code: this.code,
407
+ message: this.message,
408
+ cause: this.cause,
409
+ };
410
+ }
411
+ }
412
+
413
+ /**
414
+ * Connection-related error
415
+ */
416
+ export class McpConnectionError extends McpError {
417
+ constructor(code: McpErrorCode, message: string, cause?: unknown) {
418
+ super(code, message, cause);
419
+ this.name = 'McpConnectionError';
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Transport-related error
425
+ */
426
+ export class McpTransportError extends McpError {
427
+ constructor(message: string, cause?: unknown) {
428
+ super(McpErrorCode.TransportError, message, cause);
429
+ this.name = 'McpTransportError';
430
+ }
431
+ }
432
+
433
+ /**
434
+ * Timeout error
435
+ */
436
+ export class McpTimeoutError extends McpError {
437
+ constructor(operation: string, timeoutMs: number, cause?: unknown) {
438
+ super(
439
+ McpErrorCode.Timeout,
440
+ `Operation '${operation}' timed out after ${timeoutMs}ms`,
441
+ cause
442
+ );
443
+ this.name = 'McpTimeoutError';
444
+ }
445
+ }
446
+
447
+ /**
448
+ * Session-related error
449
+ */
450
+ export class McpSessionError extends McpError {
451
+ constructor(code: McpErrorCode, message: string, cause?: unknown) {
452
+ super(code, message, cause);
453
+ this.name = 'McpSessionError';
454
+ }
455
+ }
456
+
457
+ // ============================================================================
458
+ // Client Configuration Types
459
+ // ============================================================================
460
+
461
+ /**
462
+ * Configuration options for McpClient
463
+ */
464
+ export interface McpClientOptions {
465
+ /** Client name for identification */
466
+ readonly name: string;
467
+ /** Client version */
468
+ readonly version: string;
469
+ /** Connection timeout in milliseconds */
470
+ readonly connectionTimeoutMs?: number;
471
+ /** Request timeout in milliseconds */
472
+ readonly requestTimeoutMs?: number;
473
+ /** Enable debug logging */
474
+ readonly debug?: boolean;
475
+ }
476
+
477
+ /**
478
+ * Default client options
479
+ */
480
+ export const DEFAULT_CLIENT_OPTIONS: Required<
481
+ Pick<McpClientOptions, 'connectionTimeoutMs' | 'requestTimeoutMs' | 'debug'>
482
+ > = {
483
+ connectionTimeoutMs: 30_000,
484
+ requestTimeoutMs: 60_000,
485
+ debug: false,
486
+ } as const;
487
+
488
+ // ============================================================================
489
+ // Session Manager Configuration Types
490
+ // ============================================================================
491
+
492
+ /**
493
+ * Configuration options for SessionManager
494
+ */
495
+ export interface SessionManagerOptions {
496
+ /** Session timeout in milliseconds (default: 5 minutes) */
497
+ readonly sessionTimeoutMs?: number;
498
+ /** Maximum number of concurrent sessions (default: 100) */
499
+ readonly maxSessions?: number;
500
+ /** Enable debug logging */
501
+ readonly debug?: boolean;
502
+ }
503
+
504
+ /**
505
+ * Default session manager options
506
+ */
507
+ export const DEFAULT_SESSION_MANAGER_OPTIONS: Required<SessionManagerOptions> = {
508
+ sessionTimeoutMs: 5 * 60 * 1000, // 5 minutes
509
+ maxSessions: 100,
510
+ debug: false,
511
+ } as const;
512
+
513
+ // ============================================================================
514
+ // Type Guards
515
+ // ============================================================================
516
+
517
+ /**
518
+ * Type guard for StdioTransportConfig
519
+ */
520
+ export function isStdioTransportConfig(
521
+ config: TransportConfig
522
+ ): config is StdioTransportConfig {
523
+ return config.type === 'stdio';
524
+ }
525
+
526
+ /**
527
+ * Type guard for SseTransportConfig
528
+ */
529
+ export function isSseTransportConfig(
530
+ config: TransportConfig
531
+ ): config is SseTransportConfig {
532
+ return config.type === 'sse';
533
+ }
534
+
535
+ /**
536
+ * Type guard for StreamableHttpTransportConfig
537
+ */
538
+ export function isStreamableHttpTransportConfig(
539
+ config: TransportConfig
540
+ ): config is StreamableHttpTransportConfig {
541
+ return config.type === 'streamable-http';
542
+ }
543
+
544
+ /**
545
+ * Type guard for McpExecutionSuccess
546
+ */
547
+ export function isExecutionSuccess<T>(
548
+ result: McpExecutionResult<T>
549
+ ): result is McpExecutionSuccess<T> {
550
+ return result.success === true;
551
+ }
552
+
553
+ /**
554
+ * Type guard for McpExecutionFailure
555
+ */
556
+ export function isExecutionFailure(
557
+ result: McpExecutionResult<unknown>
558
+ ): result is McpExecutionFailure {
559
+ return result.success === false;
560
+ }
561
+
562
+ /**
563
+ * Type guard for McpError
564
+ */
565
+ export function isMcpError(error: unknown): error is McpError {
566
+ return error instanceof McpError;
567
+ }
568
+
569
+ /**
570
+ * Type guard for TextContent
571
+ */
572
+ export function isTextContent(
573
+ content: ToolResultContent
574
+ ): content is TextContent {
575
+ return content.type === 'text';
576
+ }
577
+
578
+ /**
579
+ * Type guard for ImageContent
580
+ */
581
+ export function isImageContent(
582
+ content: ToolResultContent
583
+ ): content is ImageContent {
584
+ return content.type === 'image';
585
+ }
586
+
587
+ /**
588
+ * Type guard for EmbeddedResourceContent
589
+ */
590
+ export function isEmbeddedResourceContent(
591
+ content: ToolResultContent
592
+ ): content is EmbeddedResourceContent {
593
+ return content.type === 'resource';
594
+ }