mcpmake 0.1.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 (344) hide show
  1. package/README.md +691 -0
  2. package/bin/mcpmake.mjs +2 -0
  3. package/dist/analyzer/auth-detector.d.ts +12 -0
  4. package/dist/analyzer/auth-detector.js +142 -0
  5. package/dist/analyzer/dom-parser.d.ts +10 -0
  6. package/dist/analyzer/dom-parser.js +259 -0
  7. package/dist/analyzer/goal-crawler.d.ts +25 -0
  8. package/dist/analyzer/goal-crawler.js +177 -0
  9. package/dist/analyzer/hybrid-detector.d.ts +28 -0
  10. package/dist/analyzer/hybrid-detector.js +96 -0
  11. package/dist/analyzer/index.d.ts +12 -0
  12. package/dist/analyzer/index.js +8 -0
  13. package/dist/analyzer/screenshot-capture.d.ts +29 -0
  14. package/dist/analyzer/screenshot-capture.js +42 -0
  15. package/dist/analyzer/selector-builder.d.ts +19 -0
  16. package/dist/analyzer/selector-builder.js +199 -0
  17. package/dist/analyzer/semantic-analyzer.d.ts +13 -0
  18. package/dist/analyzer/semantic-analyzer.js +145 -0
  19. package/dist/analyzer/site-crawler.d.ts +38 -0
  20. package/dist/analyzer/site-crawler.js +235 -0
  21. package/dist/cloud/billing/billing-engine.d.ts +44 -0
  22. package/dist/cloud/billing/billing-engine.js +81 -0
  23. package/dist/cloud/billing/credit-store.d.ts +64 -0
  24. package/dist/cloud/billing/credit-store.js +168 -0
  25. package/dist/cloud/billing/index.d.ts +4 -0
  26. package/dist/cloud/billing/index.js +2 -0
  27. package/dist/cloud/billing/usage-store.d.ts +42 -0
  28. package/dist/cloud/billing/usage-store.js +85 -0
  29. package/dist/cloud/billing/usage-tracker.d.ts +38 -0
  30. package/dist/cloud/billing/usage-tracker.js +95 -0
  31. package/dist/cloud/build-pipeline.d.ts +39 -0
  32. package/dist/cloud/build-pipeline.js +310 -0
  33. package/dist/cloud/build-queue.d.ts +30 -0
  34. package/dist/cloud/build-queue.js +70 -0
  35. package/dist/cloud/caddy-manager.d.ts +18 -0
  36. package/dist/cloud/caddy-manager.js +97 -0
  37. package/dist/cloud/container-backend.d.ts +62 -0
  38. package/dist/cloud/container-backend.js +59 -0
  39. package/dist/cloud/container-manager.d.ts +64 -0
  40. package/dist/cloud/container-manager.js +301 -0
  41. package/dist/cloud/crypto.d.ts +27 -0
  42. package/dist/cloud/crypto.js +63 -0
  43. package/dist/cloud/db/index.d.ts +27 -0
  44. package/dist/cloud/db/index.js +53 -0
  45. package/dist/cloud/db/migrations.d.ts +12 -0
  46. package/dist/cloud/db/migrations.js +329 -0
  47. package/dist/cloud/db/pg-store.d.ts +45 -0
  48. package/dist/cloud/db/pg-store.js +336 -0
  49. package/dist/cloud/failure-tracker.d.ts +51 -0
  50. package/dist/cloud/failure-tracker.js +102 -0
  51. package/dist/cloud/idle-monitor.d.ts +30 -0
  52. package/dist/cloud/idle-monitor.js +70 -0
  53. package/dist/cloud/mailer.d.ts +21 -0
  54. package/dist/cloud/mailer.js +193 -0
  55. package/dist/cloud/mcp-proxy.d.ts +58 -0
  56. package/dist/cloud/mcp-proxy.js +203 -0
  57. package/dist/cloud/metric-samples.d.ts +43 -0
  58. package/dist/cloud/metric-samples.js +85 -0
  59. package/dist/cloud/metrics.d.ts +26 -0
  60. package/dist/cloud/metrics.js +59 -0
  61. package/dist/cloud/multipart.d.ts +26 -0
  62. package/dist/cloud/multipart.js +132 -0
  63. package/dist/cloud/observability.d.ts +27 -0
  64. package/dist/cloud/observability.js +98 -0
  65. package/dist/cloud/rate-limiter.d.ts +31 -0
  66. package/dist/cloud/rate-limiter.js +58 -0
  67. package/dist/cloud/request-security.d.ts +5 -0
  68. package/dist/cloud/request-security.js +74 -0
  69. package/dist/cloud/resource-monitor.d.ts +69 -0
  70. package/dist/cloud/resource-monitor.js +130 -0
  71. package/dist/cloud/secret-store.d.ts +38 -0
  72. package/dist/cloud/secret-store.js +103 -0
  73. package/dist/cloud/security.d.ts +26 -0
  74. package/dist/cloud/security.js +142 -0
  75. package/dist/cloud/server.d.ts +21 -0
  76. package/dist/cloud/server.js +1079 -0
  77. package/dist/cloud/shared-state.d.ts +72 -0
  78. package/dist/cloud/shared-state.js +159 -0
  79. package/dist/cloud/ssrf.d.ts +43 -0
  80. package/dist/cloud/ssrf.js +150 -0
  81. package/dist/cloud/store.d.ts +41 -0
  82. package/dist/cloud/store.js +75 -0
  83. package/dist/cloud/stripe.d.ts +78 -0
  84. package/dist/cloud/stripe.js +317 -0
  85. package/dist/cloud/telemetry-store.d.ts +53 -0
  86. package/dist/cloud/telemetry-store.js +108 -0
  87. package/dist/cloud/web/auth.d.ts +225 -0
  88. package/dist/cloud/web/auth.js +555 -0
  89. package/dist/cloud/web/charts.d.ts +70 -0
  90. package/dist/cloud/web/charts.js +178 -0
  91. package/dist/cloud/web/csrf.d.ts +14 -0
  92. package/dist/cloud/web/csrf.js +22 -0
  93. package/dist/cloud/web/docs.d.ts +40 -0
  94. package/dist/cloud/web/docs.js +174 -0
  95. package/dist/cloud/web/router.d.ts +25 -0
  96. package/dist/cloud/web/router.js +1921 -0
  97. package/dist/cloud/web/static/alpine.min.js +5 -0
  98. package/dist/cloud/web/static/favicon.svg +4 -0
  99. package/dist/cloud/web/static/htmx-sse.js +290 -0
  100. package/dist/cloud/web/static/htmx.min.js +1 -0
  101. package/dist/cloud/web/static/style.css +2683 -0
  102. package/dist/cloud/web/static-server.d.ts +13 -0
  103. package/dist/cloud/web/static-server.js +73 -0
  104. package/dist/cloud/web/template-engine.d.ts +27 -0
  105. package/dist/cloud/web/template-engine.js +146 -0
  106. package/dist/cloud/web/templates/layouts/admin.hbs +57 -0
  107. package/dist/cloud/web/templates/layouts/auth.hbs +138 -0
  108. package/dist/cloud/web/templates/layouts/base.hbs +16 -0
  109. package/dist/cloud/web/templates/layouts/dashboard.hbs +39 -0
  110. package/dist/cloud/web/templates/layouts/landing.hbs +82 -0
  111. package/dist/cloud/web/templates/pages/admin/overview.hbs +123 -0
  112. package/dist/cloud/web/templates/pages/admin/servers.hbs +129 -0
  113. package/dist/cloud/web/templates/pages/admin/telemetry.hbs +39 -0
  114. package/dist/cloud/web/templates/pages/admin/user-edit.hbs +91 -0
  115. package/dist/cloud/web/templates/pages/admin/users.hbs +179 -0
  116. package/dist/cloud/web/templates/pages/auth/forgot-password.hbs +25 -0
  117. package/dist/cloud/web/templates/pages/auth/login.hbs +33 -0
  118. package/dist/cloud/web/templates/pages/auth/register.hbs +32 -0
  119. package/dist/cloud/web/templates/pages/auth/reset-password.hbs +34 -0
  120. package/dist/cloud/web/templates/pages/dashboard/billing.hbs +140 -0
  121. package/dist/cloud/web/templates/pages/dashboard/create.hbs +173 -0
  122. package/dist/cloud/web/templates/pages/dashboard/index.hbs +8 -0
  123. package/dist/cloud/web/templates/pages/dashboard/server-detail.hbs +280 -0
  124. package/dist/cloud/web/templates/pages/dashboard/server-logs.hbs +35 -0
  125. package/dist/cloud/web/templates/pages/dashboard/server-metrics.hbs +63 -0
  126. package/dist/cloud/web/templates/pages/dashboard/servers-partial.hbs +21 -0
  127. package/dist/cloud/web/templates/pages/dashboard/servers.hbs +44 -0
  128. package/dist/cloud/web/templates/pages/docs/show.hbs +16 -0
  129. package/dist/cloud/web/templates/pages/errors/404.hbs +9 -0
  130. package/dist/cloud/web/templates/pages/errors/500.hbs +8 -0
  131. package/dist/cloud/web/templates/pages/landing/index.hbs +223 -0
  132. package/dist/cloud/web/templates/pages/legal/privacy.hbs +71 -0
  133. package/dist/cloud/web/templates/pages/legal/terms.hbs +73 -0
  134. package/dist/cloud/web/templates/partials/admin-stats.hbs +52 -0
  135. package/dist/cloud/web/templates/partials/flash-message.hbs +6 -0
  136. package/dist/cloud/web/templates/partials/pricing-table.hbs +103 -0
  137. package/dist/cloud/web/templates/partials/server-card.hbs +19 -0
  138. package/dist/cloud/web/templates/partials/status-badge.hbs +1 -0
  139. package/dist/commands/bundle.d.ts +18 -0
  140. package/dist/commands/bundle.js +82 -0
  141. package/dist/commands/ci.d.ts +25 -0
  142. package/dist/commands/ci.js +149 -0
  143. package/dist/commands/deploy.d.ts +24 -0
  144. package/dist/commands/deploy.js +145 -0
  145. package/dist/commands/diff.d.ts +18 -0
  146. package/dist/commands/diff.js +185 -0
  147. package/dist/commands/from/describe.d.ts +65 -0
  148. package/dist/commands/from/describe.js +173 -0
  149. package/dist/commands/from/har.d.ts +81 -0
  150. package/dist/commands/from/har.js +255 -0
  151. package/dist/commands/from/openapi.d.ts +105 -0
  152. package/dist/commands/from/openapi.js +302 -0
  153. package/dist/commands/from/postman.d.ts +51 -0
  154. package/dist/commands/from/postman.js +146 -0
  155. package/dist/commands/from/target-support.d.ts +11 -0
  156. package/dist/commands/from/target-support.js +33 -0
  157. package/dist/commands/from/url.d.ts +75 -0
  158. package/dist/commands/from/url.js +244 -0
  159. package/dist/commands/from/website.d.ts +75 -0
  160. package/dist/commands/from/website.js +284 -0
  161. package/dist/commands/lint.d.ts +24 -0
  162. package/dist/commands/lint.js +184 -0
  163. package/dist/commands/merge.d.ts +18 -0
  164. package/dist/commands/merge.js +161 -0
  165. package/dist/commands/publish.d.ts +27 -0
  166. package/dist/commands/publish.js +334 -0
  167. package/dist/commands/rescan.d.ts +40 -0
  168. package/dist/commands/rescan.js +255 -0
  169. package/dist/commands/update.d.ts +14 -0
  170. package/dist/commands/update.js +87 -0
  171. package/dist/commands/verify.d.ts +14 -0
  172. package/dist/commands/verify.js +71 -0
  173. package/dist/config/configurable-command.d.ts +13 -0
  174. package/dist/config/configurable-command.js +70 -0
  175. package/dist/config/mcpmake-config.d.ts +68 -0
  176. package/dist/config/mcpmake-config.js +207 -0
  177. package/dist/docs/cli.md +400 -0
  178. package/dist/docs/mcp-2026-07-28-migration.md +78 -0
  179. package/dist/docs/migrate-from-stainless.md +94 -0
  180. package/dist/docs/quickstart.md +166 -0
  181. package/dist/docs/show-hn.md +26 -0
  182. package/dist/docs/website-servers.md +169 -0
  183. package/dist/emitter/code-writer.d.ts +8 -0
  184. package/dist/emitter/code-writer.js +25 -0
  185. package/dist/emitter/index.d.ts +32 -0
  186. package/dist/emitter/index.js +280 -0
  187. package/dist/emitter/mcpb-bundler.d.ts +31 -0
  188. package/dist/emitter/mcpb-bundler.js +172 -0
  189. package/dist/emitter/project-scaffolder.d.ts +4 -0
  190. package/dist/emitter/project-scaffolder.js +89 -0
  191. package/dist/emitter/python-template-loader.d.ts +4 -0
  192. package/dist/emitter/python-template-loader.js +30 -0
  193. package/dist/emitter/python-templates/dockerfile.hbs +14 -0
  194. package/dist/emitter/python-templates/env.example.hbs +6 -0
  195. package/dist/emitter/python-templates/requirements.txt.hbs +4 -0
  196. package/dist/emitter/python-templates/server.py.hbs +77 -0
  197. package/dist/emitter/site-scaffolder.d.ts +13 -0
  198. package/dist/emitter/site-scaffolder.js +70 -0
  199. package/dist/emitter/site-template-loader.d.ts +5 -0
  200. package/dist/emitter/site-template-loader.js +47 -0
  201. package/dist/emitter/site-templates/browser-manager.ts.hbs +233 -0
  202. package/dist/emitter/site-templates/config.ts.hbs +28 -0
  203. package/dist/emitter/site-templates/dockerfile.hbs +31 -0
  204. package/dist/emitter/site-templates/env.example.hbs +19 -0
  205. package/dist/emitter/site-templates/package.json.hbs +26 -0
  206. package/dist/emitter/site-templates/server-main-http.ts.hbs +108 -0
  207. package/dist/emitter/site-templates/server-main.ts.hbs +23 -0
  208. package/dist/emitter/site-templates/tool-handler-action.ts.hbs +86 -0
  209. package/dist/emitter/site-templates/tool-handler-form.ts.hbs +116 -0
  210. package/dist/emitter/site-templates/tool-handler-lifecycle.ts.hbs +146 -0
  211. package/dist/emitter/site-templates/tool-index.ts.hbs +11 -0
  212. package/dist/emitter/template-loader.d.ts +1 -0
  213. package/dist/emitter/template-loader.js +27 -0
  214. package/dist/emitter/templates/auth-provider.ts.hbs +57 -0
  215. package/dist/emitter/templates/config.ts.hbs +63 -0
  216. package/dist/emitter/templates/discovery.ts.hbs +301 -0
  217. package/dist/emitter/templates/dockerfile.hbs +34 -0
  218. package/dist/emitter/templates/env.example.hbs +28 -0
  219. package/dist/emitter/templates/gitignore.hbs +5 -0
  220. package/dist/emitter/templates/http-executor.ts.hbs +117 -0
  221. package/dist/emitter/templates/oauth.ts.hbs +188 -0
  222. package/dist/emitter/templates/package.json.hbs +25 -0
  223. package/dist/emitter/templates/prompts.ts.hbs +22 -0
  224. package/dist/emitter/templates/readme.md.hbs +123 -0
  225. package/dist/emitter/templates/resources.ts.hbs +63 -0
  226. package/dist/emitter/templates/server-main-http.ts.hbs +407 -0
  227. package/dist/emitter/templates/server-main.ts.hbs +40 -0
  228. package/dist/emitter/templates/task-handlers.ts.hbs +189 -0
  229. package/dist/emitter/templates/task-manager.ts.hbs +139 -0
  230. package/dist/emitter/templates/task-sse.ts.hbs +105 -0
  231. package/dist/emitter/templates/tool-handler.ts.hbs +124 -0
  232. package/dist/emitter/templates/tool-index.ts.hbs +11 -0
  233. package/dist/emitter/templates/tool-test.ts.hbs +57 -0
  234. package/dist/emitter/templates/trace.ts.hbs +79 -0
  235. package/dist/emitter/templates/tsconfig.json.hbs +16 -0
  236. package/dist/emitter/templates/types.ts.hbs +5 -0
  237. package/dist/emitter/worker-template-loader.d.ts +5 -0
  238. package/dist/emitter/worker-template-loader.js +33 -0
  239. package/dist/emitter/worker-templates/config.ts.hbs +54 -0
  240. package/dist/emitter/worker-templates/dev-vars.example.hbs +10 -0
  241. package/dist/emitter/worker-templates/gitignore.hbs +6 -0
  242. package/dist/emitter/worker-templates/package.json.hbs +24 -0
  243. package/dist/emitter/worker-templates/readme.md.hbs +53 -0
  244. package/dist/emitter/worker-templates/server.test.ts.hbs +20 -0
  245. package/dist/emitter/worker-templates/tool-handler.ts.hbs +85 -0
  246. package/dist/emitter/worker-templates/tool-index.ts.hbs +28 -0
  247. package/dist/emitter/worker-templates/tsconfig.json.hbs +17 -0
  248. package/dist/emitter/worker-templates/worker.ts.hbs +242 -0
  249. package/dist/emitter/worker-templates/wrangler.toml.hbs +19 -0
  250. package/dist/generator/spec-generator.d.ts +6 -0
  251. package/dist/generator/spec-generator.js +50 -0
  252. package/dist/index.d.ts +1 -0
  253. package/dist/index.js +64 -0
  254. package/dist/parser/har-filter.d.ts +8 -0
  255. package/dist/parser/har-filter.js +71 -0
  256. package/dist/parser/har-loader.d.ts +2 -0
  257. package/dist/parser/har-loader.js +14 -0
  258. package/dist/parser/har-normalizer.d.ts +20 -0
  259. package/dist/parser/har-normalizer.js +78 -0
  260. package/dist/parser/index.d.ts +10 -0
  261. package/dist/parser/index.js +6 -0
  262. package/dist/parser/openapi-loader.d.ts +6 -0
  263. package/dist/parser/openapi-loader.js +308 -0
  264. package/dist/parser/operation-extractor.d.ts +13 -0
  265. package/dist/parser/operation-extractor.js +155 -0
  266. package/dist/parser/overlay-loader.d.ts +10 -0
  267. package/dist/parser/overlay-loader.js +184 -0
  268. package/dist/parser/postman-loader.d.ts +9 -0
  269. package/dist/parser/postman-loader.js +106 -0
  270. package/dist/parser/schema-converter.d.ts +12 -0
  271. package/dist/parser/schema-converter.js +117 -0
  272. package/dist/plugins/adapter.d.ts +40 -0
  273. package/dist/plugins/adapter.js +15 -0
  274. package/dist/plugins/loader.d.ts +25 -0
  275. package/dist/plugins/loader.js +58 -0
  276. package/dist/pricing.d.ts +55 -0
  277. package/dist/pricing.js +133 -0
  278. package/dist/providers/index.d.ts +15 -0
  279. package/dist/providers/index.js +56 -0
  280. package/dist/recorder/browser-recorder.d.ts +22 -0
  281. package/dist/recorder/browser-recorder.js +205 -0
  282. package/dist/registry/official-registry.d.ts +90 -0
  283. package/dist/registry/official-registry.js +129 -0
  284. package/dist/rescan/diff-engine.d.ts +5 -0
  285. package/dist/rescan/diff-engine.js +312 -0
  286. package/dist/rescan/index.d.ts +3 -0
  287. package/dist/rescan/index.js +2 -0
  288. package/dist/rescan/rescan-runner.d.ts +42 -0
  289. package/dist/rescan/rescan-runner.js +69 -0
  290. package/dist/rescan/rescan-scheduler.d.ts +41 -0
  291. package/dist/rescan/rescan-scheduler.js +179 -0
  292. package/dist/site-transformer/browser-tools.d.ts +10 -0
  293. package/dist/site-transformer/browser-tools.js +59 -0
  294. package/dist/site-transformer/index.d.ts +2 -0
  295. package/dist/site-transformer/index.js +2 -0
  296. package/dist/site-transformer/selector-healer.d.ts +8 -0
  297. package/dist/site-transformer/selector-healer.js +106 -0
  298. package/dist/site-transformer/tool-generator.d.ts +13 -0
  299. package/dist/site-transformer/tool-generator.js +245 -0
  300. package/dist/transformer/auth-detector.d.ts +13 -0
  301. package/dist/transformer/auth-detector.js +90 -0
  302. package/dist/transformer/catalog-builder.d.ts +18 -0
  303. package/dist/transformer/catalog-builder.js +56 -0
  304. package/dist/transformer/client-compat.d.ts +6 -0
  305. package/dist/transformer/client-compat.js +44 -0
  306. package/dist/transformer/har-clusterer.d.ts +9 -0
  307. package/dist/transformer/har-clusterer.js +27 -0
  308. package/dist/transformer/har-dedup.d.ts +10 -0
  309. package/dist/transformer/har-dedup.js +81 -0
  310. package/dist/transformer/har-schema-inferrer.d.ts +15 -0
  311. package/dist/transformer/har-schema-inferrer.js +90 -0
  312. package/dist/transformer/har-to-operations.d.ts +13 -0
  313. package/dist/transformer/har-to-operations.js +192 -0
  314. package/dist/transformer/index.d.ts +8 -0
  315. package/dist/transformer/index.js +6 -0
  316. package/dist/transformer/llm-namer.d.ts +6 -0
  317. package/dist/transformer/llm-namer.js +59 -0
  318. package/dist/transformer/naming.d.ts +4 -0
  319. package/dist/transformer/naming.js +30 -0
  320. package/dist/transformer/operation-filter.d.ts +13 -0
  321. package/dist/transformer/operation-filter.js +52 -0
  322. package/dist/transformer/resource-builder.d.ts +12 -0
  323. package/dist/transformer/resource-builder.js +80 -0
  324. package/dist/transformer/schema-merger.d.ts +14 -0
  325. package/dist/transformer/schema-merger.js +65 -0
  326. package/dist/transformer/tool-builder.d.ts +3 -0
  327. package/dist/transformer/tool-builder.js +114 -0
  328. package/dist/types/index.d.ts +131 -0
  329. package/dist/types/index.js +1 -0
  330. package/dist/types/site.d.ts +284 -0
  331. package/dist/types/site.js +8 -0
  332. package/dist/utils/fail.d.ts +48 -0
  333. package/dist/utils/fail.js +204 -0
  334. package/dist/utils/fs.d.ts +5 -0
  335. package/dist/utils/fs.js +28 -0
  336. package/dist/utils/interactive.d.ts +6 -0
  337. package/dist/utils/interactive.js +30 -0
  338. package/dist/utils/logger.d.ts +1 -0
  339. package/dist/utils/logger.js +2 -0
  340. package/dist/utils/sanitize.d.ts +28 -0
  341. package/dist/utils/sanitize.js +44 -0
  342. package/dist/utils/watcher.d.ts +11 -0
  343. package/dist/utils/watcher.js +36 -0
  344. package/package.json +65 -0
