mcp4openapi 0.2.7 → 0.3.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 (317) hide show
  1. package/README.md +147 -63
  2. package/dist/scripts/validate-profile.js +3 -3
  3. package/dist/scripts/validate-profile.js.map +1 -1
  4. package/dist/src/{oauth-provider.d.ts → auth/oauth-provider.d.ts} +7 -2
  5. package/dist/src/auth/oauth-provider.d.ts.map +1 -0
  6. package/dist/src/{oauth-provider.js → auth/oauth-provider.js} +30 -2
  7. package/dist/src/auth/oauth-provider.js.map +1 -0
  8. package/dist/src/core/cli-config.d.ts +9 -0
  9. package/dist/src/core/cli-config.d.ts.map +1 -0
  10. package/dist/src/core/cli-config.js +124 -0
  11. package/dist/src/core/cli-config.js.map +1 -0
  12. package/dist/src/{constants.d.ts → core/constants.d.ts} +1 -0
  13. package/dist/src/core/constants.d.ts.map +1 -0
  14. package/dist/src/{constants.js → core/constants.js} +1 -0
  15. package/dist/src/core/constants.js.map +1 -0
  16. package/dist/src/{errors.d.ts → core/errors.d.ts} +6 -0
  17. package/dist/src/core/errors.d.ts.map +1 -0
  18. package/dist/src/{errors.js → core/errors.js} +15 -6
  19. package/dist/src/core/errors.js.map +1 -0
  20. package/dist/src/core/filtering.d.ts +19 -0
  21. package/dist/src/core/filtering.d.ts.map +1 -0
  22. package/dist/src/core/filtering.js +292 -0
  23. package/dist/src/core/filtering.js.map +1 -0
  24. package/dist/src/core/index.d.ts +26 -0
  25. package/dist/src/core/index.d.ts.map +1 -0
  26. package/dist/src/core/index.js +275 -0
  27. package/dist/src/core/index.js.map +1 -0
  28. package/dist/src/core/lib.d.ts +8 -0
  29. package/dist/src/core/lib.d.ts.map +1 -0
  30. package/dist/src/core/lib.js +7 -0
  31. package/dist/src/core/lib.js.map +1 -0
  32. package/dist/src/{logger.d.ts → core/logger.d.ts} +6 -13
  33. package/dist/src/core/logger.d.ts.map +1 -0
  34. package/dist/src/core/logger.js +197 -0
  35. package/dist/src/core/logger.js.map +1 -0
  36. package/dist/src/{metrics.d.ts → core/metrics.d.ts} +11 -0
  37. package/dist/src/core/metrics.d.ts.map +1 -0
  38. package/dist/src/{metrics.js → core/metrics.js} +61 -0
  39. package/dist/src/core/metrics.js.map +1 -0
  40. package/dist/src/core/naming-warnings.d.ts.map +1 -0
  41. package/dist/src/{naming-warnings.js → core/naming-warnings.js} +6 -6
  42. package/dist/src/core/naming-warnings.js.map +1 -0
  43. package/dist/src/core/naming.d.ts.map +1 -0
  44. package/dist/src/core/naming.js.map +1 -0
  45. package/dist/src/generated-schemas.d.ts +281 -79
  46. package/dist/src/generated-schemas.d.ts.map +1 -1
  47. package/dist/src/generated-schemas.js +17 -3
  48. package/dist/src/generated-schemas.js.map +1 -1
  49. package/dist/src/index.d.ts +1 -6
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +1 -156
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/lib.d.ts +1 -7
  54. package/dist/src/lib.d.ts.map +1 -1
  55. package/dist/src/lib.js +1 -6
  56. package/dist/src/lib.js.map +1 -1
  57. package/dist/src/mcp/mcp-server-manager.d.ts +20 -0
  58. package/dist/src/mcp/mcp-server-manager.d.ts.map +1 -0
  59. package/dist/src/mcp/mcp-server-manager.js +38 -0
  60. package/dist/src/mcp/mcp-server-manager.js.map +1 -0
  61. package/dist/src/{mcp-server.d.ts → mcp/mcp-server.d.ts} +43 -3
  62. package/dist/src/mcp/mcp-server.d.ts.map +1 -0
  63. package/dist/src/{mcp-server.js → mcp/mcp-server.js} +639 -123
  64. package/dist/src/mcp/mcp-server.js.map +1 -0
  65. package/dist/src/{openapi-parser.d.ts → openapi/openapi-parser.d.ts} +1 -1
  66. package/dist/src/openapi/openapi-parser.d.ts.map +1 -0
  67. package/dist/src/{openapi-parser.js → openapi/openapi-parser.js} +2 -2
  68. package/dist/src/openapi/openapi-parser.js.map +1 -0
  69. package/dist/src/{profile-loader.d.ts → profile/profile-loader.d.ts} +3 -2
  70. package/dist/src/profile/profile-loader.d.ts.map +1 -0
  71. package/dist/src/{profile-loader.js → profile/profile-loader.js} +17 -6
  72. package/dist/src/profile/profile-loader.js.map +1 -0
  73. package/dist/src/profile/profile-registry.d.ts +18 -0
  74. package/dist/src/profile/profile-registry.d.ts.map +1 -0
  75. package/dist/src/profile/profile-registry.js +26 -0
  76. package/dist/src/profile/profile-registry.js.map +1 -0
  77. package/dist/src/profile/profile-resolver.d.ts +25 -0
  78. package/dist/src/profile/profile-resolver.d.ts.map +1 -0
  79. package/dist/src/profile/profile-resolver.js +204 -0
  80. package/dist/src/profile/profile-resolver.js.map +1 -0
  81. package/dist/src/profile/startup-profile.d.ts +17 -0
  82. package/dist/src/profile/startup-profile.d.ts.map +1 -0
  83. package/dist/src/profile/startup-profile.js +30 -0
  84. package/dist/src/profile/startup-profile.js.map +1 -0
  85. package/dist/src/profile/startup-validation.d.ts +11 -0
  86. package/dist/src/profile/startup-validation.d.ts.map +1 -0
  87. package/dist/src/profile/startup-validation.js +21 -0
  88. package/dist/src/profile/startup-validation.js.map +1 -0
  89. package/dist/src/testing/dynamic-mock-server.d.ts +24 -0
  90. package/dist/src/testing/dynamic-mock-server.d.ts.map +1 -0
  91. package/dist/src/testing/dynamic-mock-server.js +138 -0
  92. package/dist/src/testing/dynamic-mock-server.js.map +1 -0
  93. package/dist/src/testing/listen-support.d.ts +3 -0
  94. package/dist/src/testing/listen-support.d.ts.map +1 -0
  95. package/dist/src/testing/listen-support.js +50 -0
  96. package/dist/src/testing/listen-support.js.map +1 -0
  97. package/dist/src/testing/request-assertions.d.ts +5 -0
  98. package/dist/src/testing/request-assertions.d.ts.map +1 -0
  99. package/dist/src/testing/request-assertions.js +165 -0
  100. package/dist/src/testing/request-assertions.js.map +1 -0
  101. package/dist/src/testing/template-utils.d.ts +10 -0
  102. package/dist/src/testing/template-utils.d.ts.map +1 -0
  103. package/dist/src/testing/template-utils.js +72 -0
  104. package/dist/src/testing/template-utils.js.map +1 -0
  105. package/dist/src/testing/test-http-utils.d.ts +1 -1
  106. package/dist/src/testing/test-http-utils.d.ts.map +1 -1
  107. package/dist/src/testing/test-http-utils.js +1 -1
  108. package/dist/src/testing/test-http-utils.js.map +1 -1
  109. package/dist/src/testing/test-loader.d.ts +6 -0
  110. package/dist/src/testing/test-loader.d.ts.map +1 -0
  111. package/dist/src/testing/test-loader.js +212 -0
  112. package/dist/src/testing/test-loader.js.map +1 -0
  113. package/dist/src/testing/test-schema.d.ts +1270 -0
  114. package/dist/src/testing/test-schema.d.ts.map +1 -0
  115. package/dist/src/testing/test-schema.js +76 -0
  116. package/dist/src/testing/test-schema.js.map +1 -0
  117. package/dist/src/tool-filter/compat.d.ts +49 -0
  118. package/dist/src/tool-filter/compat.d.ts.map +1 -0
  119. package/dist/src/tool-filter/compat.js +72 -0
  120. package/dist/src/tool-filter/compat.js.map +1 -0
  121. package/dist/src/tool-filter/config/env-config-parser.d.ts +38 -0
  122. package/dist/src/tool-filter/config/env-config-parser.d.ts.map +1 -0
  123. package/dist/src/tool-filter/config/env-config-parser.js +103 -0
  124. package/dist/src/tool-filter/config/env-config-parser.js.map +1 -0
  125. package/dist/src/tool-filter/config/header-config-parser.d.ts +37 -0
  126. package/dist/src/tool-filter/config/header-config-parser.d.ts.map +1 -0
  127. package/dist/src/tool-filter/config/header-config-parser.js +118 -0
  128. package/dist/src/tool-filter/config/header-config-parser.js.map +1 -0
  129. package/dist/src/tool-filter/errors.d.ts +18 -0
  130. package/dist/src/tool-filter/errors.d.ts.map +1 -0
  131. package/dist/src/tool-filter/errors.js +21 -0
  132. package/dist/src/tool-filter/errors.js.map +1 -0
  133. package/dist/src/tool-filter/filter/filter-engine.d.ts +45 -0
  134. package/dist/src/tool-filter/filter/filter-engine.d.ts.map +1 -0
  135. package/dist/src/tool-filter/filter/filter-engine.js +94 -0
  136. package/dist/src/tool-filter/filter/filter-engine.js.map +1 -0
  137. package/dist/src/tool-filter/filter/filter-rules.d.ts +44 -0
  138. package/dist/src/tool-filter/filter/filter-rules.d.ts.map +1 -0
  139. package/dist/src/tool-filter/filter/filter-rules.js +72 -0
  140. package/dist/src/tool-filter/filter/filter-rules.js.map +1 -0
  141. package/dist/src/tool-filter/filter/global-tool-filter.d.ts +40 -0
  142. package/dist/src/tool-filter/filter/global-tool-filter.d.ts.map +1 -0
  143. package/dist/src/tool-filter/filter/global-tool-filter.js +92 -0
  144. package/dist/src/tool-filter/filter/global-tool-filter.js.map +1 -0
  145. package/dist/src/tool-filter/filter/session-tool-filter.d.ts +29 -0
  146. package/dist/src/tool-filter/filter/session-tool-filter.d.ts.map +1 -0
  147. package/dist/src/tool-filter/filter/session-tool-filter.js +69 -0
  148. package/dist/src/tool-filter/filter/session-tool-filter.js.map +1 -0
  149. package/dist/src/tool-filter/index.d.ts +25 -0
  150. package/dist/src/tool-filter/index.d.ts.map +1 -0
  151. package/dist/src/tool-filter/index.js +30 -0
  152. package/dist/src/tool-filter/index.js.map +1 -0
  153. package/dist/src/tool-filter/integration/tool-filter-service.d.ts +44 -0
  154. package/dist/src/tool-filter/integration/tool-filter-service.d.ts.map +1 -0
  155. package/dist/src/tool-filter/integration/tool-filter-service.js +68 -0
  156. package/dist/src/tool-filter/integration/tool-filter-service.js.map +1 -0
  157. package/dist/src/tool-filter/operation/operation-classifier.d.ts +20 -0
  158. package/dist/src/tool-filter/operation/operation-classifier.d.ts.map +1 -0
  159. package/dist/src/tool-filter/operation/operation-classifier.js +26 -0
  160. package/dist/src/tool-filter/operation/operation-classifier.js.map +1 -0
  161. package/dist/src/tool-filter/operation/operation-detector.d.ts +30 -0
  162. package/dist/src/tool-filter/operation/operation-detector.d.ts.map +1 -0
  163. package/dist/src/tool-filter/operation/operation-detector.js +96 -0
  164. package/dist/src/tool-filter/operation/operation-detector.js.map +1 -0
  165. package/dist/src/tool-filter/operation/operation-resolver.d.ts +22 -0
  166. package/dist/src/tool-filter/operation/operation-resolver.d.ts.map +1 -0
  167. package/dist/src/tool-filter/operation/operation-resolver.js +32 -0
  168. package/dist/src/tool-filter/operation/operation-resolver.js.map +1 -0
  169. package/dist/src/tool-filter/regex/regex-compiler.d.ts +22 -0
  170. package/dist/src/tool-filter/regex/regex-compiler.d.ts.map +1 -0
  171. package/dist/src/tool-filter/regex/regex-compiler.js +56 -0
  172. package/dist/src/tool-filter/regex/regex-compiler.js.map +1 -0
  173. package/dist/src/tool-filter/regex/regex-validator.d.ts +24 -0
  174. package/dist/src/tool-filter/regex/regex-validator.d.ts.map +1 -0
  175. package/dist/src/tool-filter/regex/regex-validator.js +58 -0
  176. package/dist/src/tool-filter/regex/regex-validator.js.map +1 -0
  177. package/dist/src/tool-filter/types.d.ts +92 -0
  178. package/dist/src/tool-filter/types.d.ts.map +1 -0
  179. package/dist/src/tool-filter/types.js +5 -0
  180. package/dist/src/tool-filter/types.js.map +1 -0
  181. package/dist/src/tool-filter/utils.d.ts +11 -0
  182. package/dist/src/tool-filter/utils.d.ts.map +1 -0
  183. package/dist/src/tool-filter/utils.js +13 -0
  184. package/dist/src/tool-filter/utils.js.map +1 -0
  185. package/dist/src/{composite-executor.d.ts → tooling/composite-executor.d.ts} +3 -3
  186. package/dist/src/tooling/composite-executor.d.ts.map +1 -0
  187. package/dist/src/{composite-executor.js → tooling/composite-executor.js} +1 -1
  188. package/dist/src/tooling/composite-executor.js.map +1 -0
  189. package/dist/src/{dag-executor.d.ts → tooling/dag-executor.d.ts} +1 -1
  190. package/dist/src/tooling/dag-executor.d.ts.map +1 -0
  191. package/dist/src/tooling/dag-executor.js.map +1 -0
  192. package/dist/src/{proxy-executor.d.ts → tooling/proxy-executor.d.ts} +19 -4
  193. package/dist/src/tooling/proxy-executor.d.ts.map +1 -0
  194. package/dist/src/tooling/proxy-executor.js +497 -0
  195. package/dist/src/tooling/proxy-executor.js.map +1 -0
  196. package/dist/src/{tool-generator.d.ts → tooling/tool-generator.d.ts} +4 -3
  197. package/dist/src/tooling/tool-generator.d.ts.map +1 -0
  198. package/dist/src/{tool-generator.js → tooling/tool-generator.js} +23 -7
  199. package/dist/src/tooling/tool-generator.js.map +1 -0
  200. package/dist/src/{http-client-factory.d.ts → transport/http-client-factory.d.ts} +4 -1
  201. package/dist/src/transport/http-client-factory.d.ts.map +1 -0
  202. package/dist/src/{http-client-factory.js → transport/http-client-factory.js} +13 -3
  203. package/dist/src/transport/http-client-factory.js.map +1 -0
  204. package/dist/src/transport/http-transport-config.d.ts +6 -0
  205. package/dist/src/transport/http-transport-config.d.ts.map +1 -0
  206. package/dist/src/transport/http-transport-config.js +62 -0
  207. package/dist/src/transport/http-transport-config.js.map +1 -0
  208. package/dist/src/{http-transport.d.ts → transport/http-transport.d.ts} +72 -14
  209. package/dist/src/transport/http-transport.d.ts.map +1 -0
  210. package/dist/src/transport/http-transport.js +2522 -0
  211. package/dist/src/transport/http-transport.js.map +1 -0
  212. package/dist/src/{interceptors.d.ts → transport/interceptors.d.ts} +6 -2
  213. package/dist/src/transport/interceptors.d.ts.map +1 -0
  214. package/dist/src/{interceptors.js → transport/interceptors.js} +77 -46
  215. package/dist/src/transport/interceptors.js.map +1 -0
  216. package/dist/src/types/http-transport.d.ts +25 -0
  217. package/dist/src/types/http-transport.d.ts.map +1 -1
  218. package/dist/src/types/profile.d.ts +31 -1
  219. package/dist/src/types/profile.d.ts.map +1 -1
  220. package/dist/src/validation/argument-normalizer.d.ts +6 -0
  221. package/dist/src/validation/argument-normalizer.d.ts.map +1 -0
  222. package/dist/src/validation/argument-normalizer.js +70 -0
  223. package/dist/src/validation/argument-normalizer.js.map +1 -0
  224. package/dist/src/validation/jsonrpc-validator.d.ts.map +1 -0
  225. package/dist/src/validation/jsonrpc-validator.js.map +1 -0
  226. package/dist/src/{schema-validator.d.ts → validation/schema-validator.d.ts} +2 -2
  227. package/dist/src/validation/schema-validator.d.ts.map +1 -0
  228. package/dist/src/validation/schema-validator.js.map +1 -0
  229. package/dist/src/validation/validation-utils.d.ts.map +1 -0
  230. package/dist/src/validation/validation-utils.js.map +1 -0
  231. package/package.json +9 -3
  232. package/profile-schema.json +75 -3
  233. package/profiles/gitlab/developer-profile-oauth.json +1520 -0
  234. package/profiles/gitlab/developer-profile-oauth.test.json +3432 -0
  235. package/profiles/gitlab/openapi.yaml +6891 -0
  236. package/profiles/n8n/openapi.yaml +2441 -0
  237. package/profiles/n8n/profile-optimized.json +965 -0
  238. package/profiles/n8n/profile-optimized.test.json +1078 -0
  239. package/profiles/n8n/profile.json +1033 -0
  240. package/profiles/n8n/profile.test.json +983 -0
  241. package/profiles/n8n-nodes/openapi.yaml +24 -0
  242. package/profiles/n8n-nodes/profile-nodes.json +44 -0
  243. package/profiles/n8n-nodes/profile-nodes.test.json +91 -0
  244. package/profiles/semgrep/openapi.yaml +4706 -0
  245. package/profiles/semgrep/profile.json +692 -0
  246. package/profiles/semgrep/profile.test.json +471 -0
  247. package/profiles/youtrack/openapi.json +16976 -0
  248. package/profiles/youtrack/profile.json +608 -0
  249. package/profiles/youtrack/profile.test.json +1926 -0
  250. package/dist/src/composite-executor.d.ts.map +0 -1
  251. package/dist/src/composite-executor.js.map +0 -1
  252. package/dist/src/constants.d.ts.map +0 -1
  253. package/dist/src/constants.js.map +0 -1
  254. package/dist/src/dag-executor.d.ts.map +0 -1
  255. package/dist/src/dag-executor.js.map +0 -1
  256. package/dist/src/errors.d.ts.map +0 -1
  257. package/dist/src/errors.js.map +0 -1
  258. package/dist/src/http-client-factory.d.ts.map +0 -1
  259. package/dist/src/http-client-factory.js.map +0 -1
  260. package/dist/src/http-transport.d.ts.map +0 -1
  261. package/dist/src/http-transport.js +0 -1826
  262. package/dist/src/http-transport.js.map +0 -1
  263. package/dist/src/interceptors.d.ts.map +0 -1
  264. package/dist/src/interceptors.js.map +0 -1
  265. package/dist/src/jsonrpc-validator.d.ts.map +0 -1
  266. package/dist/src/jsonrpc-validator.js.map +0 -1
  267. package/dist/src/logger.d.ts.map +0 -1
  268. package/dist/src/logger.js +0 -177
  269. package/dist/src/logger.js.map +0 -1
  270. package/dist/src/mcp-server.d.ts.map +0 -1
  271. package/dist/src/mcp-server.js.map +0 -1
  272. package/dist/src/metrics.d.ts.map +0 -1
  273. package/dist/src/metrics.js.map +0 -1
  274. package/dist/src/naming-warnings.d.ts.map +0 -1
  275. package/dist/src/naming-warnings.js.map +0 -1
  276. package/dist/src/naming.d.ts.map +0 -1
  277. package/dist/src/naming.js.map +0 -1
  278. package/dist/src/oauth-provider.d.ts.map +0 -1
  279. package/dist/src/oauth-provider.js.map +0 -1
  280. package/dist/src/openapi-parser.d.ts.map +0 -1
  281. package/dist/src/openapi-parser.js.map +0 -1
  282. package/dist/src/profile-loader.d.ts.map +0 -1
  283. package/dist/src/profile-loader.js.map +0 -1
  284. package/dist/src/proxy-executor.d.ts.map +0 -1
  285. package/dist/src/proxy-executor.js +0 -240
  286. package/dist/src/proxy-executor.js.map +0 -1
  287. package/dist/src/schema-validator.d.ts.map +0 -1
  288. package/dist/src/schema-validator.js.map +0 -1
  289. package/dist/src/testing/fixtures.d.ts +0 -684
  290. package/dist/src/testing/fixtures.d.ts.map +0 -1
  291. package/dist/src/testing/fixtures.js +0 -528
  292. package/dist/src/testing/fixtures.js.map +0 -1
  293. package/dist/src/testing/mock-gitlab-server.d.ts +0 -43
  294. package/dist/src/testing/mock-gitlab-server.d.ts.map +0 -1
  295. package/dist/src/testing/mock-gitlab-server.js +0 -1026
  296. package/dist/src/testing/mock-gitlab-server.js.map +0 -1
  297. package/dist/src/testing/mock-semgrep-server.d.ts +0 -32
  298. package/dist/src/testing/mock-semgrep-server.d.ts.map +0 -1
  299. package/dist/src/testing/mock-semgrep-server.js +0 -213
  300. package/dist/src/testing/mock-semgrep-server.js.map +0 -1
  301. package/dist/src/testing/mock-youtrack-server.d.ts +0 -11
  302. package/dist/src/testing/mock-youtrack-server.d.ts.map +0 -1
  303. package/dist/src/testing/mock-youtrack-server.js +0 -138
  304. package/dist/src/testing/mock-youtrack-server.js.map +0 -1
  305. package/dist/src/tool-generator.d.ts.map +0 -1
  306. package/dist/src/tool-generator.js.map +0 -1
  307. package/dist/src/validation-utils.d.ts.map +0 -1
  308. package/dist/src/validation-utils.js.map +0 -1
  309. /package/dist/src/{naming-warnings.d.ts → core/naming-warnings.d.ts} +0 -0
  310. /package/dist/src/{naming.d.ts → core/naming.d.ts} +0 -0
  311. /package/dist/src/{naming.js → core/naming.js} +0 -0
  312. /package/dist/src/{dag-executor.js → tooling/dag-executor.js} +0 -0
  313. /package/dist/src/{jsonrpc-validator.d.ts → validation/jsonrpc-validator.d.ts} +0 -0
  314. /package/dist/src/{jsonrpc-validator.js → validation/jsonrpc-validator.js} +0 -0
  315. /package/dist/src/{schema-validator.js → validation/schema-validator.js} +0 -0
  316. /package/dist/src/{validation-utils.d.ts → validation/validation-utils.d.ts} +0 -0
  317. /package/dist/src/{validation-utils.js → validation/validation-utils.js} +0 -0
