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,601 @@
1
+ /**
2
+ * @fileoverview MCP Prompts - Common workflow templates
3
+ * @author nich (x.com/nichxbt | github.com/nirholas)
4
+ * @copyright Copyright (c) 2024-2026 nich (nirholas)
5
+ * @license MIT
6
+ * @see https://github.com/nirholas/github-to-mcp
7
+ */
8
+
9
+ import { Prompt, PromptArgument, PromptMessage, TextContent } from '@modelcontextprotocol/sdk/types.js';
10
+
11
+ // ============================================================================
12
+ // Prompt Definitions
13
+ // ============================================================================
14
+
15
+ /** MCP Prompts by nich (x.com/nichxbt | github.com/nirholas) */
16
+ const _PROMPTS_META = { author: 'nich', twitter: 'nichxbt', gh: 'nirholas' } as const;
17
+
18
+ /**
19
+ * All available prompts
20
+ */
21
+ export const PROMPTS: Prompt[] = [
22
+ {
23
+ name: 'analyze_api',
24
+ description: `Analyze a REST or GraphQL API and generate a plan for creating MCP tools.
25
+
26
+ Use this prompt when you want to:
27
+ - Understand an API's capabilities before conversion
28
+ - Get recommendations for tool organization
29
+ - Identify authentication requirements
30
+ - Plan parameter validation strategies`,
31
+ arguments: [
32
+ {
33
+ name: 'api_url',
34
+ description: 'URL to the API documentation or OpenAPI spec',
35
+ required: true,
36
+ },
37
+ {
38
+ name: 'focus_areas',
39
+ description: 'Specific areas to focus on (e.g., "authentication", "pagination", "error handling")',
40
+ required: false,
41
+ },
42
+ ],
43
+ },
44
+ {
45
+ name: 'debug_tool',
46
+ description: `Help diagnose and fix issues with an MCP tool that isn't working correctly.
47
+
48
+ Guides you through:
49
+ - Analyzing the error message
50
+ - Checking input validation
51
+ - Verifying schema correctness
52
+ - Testing with minimal examples
53
+ - Common pitfalls and solutions`,
54
+ arguments: [
55
+ {
56
+ name: 'tool_name',
57
+ description: 'Name of the tool that is failing',
58
+ required: true,
59
+ },
60
+ {
61
+ name: 'error_message',
62
+ description: 'The error message or unexpected behavior observed',
63
+ required: true,
64
+ },
65
+ {
66
+ name: 'tool_code',
67
+ description: 'The tool implementation code (if available)',
68
+ required: false,
69
+ },
70
+ ],
71
+ },
72
+ {
73
+ name: 'optimize_server',
74
+ description: `Review an MCP server implementation and suggest optimizations.
75
+
76
+ Analyzes:
77
+ - Code efficiency and patterns
78
+ - Error handling completeness
79
+ - Tool organization and naming
80
+ - Schema design quality
81
+ - Documentation coverage
82
+ - Security best practices`,
83
+ arguments: [
84
+ {
85
+ name: 'server_code',
86
+ description: 'The MCP server code to analyze',
87
+ required: true,
88
+ },
89
+ {
90
+ name: 'language',
91
+ description: 'Programming language (typescript or python)',
92
+ required: false,
93
+ },
94
+ ],
95
+ },
96
+ {
97
+ name: 'create_tool_suite',
98
+ description: `Design a comprehensive suite of MCP tools for a specific use case.
99
+
100
+ Helps you:
101
+ - Define tool boundaries and responsibilities
102
+ - Design consistent parameter patterns
103
+ - Plan error handling strategy
104
+ - Create documentation templates
105
+ - Set up testing structure`,
106
+ arguments: [
107
+ {
108
+ name: 'use_case',
109
+ description: 'Description of what the tool suite should accomplish',
110
+ required: true,
111
+ },
112
+ {
113
+ name: 'target_api',
114
+ description: 'API or service the tools will interact with (if applicable)',
115
+ required: false,
116
+ },
117
+ {
118
+ name: 'constraints',
119
+ description: 'Any constraints or requirements (auth, rate limits, etc.)',
120
+ required: false,
121
+ },
122
+ ],
123
+ },
124
+ {
125
+ name: 'migrate_to_mcp',
126
+ description: `Guide the migration of existing code to MCP tools.
127
+
128
+ Covers:
129
+ - Identifying functions suitable for tools
130
+ - Designing input/output schemas
131
+ - Handling async operations
132
+ - Managing state and context
133
+ - Testing migration results`,
134
+ arguments: [
135
+ {
136
+ name: 'source_code',
137
+ description: 'Existing code to migrate',
138
+ required: true,
139
+ },
140
+ {
141
+ name: 'source_type',
142
+ description: 'Type of source (REST API, CLI, library functions)',
143
+ required: true,
144
+ },
145
+ ],
146
+ },
147
+ {
148
+ name: 'security_review',
149
+ description: `Perform a security review of an MCP server implementation.
150
+
151
+ Checks for:
152
+ - Input validation vulnerabilities
153
+ - Injection attack vectors
154
+ - Authentication/authorization issues
155
+ - Sensitive data exposure
156
+ - Rate limiting and DoS protection
157
+ - Dependency vulnerabilities`,
158
+ arguments: [
159
+ {
160
+ name: 'server_code',
161
+ description: 'MCP server code to review',
162
+ required: true,
163
+ },
164
+ {
165
+ name: 'deployment_context',
166
+ description: 'How the server will be deployed (local, cloud, public)',
167
+ required: false,
168
+ },
169
+ ],
170
+ },
171
+ {
172
+ name: 'write_documentation',
173
+ description: `Generate comprehensive documentation for an MCP server.
174
+
175
+ Creates:
176
+ - README with quick start guide
177
+ - Tool reference documentation
178
+ - Usage examples for each tool
179
+ - Configuration guide
180
+ - Troubleshooting section`,
181
+ arguments: [
182
+ {
183
+ name: 'server_code',
184
+ description: 'MCP server code to document',
185
+ required: true,
186
+ },
187
+ {
188
+ name: 'audience',
189
+ description: 'Target audience (developers, end-users, both)',
190
+ required: false,
191
+ },
192
+ ],
193
+ },
194
+ {
195
+ name: 'compare_implementations',
196
+ description: `Compare two MCP implementations and identify differences.
197
+
198
+ Useful for:
199
+ - Reviewing generated vs hand-written code
200
+ - Comparing TypeScript vs Python versions
201
+ - Identifying missing features
202
+ - Finding inconsistencies`,
203
+ arguments: [
204
+ {
205
+ name: 'implementation_a',
206
+ description: 'First implementation to compare',
207
+ required: true,
208
+ },
209
+ {
210
+ name: 'implementation_b',
211
+ description: 'Second implementation to compare',
212
+ required: true,
213
+ },
214
+ ],
215
+ },
216
+ ];
217
+
218
+ // ============================================================================
219
+ // Prompt Message Generators
220
+ // ============================================================================
221
+
222
+ /**
223
+ * Generate prompt messages for analyze_api
224
+ */
225
+ export function generateAnalyzeApiMessages(args: {
226
+ api_url: string;
227
+ focus_areas?: string;
228
+ }): PromptMessage[] {
229
+ return [
230
+ {
231
+ role: 'user',
232
+ content: {
233
+ type: 'text',
234
+ text: `Please analyze the API at ${args.api_url} and help me create MCP tools for it.
235
+
236
+ ${args.focus_areas ? `Focus particularly on: ${args.focus_areas}` : ''}
237
+
238
+ I'd like you to:
239
+
240
+ 1. **API Overview**: Summarize what the API does and its main capabilities
241
+ 2. **Authentication**: Identify how authentication works and how to handle it in tools
242
+ 3. **Endpoints Analysis**: List the main endpoints and their purposes
243
+ 4. **Tool Recommendations**: Suggest which endpoints should become MCP tools
244
+ 5. **Schema Design**: Recommend input schemas for each tool
245
+ 6. **Error Handling**: Identify error patterns and how to handle them
246
+ 7. **Rate Limiting**: Note any rate limits and mitigation strategies
247
+
248
+ Please start by fetching and analyzing the API documentation or spec.`,
249
+ } as TextContent,
250
+ },
251
+ ];
252
+ }
253
+
254
+ /**
255
+ * Generate prompt messages for debug_tool
256
+ */
257
+ export function generateDebugToolMessages(args: {
258
+ tool_name: string;
259
+ error_message: string;
260
+ tool_code?: string;
261
+ }): PromptMessage[] {
262
+ return [
263
+ {
264
+ role: 'user',
265
+ content: {
266
+ type: 'text',
267
+ text: `I'm having trouble with an MCP tool called "${args.tool_name}".
268
+
269
+ **Error:** ${args.error_message}
270
+
271
+ ${args.tool_code ? `**Tool Code:**\n\`\`\`\n${args.tool_code}\n\`\`\`` : ''}
272
+
273
+ Please help me debug this by:
274
+
275
+ 1. **Error Analysis**: What does this error typically indicate?
276
+ 2. **Common Causes**: What are the most likely causes?
277
+ 3. **Diagnostic Steps**: How can I gather more information?
278
+ 4. **Solution Options**: What fixes should I try?
279
+ 5. **Prevention**: How can I prevent this in the future?
280
+
281
+ Please start with the most likely cause and work through systematically.`,
282
+ } as TextContent,
283
+ },
284
+ ];
285
+ }
286
+
287
+ /**
288
+ * Generate prompt messages for optimize_server
289
+ */
290
+ export function generateOptimizeServerMessages(args: {
291
+ server_code: string;
292
+ language?: string;
293
+ }): PromptMessage[] {
294
+ return [
295
+ {
296
+ role: 'user',
297
+ content: {
298
+ type: 'text',
299
+ text: `Please review this MCP server implementation and suggest optimizations.
300
+
301
+ **Language:** ${args.language || 'auto-detect'}
302
+
303
+ **Code:**
304
+ \`\`\`${args.language || ''}
305
+ ${args.server_code}
306
+ \`\`\`
307
+
308
+ Please analyze and provide feedback on:
309
+
310
+ 1. **Code Quality**
311
+ - Clean code principles
312
+ - DRY violations
313
+ - Complexity issues
314
+
315
+ 2. **Error Handling**
316
+ - Missing error cases
317
+ - Error message quality
318
+ - Recovery strategies
319
+
320
+ 3. **Performance**
321
+ - Inefficient patterns
322
+ - Caching opportunities
323
+ - Async optimization
324
+
325
+ 4. **Tool Design**
326
+ - Naming conventions
327
+ - Schema completeness
328
+ - Description quality
329
+
330
+ 5. **Security**
331
+ - Input validation
332
+ - Sensitive data handling
333
+ - Rate limiting
334
+
335
+ 6. **Documentation**
336
+ - Missing comments
337
+ - Type annotations
338
+ - Usage examples
339
+
340
+ Please prioritize the most impactful improvements first.`,
341
+ } as TextContent,
342
+ },
343
+ ];
344
+ }
345
+
346
+ /**
347
+ * Generate prompt messages for create_tool_suite
348
+ */
349
+ export function generateCreateToolSuiteMessages(args: {
350
+ use_case: string;
351
+ target_api?: string;
352
+ constraints?: string;
353
+ }): PromptMessage[] {
354
+ return [
355
+ {
356
+ role: 'user',
357
+ content: {
358
+ type: 'text',
359
+ text: `I want to create a suite of MCP tools for the following use case:
360
+
361
+ **Use Case:** ${args.use_case}
362
+
363
+ ${args.target_api ? `**Target API/Service:** ${args.target_api}` : ''}
364
+ ${args.constraints ? `**Constraints:** ${args.constraints}` : ''}
365
+
366
+ Please help me design this tool suite by:
367
+
368
+ 1. **Tool Inventory**: List all the tools needed with names and purposes
369
+ 2. **Tool Specifications**: For each tool, define:
370
+ - Name and description
371
+ - Input schema with all parameters
372
+ - Expected output format
373
+ - Error cases to handle
374
+ 3. **Shared Patterns**: Identify common patterns across tools
375
+ 4. **Implementation Order**: Suggest which tools to implement first
376
+ 5. **Testing Strategy**: Outline how to test each tool
377
+ 6. **Documentation Template**: Provide a documentation structure
378
+
379
+ Please be thorough - I want a complete blueprint I can follow.`,
380
+ } as TextContent,
381
+ },
382
+ ];
383
+ }
384
+
385
+ /**
386
+ * Generate prompt messages for migrate_to_mcp
387
+ */
388
+ export function generateMigrateToMcpMessages(args: {
389
+ source_code: string;
390
+ source_type: string;
391
+ }): PromptMessage[] {
392
+ return [
393
+ {
394
+ role: 'user',
395
+ content: {
396
+ type: 'text',
397
+ text: `I want to migrate existing ${args.source_type} code to MCP tools.
398
+
399
+ **Source Code:**
400
+ \`\`\`
401
+ ${args.source_code}
402
+ \`\`\`
403
+
404
+ Please guide me through the migration:
405
+
406
+ 1. **Analysis**: Identify which functions/endpoints should become tools
407
+ 2. **Mapping**: For each candidate:
408
+ - Original signature → MCP tool name
409
+ - Parameters → Input schema
410
+ - Return value → Output format
411
+ 3. **Transformations Needed**: What changes are required?
412
+ 4. **State Management**: How to handle any stateful operations
413
+ 5. **Generated Code**: Provide the MCP tool implementations
414
+ 6. **Testing Plan**: How to verify the migration is correct
415
+
416
+ Please ensure the migrated tools maintain the same functionality.`,
417
+ } as TextContent,
418
+ },
419
+ ];
420
+ }
421
+
422
+ /**
423
+ * Generate prompt messages for security_review
424
+ */
425
+ export function generateSecurityReviewMessages(args: {
426
+ server_code: string;
427
+ deployment_context?: string;
428
+ }): PromptMessage[] {
429
+ return [
430
+ {
431
+ role: 'user',
432
+ content: {
433
+ type: 'text',
434
+ text: `Please perform a security review of this MCP server.
435
+
436
+ ${args.deployment_context ? `**Deployment Context:** ${args.deployment_context}` : '**Deployment Context:** Unknown (assume public exposure)'}
437
+
438
+ **Code:**
439
+ \`\`\`
440
+ ${args.server_code}
441
+ \`\`\`
442
+
443
+ Please check for:
444
+
445
+ 1. **Input Validation**
446
+ - Injection vulnerabilities (SQL, command, path traversal)
447
+ - Type coercion issues
448
+ - Size/length limits
449
+
450
+ 2. **Authentication & Authorization**
451
+ - Missing auth checks
452
+ - Privilege escalation risks
453
+ - Token handling
454
+
455
+ 3. **Data Security**
456
+ - Sensitive data in logs
457
+ - Insecure data storage
458
+ - Data leakage in errors
459
+
460
+ 4. **Resource Limits**
461
+ - DoS vulnerabilities
462
+ - Rate limiting
463
+ - Memory exhaustion
464
+
465
+ 5. **Dependencies**
466
+ - Known vulnerable packages
467
+ - Outdated dependencies
468
+
469
+ For each issue found, provide:
470
+ - **Severity**: Critical/High/Medium/Low
471
+ - **Location**: Where in the code
472
+ - **Risk**: What could happen
473
+ - **Fix**: How to remediate`,
474
+ } as TextContent,
475
+ },
476
+ ];
477
+ }
478
+
479
+ /**
480
+ * Generate prompt messages for write_documentation
481
+ */
482
+ export function generateWriteDocumentationMessages(args: {
483
+ server_code: string;
484
+ audience?: string;
485
+ }): PromptMessage[] {
486
+ return [
487
+ {
488
+ role: 'user',
489
+ content: {
490
+ type: 'text',
491
+ text: `Please generate comprehensive documentation for this MCP server.
492
+
493
+ **Target Audience:** ${args.audience || 'developers'}
494
+
495
+ **Code:**
496
+ \`\`\`
497
+ ${args.server_code}
498
+ \`\`\`
499
+
500
+ Please create:
501
+
502
+ 1. **README.md** with:
503
+ - Project description
504
+ - Quick start guide
505
+ - Installation instructions
506
+ - Configuration options
507
+ - Basic usage examples
508
+
509
+ 2. **Tool Reference** for each tool:
510
+ - Description
511
+ - Parameters table
512
+ - Return value description
513
+ - Example calls
514
+ - Error cases
515
+
516
+ 3. **Examples Section**:
517
+ - Common use cases
518
+ - Integration patterns
519
+ - Best practices
520
+
521
+ 4. **Troubleshooting Guide**:
522
+ - Common errors and solutions
523
+ - FAQ
524
+
525
+ Please format everything in Markdown ready for use.`,
526
+ } as TextContent,
527
+ },
528
+ ];
529
+ }
530
+
531
+ /**
532
+ * Generate prompt messages for compare_implementations
533
+ */
534
+ export function generateCompareImplementationsMessages(args: {
535
+ implementation_a: string;
536
+ implementation_b: string;
537
+ }): PromptMessage[] {
538
+ return [
539
+ {
540
+ role: 'user',
541
+ content: {
542
+ type: 'text',
543
+ text: `Please compare these two MCP implementations:
544
+
545
+ **Implementation A:**
546
+ \`\`\`
547
+ ${args.implementation_a}
548
+ \`\`\`
549
+
550
+ **Implementation B:**
551
+ \`\`\`
552
+ ${args.implementation_b}
553
+ \`\`\`
554
+
555
+ Please analyze:
556
+
557
+ 1. **Feature Comparison**: Tools present in each
558
+ 2. **Schema Differences**: Parameter and type differences
559
+ 3. **Behavior Differences**: Any semantic differences
560
+ 4. **Code Quality**: Which is better implemented and why
561
+ 5. **Missing Features**: What each is missing compared to the other
562
+ 6. **Recommendations**: Which to prefer and what to merge
563
+
564
+ Present the comparison in a clear table format where applicable.`,
565
+ } as TextContent,
566
+ },
567
+ ];
568
+ }
569
+
570
+ // ============================================================================
571
+ // Prompt Handler
572
+ // ============================================================================
573
+
574
+ /**
575
+ * Get messages for a prompt by name
576
+ */
577
+ export function getPromptMessages(
578
+ name: string,
579
+ args: Record<string, string>
580
+ ): PromptMessage[] {
581
+ switch (name) {
582
+ case 'analyze_api':
583
+ return generateAnalyzeApiMessages(args as { api_url: string; focus_areas?: string });
584
+ case 'debug_tool':
585
+ return generateDebugToolMessages(args as { tool_name: string; error_message: string; tool_code?: string });
586
+ case 'optimize_server':
587
+ return generateOptimizeServerMessages(args as { server_code: string; language?: string });
588
+ case 'create_tool_suite':
589
+ return generateCreateToolSuiteMessages(args as { use_case: string; target_api?: string; constraints?: string });
590
+ case 'migrate_to_mcp':
591
+ return generateMigrateToMcpMessages(args as { source_code: string; source_type: string });
592
+ case 'security_review':
593
+ return generateSecurityReviewMessages(args as { server_code: string; deployment_context?: string });
594
+ case 'write_documentation':
595
+ return generateWriteDocumentationMessages(args as { server_code: string; audience?: string });
596
+ case 'compare_implementations':
597
+ return generateCompareImplementationsMessages(args as { implementation_a: string; implementation_b: string });
598
+ default:
599
+ throw new Error(`Unknown prompt: ${name}`);
600
+ }
601
+ }