@@ -0,0 +1,155 @@
1
+ const HTTP_METHODS = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options'];
2
+ export function extractOperations(api) {
3
+ const operations = [];
4
+ const baseUrl = api.servers?.[0]?.url ?? '';
5
+ const securitySchemes = (api.components?.securitySchemes ?? {});
6
+ const globalSecurity = api.security ?? [];
7
+ for (const [path, pathItem] of Object.entries(api.paths ?? {})) {
8
+ if (!pathItem)
9
+ continue;
10
+ const item = pathItem;
11
+ const pathParams = (item.parameters ?? []);
12
+ for (const method of HTTP_METHODS) {
13
+ const operation = item[method];
14
+ if (!operation)
15
+ continue;
16
+ const opParams = (operation.parameters ?? []);
17
+ const mergedParams = mergeParameters(pathParams, opParams);
18
+ const operationId = operation.operationId ?? synthesizeOperationId(method, path);
19
+ const mcpExtensions = extractMcpExtensions(operation);
20
+ operations.push({
21
+ operationId,
22
+ method,
23
+ path,
24
+ summary: operation.summary,
25
+ description: operation.description,
26
+ tags: operation.tags ?? [],
27
+ parameters: mergedParams.map(toParameterDescriptor),
28
+ requestBody: extractRequestBody(operation.requestBody),
29
+ responses: extractResponses(operation.responses),
30
+ security: extractSecurity(operation.security ?? globalSecurity),
31
+ deprecated: operation.deprecated ?? false,
32
+ mcpExtensions,
33
+ });
34
+ }
35
+ }
36
+ return {
37
+ operations,
38
+ baseUrl,
39
+ securitySchemes,
40
+ info: {
41
+ title: api.info.title,
42
+ version: api.info.version,
43
+ description: api.info.description,
44
+ },
45
+ };
46
+ }
47
+ function mergeParameters(pathLevel, opLevel) {
48
+ const byKey = new Map();
49
+ for (const p of pathLevel)
50
+ byKey.set(`${p.in}:${p.name}`, p);
51
+ for (const p of opLevel)
52
+ byKey.set(`${p.in}:${p.name}`, p); // op-level overrides
53
+ return [...byKey.values()];
54
+ }
55
+ function toParameterDescriptor(p) {
56
+ return {
57
+ name: p.name,
58
+ in: p.in,
59
+ required: p.required ?? p.in === 'path',
60
+ description: p.description,
61
+ schema: (p.schema ?? { type: 'string' }),
62
+ };
63
+ }
64
+ function extractRequestBody(body) {
65
+ if (!body?.content)
66
+ return undefined;
67
+ const preferredTypes = [
68
+ 'application/json',
69
+ 'application/x-www-form-urlencoded',
70
+ 'multipart/form-data',
71
+ ];
72
+ let contentType;
73
+ for (const ct of preferredTypes) {
74
+ if (body.content[ct]) {
75
+ contentType = ct;
76
+ break;
77
+ }
78
+ }
79
+ if (!contentType) {
80
+ contentType = Object.keys(body.content)[0];
81
+ }
82
+ if (!contentType)
83
+ return undefined;
84
+ const mediaType = body.content[contentType];
85
+ return {
86
+ required: body.required ?? false,
87
+ description: body.description,
88
+ contentType,
89
+ schema: (mediaType.schema ?? {}),
90
+ };
91
+ }
92
+ function extractResponses(responses) {
93
+ const result = [];
94
+ for (const [statusCode, responseObj] of Object.entries(responses)) {
95
+ const response = responseObj;
96
+ let contentType;
97
+ let schema;
98
+ if (response.content) {
99
+ contentType = Object.keys(response.content)[0];
100
+ if (contentType) {
101
+ schema = response.content[contentType].schema;
102
+ }
103
+ }
104
+ result.push({
105
+ statusCode,
106
+ description: response.description,
107
+ contentType,
108
+ schema,
109
+ });
110
+ }
111
+ return result;
112
+ }
113
+ function extractSecurity(security) {
114
+ const result = [];
115
+ for (const req of security) {
116
+ for (const [schemeName, scopes] of Object.entries(req)) {
117
+ result.push({ schemeName, scopes });
118
+ }
119
+ }
120
+ return result;
121
+ }
122
+ function synthesizeOperationId(method, path) {
123
+ const cleaned = path.replace(/[{}]/g, '').replace(/\//g, '_').replace(/^_/, '').replace(/_$/, '');
124
+ return `${method}_${cleaned}`;
125
+ }
126
+ function extractMcpExtensions(operation) {
127
+ const name = operation['x-mcp-name'];
128
+ const description = operation['x-mcp-description'];
129
+ const emit = operation['x-mcp-emit'];
130
+ const scope = operation['x-mcp-scope'];
131
+ const deprecationMessage = operation['x-mcp-deprecation-message'];
132
+ const deprecationReplacement = operation['x-mcp-deprecation-replacement'];
133
+ const jqFilter = operation['x-mcp-jq-filter'];
134
+ const unknownValues = operation['x-mcp-unknown-values'];
135
+ if (!name &&
136
+ !description &&
137
+ !emit &&
138
+ !scope &&
139
+ !deprecationMessage &&
140
+ !deprecationReplacement &&
141
+ !jqFilter &&
142
+ !unknownValues) {
143
+ return undefined;
144
+ }
145
+ return {
146
+ name,
147
+ description,
148
+ emit,
149
+ scope,
150
+ deprecationMessage,
151
+ deprecationReplacement,
152
+ jqFilter,
153
+ unknownValues,
154
+ };
155
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Applies an OpenAPI Overlay document to a spec, modifying it in place.
3
+ *
4
+ * Supports simplified JSONPath-like targets:
5
+ * - `$.paths['/users'].get` exact path + method
6
+ * - `$.paths['/users'].get.x-foo` exact nested field
7
+ * - `$.paths['/admin/*']` wildcard match on path prefix
8
+ * - `$.components.schemas.User` schema-level targeting
9
+ */
10
+ export declare function applyOverlay(spec: Record<string, unknown>, overlayPath: string): Promise<void>;
@@ -0,0 +1,184 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { parse as parseYaml } from 'yaml';
3
+ import { logger } from '../utils/logger.js';
4
+ /**
5
+ * Applies an OpenAPI Overlay document to a spec, modifying it in place.
6
+ *
7
+ * Supports simplified JSONPath-like targets:
8
+ * - `$.paths['/users'].get` exact path + method
9
+ * - `$.paths['/users'].get.x-foo` exact nested field
10
+ * - `$.paths['/admin/*']` wildcard match on path prefix
11
+ * - `$.components.schemas.User` schema-level targeting
12
+ */
13
+ export async function applyOverlay(spec, overlayPath) {
14
+ const raw = await readFile(overlayPath, 'utf-8');
15
+ const overlay = parseOverlay(raw);
16
+ logger.info(`Applying overlay: ${overlayPath} (${overlay.actions.length} actions)`);
17
+ for (const action of overlay.actions) {
18
+ applyAction(spec, action);
19
+ }
20
+ }
21
+ function parseOverlay(content) {
22
+ let doc;
23
+ try {
24
+ doc = parseYaml(content);
25
+ }
26
+ catch {
27
+ doc = JSON.parse(content);
28
+ }
29
+ if (!doc.actions || !Array.isArray(doc.actions)) {
30
+ throw new Error('Overlay document must contain an "actions" array');
31
+ }
32
+ return doc;
33
+ }
34
+ function applyAction(spec, action) {
35
+ const segments = parseTarget(action.target);
36
+ if (segments.length === 0)
37
+ return;
38
+ // Handle wildcard matching
39
+ const wildcardIdx = segments.findIndex((s) => s.includes('*'));
40
+ if (wildcardIdx >= 0) {
41
+ applyWildcardAction(spec, segments, wildcardIdx, action);
42
+ }
43
+ else {
44
+ applySingleAction(spec, segments, action);
45
+ }
46
+ }
47
+ function applySingleAction(spec, segments, action) {
48
+ if (action.remove) {
49
+ // Navigate to parent, then delete the last key
50
+ const parent = navigateTo(spec, segments.slice(0, -1));
51
+ if (parent && typeof parent === 'object') {
52
+ const lastKey = segments[segments.length - 1];
53
+ delete parent[lastKey];
54
+ logger.info(`Overlay: removed ${segments.join('.')}`);
55
+ }
56
+ }
57
+ else if (action.update) {
58
+ const target = navigateTo(spec, segments);
59
+ if (target && typeof target === 'object') {
60
+ deepMerge(target, action.update);
61
+ logger.info(`Overlay: updated ${segments.join('.')}`);
62
+ }
63
+ else {
64
+ // If target doesn't exist, try creating it by setting on parent
65
+ const parent = navigateTo(spec, segments.slice(0, -1));
66
+ if (parent && typeof parent === 'object') {
67
+ const lastKey = segments[segments.length - 1];
68
+ parent[lastKey] = action.update;
69
+ logger.info(`Overlay: created ${segments.join('.')}`);
70
+ }
71
+ else {
72
+ logger.warn(`Overlay: target not found: ${segments.join('.')}`);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ function applyWildcardAction(spec, segments, wildcardIdx, action) {
78
+ // Navigate to parent of the wildcard segment
79
+ const parentSegments = segments.slice(0, wildcardIdx);
80
+ const parent = navigateTo(spec, parentSegments);
81
+ if (!parent || typeof parent !== 'object')
82
+ return;
83
+ const wildcardPattern = segments[wildcardIdx];
84
+ const remainingSegments = segments.slice(wildcardIdx + 1);
85
+ // Match keys against the wildcard pattern
86
+ const regex = wildcardToRegex(wildcardPattern);
87
+ const matchedKeys = Object.keys(parent).filter((key) => regex.test(key));
88
+ for (const key of matchedKeys) {
89
+ const fullSegments = [...parentSegments, key, ...remainingSegments];
90
+ applySingleAction(spec, fullSegments, action);
91
+ }
92
+ }
93
+ /**
94
+ * Parses a JSONPath-like target string into segments.
95
+ * `$.paths['/users'].get` -> ['paths', '/users', 'get']
96
+ */
97
+ function parseTarget(target) {
98
+ const segments = [];
99
+ let current = target;
100
+ // Remove leading $. or $
101
+ if (current.startsWith('$.')) {
102
+ current = current.slice(2);
103
+ }
104
+ else if (current.startsWith('$')) {
105
+ current = current.slice(1);
106
+ }
107
+ while (current.length > 0) {
108
+ if (current.startsWith('[')) {
109
+ // Bracket notation: ['key'] or ['/path']
110
+ const closeIdx = current.indexOf(']');
111
+ if (closeIdx < 0)
112
+ break;
113
+ let key = current.slice(1, closeIdx);
114
+ // Strip surrounding quotes
115
+ if ((key.startsWith("'") && key.endsWith("'")) ||
116
+ (key.startsWith('"') && key.endsWith('"'))) {
117
+ key = key.slice(1, -1);
118
+ }
119
+ segments.push(key);
120
+ current = current.slice(closeIdx + 1);
121
+ if (current.startsWith('.'))
122
+ current = current.slice(1);
123
+ }
124
+ else {
125
+ // Dot notation: get the next segment up to . or [
126
+ const dotIdx = current.indexOf('.');
127
+ const bracketIdx = current.indexOf('[');
128
+ let end;
129
+ if (dotIdx < 0 && bracketIdx < 0) {
130
+ end = current.length;
131
+ }
132
+ else if (dotIdx < 0) {
133
+ end = bracketIdx;
134
+ }
135
+ else if (bracketIdx < 0) {
136
+ end = dotIdx;
137
+ }
138
+ else {
139
+ end = Math.min(dotIdx, bracketIdx);
140
+ }
141
+ const segment = current.slice(0, end);
142
+ if (segment.length > 0) {
143
+ segments.push(segment);
144
+ }
145
+ current = current.slice(end);
146
+ if (current.startsWith('.'))
147
+ current = current.slice(1);
148
+ }
149
+ }
150
+ return segments;
151
+ }
152
+ function navigateTo(obj, segments) {
153
+ let current = obj;
154
+ for (const segment of segments) {
155
+ if (current === null || current === undefined || typeof current !== 'object') {
156
+ return undefined;
157
+ }
158
+ current = current[segment];
159
+ }
160
+ return current;
161
+ }
162
+ function deepMerge(target, source) {
163
+ for (const [key, value] of Object.entries(source)) {
164
+ if (typeof value === 'object' &&
165
+ value !== null &&
166
+ !Array.isArray(value) &&
167
+ typeof target[key] === 'object' &&
168
+ target[key] !== null &&
169
+ !Array.isArray(target[key])) {
170
+ deepMerge(target[key], value);
171
+ }
172
+ else {
173
+ target[key] = value;
174
+ }
175
+ }
176
+ }
177
+ function wildcardToRegex(pattern) {
178
+ const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, (match) => {
179
+ if (match === '*')
180
+ return '.*';
181
+ return `\\${match}`;
182
+ });
183
+ return new RegExp(`^${escaped}$`);
184
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Postman Collection v2.1 to HAR Entry converter.
3
+ * Converts Postman items into HAR entries that feed into the existing HAR pipeline.
4
+ */
5
+ import type { Entry } from 'har-format';
6
+ export declare function loadPostmanCollection(filePath: string): Promise<{
7
+ entries: Entry[];
8
+ collectionName: string;
9
+ }>;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Postman Collection v2.1 to HAR Entry converter.
3
+ * Converts Postman items into HAR entries that feed into the existing HAR pipeline.
4
+ */
5
+ import { readFile } from 'node:fs/promises';
6
+ export async function loadPostmanCollection(filePath) {
7
+ const raw = await readFile(filePath, 'utf-8');
8
+ const collection = JSON.parse(raw);
9
+ if (!collection.info || !collection.item) {
10
+ throw new Error('Invalid Postman collection: missing info or item fields');
11
+ }
12
+ // Resolve variables
13
+ const vars = new Map();
14
+ for (const v of collection.variable ?? []) {
15
+ vars.set(v.key, v.value);
16
+ }
17
+ const entries = [];
18
+ flattenItems(collection.item, entries, vars);
19
+ return { entries, collectionName: collection.info.name };
20
+ }
21
+ function flattenItems(items, entries, vars) {
22
+ for (const item of items) {
23
+ if (item.item) {
24
+ flattenItems(item.item, entries, vars);
25
+ }
26
+ if (item.request) {
27
+ const entry = convertToHarEntry(item, vars);
28
+ if (entry)
29
+ entries.push(entry);
30
+ }
31
+ }
32
+ }
33
+ function convertToHarEntry(item, vars) {
34
+ const req = item.request;
35
+ const url = resolveUrl(req.url, vars);
36
+ if (!url)
37
+ return null;
38
+ const method = req.method ?? 'GET';
39
+ const headers = (req.header ?? []).map((h) => ({
40
+ name: h.key,
41
+ value: resolveVars(h.value, vars),
42
+ }));
43
+ let parsedUrl;
44
+ try {
45
+ parsedUrl = new URL(url);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ const queryString = [...parsedUrl.searchParams.entries()].map(([name, value]) => ({
51
+ name,
52
+ value,
53
+ }));
54
+ const postData = req.body?.raw
55
+ ? {
56
+ mimeType: headers.find((h) => h.name.toLowerCase() === 'content-type')?.value ?? 'application/json',
57
+ text: resolveVars(req.body.raw, vars),
58
+ }
59
+ : undefined;
60
+ return {
61
+ startedDateTime: new Date().toISOString(),
62
+ time: 0,
63
+ request: {
64
+ method: method.toUpperCase(),
65
+ url,
66
+ httpVersion: 'HTTP/1.1',
67
+ headers,
68
+ queryString,
69
+ cookies: [],
70
+ headersSize: -1,
71
+ bodySize: postData?.text ? Buffer.byteLength(postData.text) : 0,
72
+ ...(postData ? { postData } : {}),
73
+ },
74
+ response: {
75
+ status: 200,
76
+ statusText: 'OK',
77
+ httpVersion: 'HTTP/1.1',
78
+ headers: [{ name: 'content-type', value: 'application/json' }],
79
+ cookies: [],
80
+ content: { size: 0, mimeType: 'application/json' },
81
+ redirectURL: '',
82
+ headersSize: -1,
83
+ bodySize: 0,
84
+ },
85
+ cache: {},
86
+ timings: { send: 0, wait: 0, receive: 0 },
87
+ };
88
+ }
89
+ function resolveUrl(url, vars) {
90
+ if (typeof url === 'string')
91
+ return resolveVars(url, vars);
92
+ if (url.raw)
93
+ return resolveVars(url.raw, vars);
94
+ const protocol = url.protocol ?? 'https';
95
+ const host = url.host?.join('.') ?? 'localhost';
96
+ const path = url.path?.join('/') ?? '';
97
+ const base = `${protocol}://${host}/${path}`;
98
+ const parsed = new URL(resolveVars(base, vars));
99
+ for (const q of url.query ?? []) {
100
+ parsed.searchParams.set(q.key, resolveVars(q.value, vars));
101
+ }
102
+ return parsed.toString();
103
+ }
104
+ function resolveVars(str, vars) {
105
+ return str.replace(/\{\{(\w+)\}\}/g, (_, key) => vars.get(key) ?? `{{${key}}}`);
106
+ }
@@ -0,0 +1,12 @@
1
+ import type { OperationDescriptor, JsonSchema } from '../types/index.js';
2
+ /**
3
+ * Wrap array root schemas in an object for MCP outputSchema compatibility.
4
+ * MCP outputSchema requires an object root, not a bare array.
5
+ */
6
+ export declare function wrapArrayRoot(schema: JsonSchema): JsonSchema;
7
+ export declare function jsonSchemaToZodCode(schema: JsonSchema): string;
8
+ /**
9
+ * Convert a schema to Zod code, wrapping array roots for outputSchema.
10
+ */
11
+ export declare function jsonSchemaToOutputZodCode(schema: JsonSchema): string;
12
+ export declare function buildOperationInputSchema(op: OperationDescriptor): string;
@@ -0,0 +1,117 @@
1
+ import { jsonSchemaToZod } from 'json-schema-to-zod';
2
+ import { sanitizeIdentifier } from '../utils/sanitize.js';
3
+ import { logger } from '../utils/logger.js';
4
+ const MAX_SCHEMA_DEPTH = 15;
5
+ /**
6
+ * Pre-process a JSON Schema to simplify common patterns before Zod conversion.
7
+ * Handles: single-item allOf (unwrap), nullable types, circular refs, array root wrapping.
8
+ */
9
+ function simplifySchema(schema, depth = 0, seen = new WeakSet()) {
10
+ if (!schema || typeof schema !== 'object')
11
+ return schema;
12
+ // Circular reference detection
13
+ if (seen.has(schema)) {
14
+ return { type: 'object', description: 'Truncated: circular reference' };
15
+ }
16
+ seen.add(schema);
17
+ // Depth limit
18
+ if (depth > MAX_SCHEMA_DEPTH) {
19
+ return { type: 'object', description: 'Truncated: max depth exceeded' };
20
+ }
21
+ // Unwrap single-item allOf (common in OpenAPI after $ref resolution)
22
+ if (schema.allOf && Array.isArray(schema.allOf) && schema.allOf.length === 1) {
23
+ const inner = schema.allOf[0];
24
+ const { allOf, ...rest } = schema;
25
+ return simplifySchema({ ...inner, ...rest }, depth + 1, seen);
26
+ }
27
+ // Handle nullable shorthand: { type: "string", nullable: true }
28
+ if (schema.nullable === true && schema.type) {
29
+ const { nullable, ...rest } = schema;
30
+ return { oneOf: [rest, { type: 'null' }] };
31
+ }
32
+ // Recursively simplify nested schemas
33
+ if (schema.properties && typeof schema.properties === 'object') {
34
+ const simplified = {};
35
+ for (const [key, value] of Object.entries(schema.properties)) {
36
+ simplified[key] = simplifySchema(value, depth + 1, seen);
37
+ }
38
+ return { ...schema, properties: simplified };
39
+ }
40
+ if (schema.items && typeof schema.items === 'object') {
41
+ return { ...schema, items: simplifySchema(schema.items, depth + 1, seen) };
42
+ }
43
+ return schema;
44
+ }
45
+ /**
46
+ * Wrap array root schemas in an object for MCP outputSchema compatibility.
47
+ * MCP outputSchema requires an object root, not a bare array.
48
+ */
49
+ export function wrapArrayRoot(schema) {
50
+ if (schema.type === 'array') {
51
+ return {
52
+ type: 'object',
53
+ properties: { items: schema },
54
+ required: ['items'],
55
+ };
56
+ }
57
+ return schema;
58
+ }
59
+ export function jsonSchemaToZodCode(schema) {
60
+ try {
61
+ const simplified = simplifySchema(schema);
62
+ return jsonSchemaToZod(simplified, { module: 'none' });
63
+ }
64
+ catch {
65
+ return 'z.any()';
66
+ }
67
+ }
68
+ /**
69
+ * Convert a schema to Zod code, wrapping array roots for outputSchema.
70
+ */
71
+ export function jsonSchemaToOutputZodCode(schema) {
72
+ return jsonSchemaToZodCode(wrapArrayRoot(schema));
73
+ }
74
+ export function buildOperationInputSchema(op) {
75
+ const fields = [];
76
+ const seenNames = new Set();
77
+ for (const param of op.parameters) {
78
+ if (param.in === 'header')
79
+ continue;
80
+ let safeName = sanitizeIdentifier(param.name);
81
+ // Parameter collision resolution
82
+ if (seenNames.has(safeName)) {
83
+ safeName = `${safeName}_${param.in}`;
84
+ logger.warn(`Parameter name collision: "${param.name}" renamed to "${safeName}"`);
85
+ }
86
+ seenNames.add(safeName);
87
+ const zodType = jsonSchemaToZodCode(param.schema);
88
+ let field = zodType;
89
+ if (!param.required) {
90
+ field = `${field}.optional()`;
91
+ }
92
+ if (param.description) {
93
+ field = `${field}.describe(${JSON.stringify(param.description)})`;
94
+ }
95
+ fields.push(` ${safeName}: ${field}`);
96
+ }
97
+ if (op.requestBody) {
98
+ let bodyName = 'body';
99
+ if (seenNames.has(bodyName)) {
100
+ bodyName = 'requestBody';
101
+ }
102
+ seenNames.add(bodyName);
103
+ const bodyZod = jsonSchemaToZodCode(op.requestBody.schema);
104
+ let field = bodyZod;
105
+ if (!op.requestBody.required) {
106
+ field = `${field}.optional()`;
107
+ }
108
+ if (op.requestBody.description) {
109
+ field = `${field}.describe(${JSON.stringify(op.requestBody.description)})`;
110
+ }
111
+ fields.push(` ${bodyName}: ${field}`);
112
+ }
113
+ if (fields.length === 0) {
114
+ return 'z.object({})';
115
+ }
116
+ return `z.object({\n${fields.join(',\n')},\n})`;
117
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Plugin adapter interface for mcpmake.
3
+ *
4
+ * Third-party packages implement this interface to add new input formats.
5
+ * Adapters convert their source format into OperationDescriptor[] —
6
+ * the shared intermediate format that feeds into the tool builder and emitter.
7
+ *
8
+ * Example:
9
+ * export default class GraphQLAdapter implements McpmakeAdapter {
10
+ * name = 'graphql';
11
+ * description = 'Generate from GraphQL schema';
12
+ * async parse(input: string) { ... return operations; }
13
+ * }
14
+ */
15
+ import type { OperationDescriptor, AuthScheme, EnvVarDescriptor } from '../types/index.js';
16
+ export interface AdapterResult {
17
+ operations: OperationDescriptor[];
18
+ baseUrl: string;
19
+ authSchemes: AuthScheme[];
20
+ envVars: EnvVarDescriptor[];
21
+ info: {
22
+ title: string;
23
+ version: string;
24
+ description?: string;
25
+ };
26
+ }
27
+ export interface McpmakeAdapter {
28
+ /** Unique adapter name (used as CLI subcommand: `mcpmake from <name>`) */
29
+ name: string;
30
+ /** Human-readable description */
31
+ description: string;
32
+ /** File extensions this adapter handles (e.g., ['.graphql', '.gql']) */
33
+ extensions?: string[];
34
+ /**
35
+ * Parse the input source and return operations.
36
+ * @param input — file path, URL, or other source identifier
37
+ * @param options — adapter-specific options from CLI args
38
+ */
39
+ parse(input: string, options?: Record<string, unknown>): Promise<AdapterResult>;
40
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Plugin adapter interface for mcpmake.
3
+ *
4
+ * Third-party packages implement this interface to add new input formats.
5
+ * Adapters convert their source format into OperationDescriptor[] —
6
+ * the shared intermediate format that feeds into the tool builder and emitter.
7
+ *
8
+ * Example:
9
+ * export default class GraphQLAdapter implements McpmakeAdapter {
10
+ * name = 'graphql';
11
+ * description = 'Generate from GraphQL schema';
12
+ * async parse(input: string) { ... return operations; }
13
+ * }
14
+ */
15
+ export {};
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Plugin loader — discovers and loads McpmakeAdapter implementations.
3
+ *
4
+ * Plugins are loaded from:
5
+ * 1. Built-in adapters (openapi, har, url, describe)
6
+ * 2. npm packages named `mcpmake-adapter-*`
7
+ * 3. Local files specified via --adapter flag
8
+ */
9
+ import type { McpmakeAdapter } from './adapter.js';
10
+ /**
11
+ * Register a plugin adapter.
12
+ */
13
+ export declare function registerAdapter(adapter: McpmakeAdapter): void;
14
+ /**
15
+ * Get a registered adapter by name.
16
+ */
17
+ export declare function getAdapter(name: string): McpmakeAdapter | undefined;
18
+ /**
19
+ * List all registered adapters.
20
+ */
21
+ export declare function listAdapters(): McpmakeAdapter[];
22
+ /**
23
+ * Load an adapter from a file path or npm package name.
24
+ */
25
+ export declare function loadAdapterFromPath(pathOrPackage: string): Promise<McpmakeAdapter>;