@@ -0,0 +1,70 @@
1
+ export function normalizeArguments(toolDef, args) {
2
+ const normalized = { ...args };
3
+ for (const [paramName, paramDef] of Object.entries(toolDef.parameters)) {
4
+ const value = normalized[paramName];
5
+ if (value === undefined) {
6
+ continue;
7
+ }
8
+ const mappedEntries = normalizeObjectEntries(paramDef, value);
9
+ if (mappedEntries !== undefined) {
10
+ normalized[paramName] = mappedEntries;
11
+ continue;
12
+ }
13
+ const mappedArrayItems = normalizeArrayItems(paramDef, value);
14
+ if (mappedArrayItems !== undefined) {
15
+ normalized[paramName] = mappedArrayItems;
16
+ }
17
+ }
18
+ return normalized;
19
+ }
20
+ export function applyParameterDefaults(toolDef, args) {
21
+ const normalized = { ...args };
22
+ for (const [paramName, paramDef] of Object.entries(toolDef.parameters)) {
23
+ if (normalized[paramName] === undefined && paramDef.default !== undefined) {
24
+ normalized[paramName] = paramDef.default;
25
+ }
26
+ }
27
+ return normalized;
28
+ }
29
+ function normalizeObjectEntries(paramDef, value) {
30
+ if (!paramDef.object_entries_to_array) {
31
+ return undefined;
32
+ }
33
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
34
+ return undefined;
35
+ }
36
+ const { key_field, value_field, wrap_value_field } = paramDef.object_entries_to_array;
37
+ const entries = Object.entries(value);
38
+ return entries.map(([key, entryValue]) => ({
39
+ [key_field]: key,
40
+ [value_field]: wrapObjectValue(entryValue, wrap_value_field),
41
+ }));
42
+ }
43
+ function wrapObjectValue(value, wrapValueField) {
44
+ if (!wrapValueField) {
45
+ return value;
46
+ }
47
+ if (typeof value === 'object' && value !== null) {
48
+ return value;
49
+ }
50
+ return { [wrapValueField]: value };
51
+ }
52
+ function normalizeArrayItems(paramDef, value) {
53
+ if (!paramDef.array_item_to_object) {
54
+ return undefined;
55
+ }
56
+ if (!Array.isArray(value)) {
57
+ return undefined;
58
+ }
59
+ const { key_field } = paramDef.array_item_to_object;
60
+ return value.map(item => {
61
+ if (typeof item === 'object' && item !== null && !Array.isArray(item)) {
62
+ return item;
63
+ }
64
+ if (['string', 'number', 'boolean'].includes(typeof item)) {
65
+ return { [key_field]: item };
66
+ }
67
+ return item;
68
+ });
69
+ }
70
+ //# sourceMappingURL=argument-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argument-normalizer.js","sourceRoot":"","sources":["../../../src/validation/argument-normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonrpc-validator.d.ts","sourceRoot":"","sources":["../../../src/validation/jsonrpc-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAS1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAS3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonrpc-validator.js","sourceRoot":"","sources":["../../../src/validation/jsonrpc-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,OAAO,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,OAAO,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,OAAO,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,OAAO,CACL,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAC/B,GAAG,CAAC,OAAO,KAAK,KAAK;QACrB,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,IAAI,IAAI,GAAG,CACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,IAAI,GAAG,OAAkC,CAAC;IAChD,OAAO,CACL,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,IAAI,CAAC,OAAO,KAAK,KAAK;QACtB,IAAI,IAAI,IAAI;QACZ,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,CACtC,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Why: Catch invalid requests before sending to API. Better error messages for users.
5
5
  * Validates against OpenAPI schema definitions.
6
6
  */
7
- import type { SchemaInfo, OperationInfo } from './types/openapi.js';
7
+ import type { SchemaInfo, OperationInfo } from '../types/openapi.js';
8
8
  export interface ValidationResult {
9
9
  valid: boolean;
10
10
  errors?: ValidationError[];
@@ -21,7 +21,7 @@ export declare class SchemaValidator {
21
21
  *
22
22
  * Why: Prevents sending malformed requests. OpenAPI schema is the source of truth.
23
23
  */
24
- validateRequestBody(operation: OperationInfo, body: Record<string, unknown>): ValidationResult;
24
+ validateRequestBody(operation: OperationInfo, body: unknown): ValidationResult;
25
25
  /**
26
26
  * Recursively validate data against schema
27
27
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../../src/validation/schema-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,mBAAmB,CACjB,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,OAAO,GACZ,gBAAgB;IAgBnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA2H9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/validation/schema-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-utils.d.ts","sourceRoot":"","sources":["../../../src/validation/validation-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM,CAiCR;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAGrE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-utils.js","sourceRoot":"","sources":["../../../src/validation/validation-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp4openapi",
3
- "version": "0.2.7",
3
+ "version": "0.3.0",
4
4
  "description": "Universal MCP server that generates tools from any OpenAPI specification",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
+ "profiles",
16
17
  "profile-schema.json",
17
18
  "README.md",
18
19
  "LICENSE.md"
@@ -28,7 +29,7 @@
28
29
  "test:ui": "vitest --ui",
29
30
  "coverage": "vitest run --coverage",
30
31
  "typecheck": "tsc --noEmit",
31
- "lint": "eslint src --ext .ts",
32
+ "lint": "eslint . --ext .ts,.js,.mjs,.cjs",
32
33
  "generate-schemas": "node scripts/generate-schemas.js",
33
34
  "validate": "npm run build && node dist/scripts/validate-profile.js",
34
35
  "validate:schema": "npm run build && node dist/scripts/validate-schema.js",
@@ -56,17 +57,19 @@
56
57
  "url": "https://github.com/davidruzicka/mcp4openapi/issues"
57
58
  },
58
59
  "dependencies": {
59
- "@modelcontextprotocol/sdk": "^1.24.0",
60
+ "@modelcontextprotocol/sdk": "1.25.2",
60
61
  "dotenv": "^17.2.3",
61
62
  "escape-html": "^1.0.3",
62
63
  "express": "^5.2.1",
63
64
  "express-rate-limit": "^8.2.1",
64
65
  "openapi-types": "^12.1.3",
65
66
  "prom-client": "^15.1.3",
67
+ "qs": "^6.14.1",
66
68
  "yaml": "^2.6.1",
67
69
  "zod": "^3.24.1"
68
70
  },
69
71
  "devDependencies": {
72
+ "@eslint/js": "^9.39.2",
70
73
  "@mswjs/http-middleware": "^0.10.3",
71
74
  "@types/escape-html": "^1.0.4",
72
75
  "@types/express": "^5.0.3",
@@ -87,6 +90,9 @@
87
90
  "vite": "^6.0.5",
88
91
  "vitest": "^3.2.4"
89
92
  },
93
+ "overrides": {
94
+ "hono": "4.11.7"
95
+ },
90
96
  "engines": {
91
97
  "node": ">=18"
92
98
  }
@@ -11,6 +11,24 @@
11
11
  "description": "Unique identifier for this profile",
12
12
  "examples": ["gitlab-developer", "github-readonly", "custom-api"]
13
13
  },
14
+ "profile_id": {
15
+ "type": "string",
16
+ "description": "Short ID used for selecting a profile via MCP4_PROFILE or --profile",
17
+ "examples": ["gitlab", "semgrep", "youtrack"]
18
+ },
19
+ "profile_aliases": {
20
+ "type": "array",
21
+ "description": "Alternate IDs that can be used to select this profile via MCP4_PROFILE or --profile",
22
+ "items": {
23
+ "type": "string"
24
+ },
25
+ "examples": [["gitlab-developer", "gitlab-default"]]
26
+ },
27
+ "openapi_spec_path": {
28
+ "type": "string",
29
+ "description": "OpenAPI spec path used when launching by profile without MCP4_OPENAPI_SPEC_PATH",
30
+ "examples": ["./openapi.yaml", "../specs/openapi.json"]
31
+ },
14
32
  "description": {
15
33
  "type": "string",
16
34
  "description": "Human-readable description of what this profile provides"
@@ -188,9 +206,21 @@
188
206
  "required": ["type", "description"],
189
207
  "properties": {
190
208
  "type": {
191
- "type": "string",
192
- "enum": ["string", "integer", "number", "boolean", "array", "object"],
193
- "description": "Parameter data type"
209
+ "description": "Parameter data type",
210
+ "oneOf": [
211
+ {
212
+ "type": "string",
213
+ "enum": ["string", "integer", "number", "boolean", "array", "object"]
214
+ },
215
+ {
216
+ "type": "array",
217
+ "items": {
218
+ "type": "string",
219
+ "enum": ["string", "integer", "number", "boolean", "array", "object"]
220
+ },
221
+ "minItems": 1
222
+ }
223
+ ]
194
224
  },
195
225
  "description": {
196
226
  "type": "string",
@@ -237,6 +267,36 @@
237
267
  },
238
268
  "example": {
239
269
  "description": "Example value for documentation"
270
+ },
271
+ "object_entries_to_array": {
272
+ "type": "object",
273
+ "description": "Convert an object map into an array of objects using key/value fields",
274
+ "required": ["key_field", "value_field"],
275
+ "properties": {
276
+ "key_field": {
277
+ "type": "string",
278
+ "description": "Field name to store the object key"
279
+ },
280
+ "value_field": {
281
+ "type": "string",
282
+ "description": "Field name to store the object value"
283
+ },
284
+ "wrap_value_field": {
285
+ "type": "string",
286
+ "description": "Optional wrapper field name for non-object values"
287
+ }
288
+ }
289
+ },
290
+ "array_item_to_object": {
291
+ "type": "object",
292
+ "description": "Convert primitive array items into objects using the provided field",
293
+ "required": ["key_field"],
294
+ "properties": {
295
+ "key_field": {
296
+ "type": "string",
297
+ "description": "Field name to store the array item value"
298
+ }
299
+ }
240
300
  }
241
301
  }
242
302
  },
@@ -608,6 +668,18 @@
608
668
  "type": "boolean",
609
669
  "description": "Skip authentication for download URL (default: false). Set to true for pre-signed URLs.",
610
670
  "default": false
671
+ },
672
+ "allowed_hosts": {
673
+ "type": "array",
674
+ "description": "Optional allowlist of host patterns for cross-origin downloads when skip_auth=true (e.g., [\"cdn.example.com\", \"*.example.com\"])",
675
+ "items": {
676
+ "type": "string"
677
+ }
678
+ },
679
+ "allow_private_network": {
680
+ "type": "boolean",
681
+ "description": "SSRF safety switch: when skip_auth=true, controls whether proxy_download may fetch from localhost and private/loopback/link-local IPs (including hostnames that resolve to them) (default: false)",
682
+ "default": false
611
683
  }
612
684
  }
613
685
  }