mcp-server-framework 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 (673) hide show
  1. package/CHANGELOG.md +174 -0
  2. package/LICENSE-GPL.md +219 -0
  3. package/LICENSE.md +187 -0
  4. package/README.md +439 -0
  5. package/build/config/config-cache.d.ts +120 -0
  6. package/build/config/config-cache.d.ts.map +1 -0
  7. package/build/config/config-cache.js +310 -0
  8. package/build/config/config-cache.js.map +1 -0
  9. package/build/config/env.d.ts +476 -0
  10. package/build/config/env.d.ts.map +1 -0
  11. package/build/config/env.js +441 -0
  12. package/build/config/env.js.map +1 -0
  13. package/build/config/extensions.d.ts +107 -0
  14. package/build/config/extensions.d.ts.map +1 -0
  15. package/build/config/extensions.js +152 -0
  16. package/build/config/extensions.js.map +1 -0
  17. package/build/config/file/index.d.ts +8 -0
  18. package/build/config/file/index.d.ts.map +1 -0
  19. package/build/config/file/index.js +10 -0
  20. package/build/config/file/index.js.map +1 -0
  21. package/build/config/file/loader.d.ts +31 -0
  22. package/build/config/file/loader.d.ts.map +1 -0
  23. package/build/config/file/loader.js +313 -0
  24. package/build/config/file/loader.js.map +1 -0
  25. package/build/config/file/schema.d.ts +583 -0
  26. package/build/config/file/schema.d.ts.map +1 -0
  27. package/build/config/file/schema.js +388 -0
  28. package/build/config/file/schema.js.map +1 -0
  29. package/build/config/index.d.ts +15 -0
  30. package/build/config/index.d.ts.map +1 -0
  31. package/build/config/index.js +27 -0
  32. package/build/config/index.js.map +1 -0
  33. package/build/config/startup-warnings.d.ts +46 -0
  34. package/build/config/startup-warnings.d.ts.map +1 -0
  35. package/build/config/startup-warnings.js +61 -0
  36. package/build/config/startup-warnings.js.map +1 -0
  37. package/build/connection/connection-state.d.ts +196 -0
  38. package/build/connection/connection-state.d.ts.map +1 -0
  39. package/build/connection/connection-state.js +426 -0
  40. package/build/connection/connection-state.js.map +1 -0
  41. package/build/connection/core/base.d.ts +43 -0
  42. package/build/connection/core/base.d.ts.map +1 -0
  43. package/build/connection/core/base.js +82 -0
  44. package/build/connection/core/base.js.map +1 -0
  45. package/build/connection/core/constants.d.ts +121 -0
  46. package/build/connection/core/constants.d.ts.map +1 -0
  47. package/build/connection/core/constants.js +151 -0
  48. package/build/connection/core/constants.js.map +1 -0
  49. package/build/connection/core/index.d.ts +13 -0
  50. package/build/connection/core/index.d.ts.map +1 -0
  51. package/build/connection/core/index.js +14 -0
  52. package/build/connection/core/index.js.map +1 -0
  53. package/build/connection/core/types.d.ts +102 -0
  54. package/build/connection/core/types.d.ts.map +1 -0
  55. package/build/connection/core/types.js +31 -0
  56. package/build/connection/core/types.js.map +1 -0
  57. package/build/connection/index.d.ts +19 -0
  58. package/build/connection/index.d.ts.map +1 -0
  59. package/build/connection/index.js +22 -0
  60. package/build/connection/index.js.map +1 -0
  61. package/build/connection/types.d.ts +125 -0
  62. package/build/connection/types.d.ts.map +1 -0
  63. package/build/connection/types.js +39 -0
  64. package/build/connection/types.js.map +1 -0
  65. package/build/errors/categories/auth.d.ts +59 -0
  66. package/build/errors/categories/auth.d.ts.map +1 -0
  67. package/build/errors/categories/auth.js +111 -0
  68. package/build/errors/categories/auth.js.map +1 -0
  69. package/build/errors/categories/connection.d.ts +70 -0
  70. package/build/errors/categories/connection.d.ts.map +1 -0
  71. package/build/errors/categories/connection.js +120 -0
  72. package/build/errors/categories/connection.js.map +1 -0
  73. package/build/errors/categories/index.d.ts +14 -0
  74. package/build/errors/categories/index.d.ts.map +1 -0
  75. package/build/errors/categories/index.js +20 -0
  76. package/build/errors/categories/index.js.map +1 -0
  77. package/build/errors/categories/operation.d.ts +83 -0
  78. package/build/errors/categories/operation.d.ts.map +1 -0
  79. package/build/errors/categories/operation.js +149 -0
  80. package/build/errors/categories/operation.js.map +1 -0
  81. package/build/errors/categories/protocol.d.ts +68 -0
  82. package/build/errors/categories/protocol.d.ts.map +1 -0
  83. package/build/errors/categories/protocol.js +135 -0
  84. package/build/errors/categories/protocol.js.map +1 -0
  85. package/build/errors/categories/session.d.ts +50 -0
  86. package/build/errors/categories/session.d.ts.map +1 -0
  87. package/build/errors/categories/session.js +97 -0
  88. package/build/errors/categories/session.js.map +1 -0
  89. package/build/errors/categories/system.d.ts +95 -0
  90. package/build/errors/categories/system.d.ts.map +1 -0
  91. package/build/errors/categories/system.js +190 -0
  92. package/build/errors/categories/system.js.map +1 -0
  93. package/build/errors/categories/transport.d.ts +70 -0
  94. package/build/errors/categories/transport.d.ts.map +1 -0
  95. package/build/errors/categories/transport.js +148 -0
  96. package/build/errors/categories/transport.js.map +1 -0
  97. package/build/errors/categories/validation.d.ts +140 -0
  98. package/build/errors/categories/validation.d.ts.map +1 -0
  99. package/build/errors/categories/validation.js +311 -0
  100. package/build/errors/categories/validation.js.map +1 -0
  101. package/build/errors/core/base.d.ts +103 -0
  102. package/build/errors/core/base.d.ts.map +1 -0
  103. package/build/errors/core/base.js +219 -0
  104. package/build/errors/core/base.js.map +1 -0
  105. package/build/errors/core/constants.d.ts +40 -0
  106. package/build/errors/core/constants.d.ts.map +1 -0
  107. package/build/errors/core/constants.js +49 -0
  108. package/build/errors/core/constants.js.map +1 -0
  109. package/build/errors/core/error-codes.d.ts +72 -0
  110. package/build/errors/core/error-codes.d.ts.map +1 -0
  111. package/build/errors/core/error-codes.js +88 -0
  112. package/build/errors/core/error-codes.js.map +1 -0
  113. package/build/errors/core/http.d.ts +69 -0
  114. package/build/errors/core/http.d.ts.map +1 -0
  115. package/build/errors/core/http.js +106 -0
  116. package/build/errors/core/http.js.map +1 -0
  117. package/build/errors/core/index.d.ts +23 -0
  118. package/build/errors/core/index.d.ts.map +1 -0
  119. package/build/errors/core/index.js +41 -0
  120. package/build/errors/core/index.js.map +1 -0
  121. package/build/errors/core/json-rpc.d.ts +69 -0
  122. package/build/errors/core/json-rpc.d.ts.map +1 -0
  123. package/build/errors/core/json-rpc.js +79 -0
  124. package/build/errors/core/json-rpc.js.map +1 -0
  125. package/build/errors/core/messages.d.ts +51 -0
  126. package/build/errors/core/messages.d.ts.map +1 -0
  127. package/build/errors/core/messages.js +59 -0
  128. package/build/errors/core/messages.js.map +1 -0
  129. package/build/errors/core/types.d.ts +80 -0
  130. package/build/errors/core/types.d.ts.map +1 -0
  131. package/build/errors/core/types.js +10 -0
  132. package/build/errors/core/types.js.map +1 -0
  133. package/build/errors/factory.d.ts +199 -0
  134. package/build/errors/factory.d.ts.map +1 -0
  135. package/build/errors/factory.js +244 -0
  136. package/build/errors/factory.js.map +1 -0
  137. package/build/errors/index.d.ts +35 -0
  138. package/build/errors/index.d.ts.map +1 -0
  139. package/build/errors/index.js +67 -0
  140. package/build/errors/index.js.map +1 -0
  141. package/build/index.d.ts +93 -0
  142. package/build/index.d.ts.map +1 -0
  143. package/build/index.js +107 -0
  144. package/build/index.js.map +1 -0
  145. package/build/logger/core/constants.d.ts +143 -0
  146. package/build/logger/core/constants.d.ts.map +1 -0
  147. package/build/logger/core/constants.js +206 -0
  148. package/build/logger/core/constants.js.map +1 -0
  149. package/build/logger/core/context.d.ts +170 -0
  150. package/build/logger/core/context.d.ts.map +1 -0
  151. package/build/logger/core/context.js +237 -0
  152. package/build/logger/core/context.js.map +1 -0
  153. package/build/logger/core/errors.d.ts +101 -0
  154. package/build/logger/core/errors.d.ts.map +1 -0
  155. package/build/logger/core/errors.js +128 -0
  156. package/build/logger/core/errors.js.map +1 -0
  157. package/build/logger/core/format.d.ts +40 -0
  158. package/build/logger/core/format.d.ts.map +1 -0
  159. package/build/logger/core/format.js +47 -0
  160. package/build/logger/core/format.js.map +1 -0
  161. package/build/logger/core/index.d.ts +19 -0
  162. package/build/logger/core/index.d.ts.map +1 -0
  163. package/build/logger/core/index.js +47 -0
  164. package/build/logger/core/index.js.map +1 -0
  165. package/build/logger/core/trace-context.d.ts +51 -0
  166. package/build/logger/core/trace-context.d.ts.map +1 -0
  167. package/build/logger/core/trace-context.js +42 -0
  168. package/build/logger/core/trace-context.js.map +1 -0
  169. package/build/logger/core/types.d.ts +233 -0
  170. package/build/logger/core/types.d.ts.map +1 -0
  171. package/build/logger/core/types.js +10 -0
  172. package/build/logger/core/types.js.map +1 -0
  173. package/build/logger/factory.d.ts +150 -0
  174. package/build/logger/factory.d.ts.map +1 -0
  175. package/build/logger/factory.js +236 -0
  176. package/build/logger/factory.js.map +1 -0
  177. package/build/logger/formatters/index.d.ts +12 -0
  178. package/build/logger/formatters/index.d.ts.map +1 -0
  179. package/build/logger/formatters/index.js +15 -0
  180. package/build/logger/formatters/index.js.map +1 -0
  181. package/build/logger/formatters/json-formatter.d.ts +54 -0
  182. package/build/logger/formatters/json-formatter.d.ts.map +1 -0
  183. package/build/logger/formatters/json-formatter.js +80 -0
  184. package/build/logger/formatters/json-formatter.js.map +1 -0
  185. package/build/logger/formatters/schema.d.ts +230 -0
  186. package/build/logger/formatters/schema.d.ts.map +1 -0
  187. package/build/logger/formatters/schema.js +278 -0
  188. package/build/logger/formatters/schema.js.map +1 -0
  189. package/build/logger/formatters/text-formatter.d.ts +50 -0
  190. package/build/logger/formatters/text-formatter.d.ts.map +1 -0
  191. package/build/logger/formatters/text-formatter.js +93 -0
  192. package/build/logger/formatters/text-formatter.js.map +1 -0
  193. package/build/logger/index.d.ts +39 -0
  194. package/build/logger/index.d.ts.map +1 -0
  195. package/build/logger/index.js +43 -0
  196. package/build/logger/index.js.map +1 -0
  197. package/build/logger/logger.d.ts +278 -0
  198. package/build/logger/logger.d.ts.map +1 -0
  199. package/build/logger/logger.js +459 -0
  200. package/build/logger/logger.js.map +1 -0
  201. package/build/logger/mcp-logger.d.ts +177 -0
  202. package/build/logger/mcp-logger.d.ts.map +1 -0
  203. package/build/logger/mcp-logger.js +294 -0
  204. package/build/logger/mcp-logger.js.map +1 -0
  205. package/build/logger/scrubbing/index.d.ts +14 -0
  206. package/build/logger/scrubbing/index.d.ts.map +1 -0
  207. package/build/logger/scrubbing/index.js +16 -0
  208. package/build/logger/scrubbing/index.js.map +1 -0
  209. package/build/logger/scrubbing/injection-guard.d.ts +69 -0
  210. package/build/logger/scrubbing/injection-guard.d.ts.map +1 -0
  211. package/build/logger/scrubbing/injection-guard.js +102 -0
  212. package/build/logger/scrubbing/injection-guard.js.map +1 -0
  213. package/build/logger/scrubbing/secret-scrubber.d.ts +72 -0
  214. package/build/logger/scrubbing/secret-scrubber.d.ts.map +1 -0
  215. package/build/logger/scrubbing/secret-scrubber.js +177 -0
  216. package/build/logger/scrubbing/secret-scrubber.js.map +1 -0
  217. package/build/logger/writers/base-writer.d.ts +45 -0
  218. package/build/logger/writers/base-writer.d.ts.map +1 -0
  219. package/build/logger/writers/base-writer.js +41 -0
  220. package/build/logger/writers/base-writer.js.map +1 -0
  221. package/build/logger/writers/composite-writer.d.ts +83 -0
  222. package/build/logger/writers/composite-writer.d.ts.map +1 -0
  223. package/build/logger/writers/composite-writer.js +121 -0
  224. package/build/logger/writers/composite-writer.js.map +1 -0
  225. package/build/logger/writers/console-writer.d.ts +59 -0
  226. package/build/logger/writers/console-writer.d.ts.map +1 -0
  227. package/build/logger/writers/console-writer.js +73 -0
  228. package/build/logger/writers/console-writer.js.map +1 -0
  229. package/build/logger/writers/file-writer.d.ts +160 -0
  230. package/build/logger/writers/file-writer.d.ts.map +1 -0
  231. package/build/logger/writers/file-writer.js +345 -0
  232. package/build/logger/writers/file-writer.js.map +1 -0
  233. package/build/logger/writers/index.d.ts +15 -0
  234. package/build/logger/writers/index.d.ts.map +1 -0
  235. package/build/logger/writers/index.js +19 -0
  236. package/build/logger/writers/index.js.map +1 -0
  237. package/build/mcp/capabilities/apps/define-app.d.ts +68 -0
  238. package/build/mcp/capabilities/apps/define-app.d.ts.map +1 -0
  239. package/build/mcp/capabilities/apps/define-app.js +127 -0
  240. package/build/mcp/capabilities/apps/define-app.js.map +1 -0
  241. package/build/mcp/capabilities/apps/index.d.ts +10 -0
  242. package/build/mcp/capabilities/apps/index.d.ts.map +1 -0
  243. package/build/mcp/capabilities/apps/index.js +10 -0
  244. package/build/mcp/capabilities/apps/index.js.map +1 -0
  245. package/build/mcp/capabilities/capabilities.d.ts +24 -0
  246. package/build/mcp/capabilities/capabilities.d.ts.map +1 -0
  247. package/build/mcp/capabilities/capabilities.js +50 -0
  248. package/build/mcp/capabilities/capabilities.js.map +1 -0
  249. package/build/mcp/capabilities/index.d.ts +17 -0
  250. package/build/mcp/capabilities/index.d.ts.map +1 -0
  251. package/build/mcp/capabilities/index.js +20 -0
  252. package/build/mcp/capabilities/index.js.map +1 -0
  253. package/build/mcp/capabilities/prompts/define-prompt.d.ts +95 -0
  254. package/build/mcp/capabilities/prompts/define-prompt.d.ts.map +1 -0
  255. package/build/mcp/capabilities/prompts/define-prompt.js +109 -0
  256. package/build/mcp/capabilities/prompts/define-prompt.js.map +1 -0
  257. package/build/mcp/capabilities/prompts/index.d.ts +10 -0
  258. package/build/mcp/capabilities/prompts/index.d.ts.map +1 -0
  259. package/build/mcp/capabilities/prompts/index.js +10 -0
  260. package/build/mcp/capabilities/prompts/index.js.map +1 -0
  261. package/build/mcp/capabilities/registry/base-registry.d.ts +95 -0
  262. package/build/mcp/capabilities/registry/base-registry.d.ts.map +1 -0
  263. package/build/mcp/capabilities/registry/base-registry.js +149 -0
  264. package/build/mcp/capabilities/registry/base-registry.js.map +1 -0
  265. package/build/mcp/capabilities/registry/index.d.ts +16 -0
  266. package/build/mcp/capabilities/registry/index.d.ts.map +1 -0
  267. package/build/mcp/capabilities/registry/index.js +34 -0
  268. package/build/mcp/capabilities/registry/index.js.map +1 -0
  269. package/build/mcp/capabilities/registry/prompt-registry.d.ts +116 -0
  270. package/build/mcp/capabilities/registry/prompt-registry.d.ts.map +1 -0
  271. package/build/mcp/capabilities/registry/prompt-registry.js +232 -0
  272. package/build/mcp/capabilities/registry/prompt-registry.js.map +1 -0
  273. package/build/mcp/capabilities/registry/reset.d.ts +30 -0
  274. package/build/mcp/capabilities/registry/reset.d.ts.map +1 -0
  275. package/build/mcp/capabilities/registry/reset.js +48 -0
  276. package/build/mcp/capabilities/registry/reset.js.map +1 -0
  277. package/build/mcp/capabilities/registry/resource-registry.d.ts +152 -0
  278. package/build/mcp/capabilities/registry/resource-registry.d.ts.map +1 -0
  279. package/build/mcp/capabilities/registry/resource-registry.js +430 -0
  280. package/build/mcp/capabilities/registry/resource-registry.js.map +1 -0
  281. package/build/mcp/capabilities/registry/scope-enforcement.d.ts +48 -0
  282. package/build/mcp/capabilities/registry/scope-enforcement.d.ts.map +1 -0
  283. package/build/mcp/capabilities/registry/scope-enforcement.js +62 -0
  284. package/build/mcp/capabilities/registry/scope-enforcement.js.map +1 -0
  285. package/build/mcp/capabilities/registry/task-tool-registry.d.ts +96 -0
  286. package/build/mcp/capabilities/registry/task-tool-registry.d.ts.map +1 -0
  287. package/build/mcp/capabilities/registry/task-tool-registry.js +190 -0
  288. package/build/mcp/capabilities/registry/task-tool-registry.js.map +1 -0
  289. package/build/mcp/capabilities/registry/tool-registry.d.ts +100 -0
  290. package/build/mcp/capabilities/registry/tool-registry.d.ts.map +1 -0
  291. package/build/mcp/capabilities/registry/tool-registry.js +242 -0
  292. package/build/mcp/capabilities/registry/tool-registry.js.map +1 -0
  293. package/build/mcp/capabilities/resources/define-resource.d.ts +103 -0
  294. package/build/mcp/capabilities/resources/define-resource.d.ts.map +1 -0
  295. package/build/mcp/capabilities/resources/define-resource.js +137 -0
  296. package/build/mcp/capabilities/resources/define-resource.js.map +1 -0
  297. package/build/mcp/capabilities/resources/index.d.ts +10 -0
  298. package/build/mcp/capabilities/resources/index.d.ts.map +1 -0
  299. package/build/mcp/capabilities/resources/index.js +10 -0
  300. package/build/mcp/capabilities/resources/index.js.map +1 -0
  301. package/build/mcp/capabilities/server-capabilities.d.ts +33 -0
  302. package/build/mcp/capabilities/server-capabilities.d.ts.map +1 -0
  303. package/build/mcp/capabilities/server-capabilities.js +16 -0
  304. package/build/mcp/capabilities/server-capabilities.js.map +1 -0
  305. package/build/mcp/capabilities/tasks/define-task.d.ts +75 -0
  306. package/build/mcp/capabilities/tasks/define-task.d.ts.map +1 -0
  307. package/build/mcp/capabilities/tasks/define-task.js +93 -0
  308. package/build/mcp/capabilities/tasks/define-task.js.map +1 -0
  309. package/build/mcp/capabilities/tasks/index.d.ts +11 -0
  310. package/build/mcp/capabilities/tasks/index.d.ts.map +1 -0
  311. package/build/mcp/capabilities/tasks/index.js +11 -0
  312. package/build/mcp/capabilities/tasks/index.js.map +1 -0
  313. package/build/mcp/capabilities/tools/define-tool.d.ts +62 -0
  314. package/build/mcp/capabilities/tools/define-tool.d.ts.map +1 -0
  315. package/build/mcp/capabilities/tools/define-tool.js +73 -0
  316. package/build/mcp/capabilities/tools/define-tool.js.map +1 -0
  317. package/build/mcp/capabilities/tools/index.d.ts +10 -0
  318. package/build/mcp/capabilities/tools/index.d.ts.map +1 -0
  319. package/build/mcp/capabilities/tools/index.js +10 -0
  320. package/build/mcp/capabilities/tools/index.js.map +1 -0
  321. package/build/mcp/handlers/index.d.ts +19 -0
  322. package/build/mcp/handlers/index.d.ts.map +1 -0
  323. package/build/mcp/handlers/index.js +26 -0
  324. package/build/mcp/handlers/index.js.map +1 -0
  325. package/build/mcp/handlers/ping.d.ts +27 -0
  326. package/build/mcp/handlers/ping.d.ts.map +1 -0
  327. package/build/mcp/handlers/ping.js +61 -0
  328. package/build/mcp/handlers/ping.js.map +1 -0
  329. package/build/mcp/handlers/progress.d.ts +41 -0
  330. package/build/mcp/handlers/progress.d.ts.map +1 -0
  331. package/build/mcp/handlers/progress.js +79 -0
  332. package/build/mcp/handlers/progress.js.map +1 -0
  333. package/build/mcp/index.d.ts +28 -0
  334. package/build/mcp/index.d.ts.map +1 -0
  335. package/build/mcp/index.js +34 -0
  336. package/build/mcp/index.js.map +1 -0
  337. package/build/mcp/responses/helpers.d.ts +146 -0
  338. package/build/mcp/responses/helpers.d.ts.map +1 -0
  339. package/build/mcp/responses/helpers.js +197 -0
  340. package/build/mcp/responses/helpers.js.map +1 -0
  341. package/build/mcp/responses/index.d.ts +9 -0
  342. package/build/mcp/responses/index.d.ts.map +1 -0
  343. package/build/mcp/responses/index.js +12 -0
  344. package/build/mcp/responses/index.js.map +1 -0
  345. package/build/mcp/types/context.d.ts +371 -0
  346. package/build/mcp/types/context.d.ts.map +1 -0
  347. package/build/mcp/types/context.js +17 -0
  348. package/build/mcp/types/context.js.map +1 -0
  349. package/build/mcp/types/definition.d.ts +727 -0
  350. package/build/mcp/types/definition.d.ts.map +1 -0
  351. package/build/mcp/types/definition.js +29 -0
  352. package/build/mcp/types/definition.js.map +1 -0
  353. package/build/mcp/types/handler.d.ts +58 -0
  354. package/build/mcp/types/handler.d.ts.map +1 -0
  355. package/build/mcp/types/handler.js +10 -0
  356. package/build/mcp/types/handler.js.map +1 -0
  357. package/build/mcp/types/index.d.ts +21 -0
  358. package/build/mcp/types/index.d.ts.map +1 -0
  359. package/build/mcp/types/index.js +18 -0
  360. package/build/mcp/types/index.js.map +1 -0
  361. package/build/mcp/types/response.d.ts +79 -0
  362. package/build/mcp/types/response.d.ts.map +1 -0
  363. package/build/mcp/types/response.js +10 -0
  364. package/build/mcp/types/response.js.map +1 -0
  365. package/build/server/auth/auth-context.d.ts +52 -0
  366. package/build/server/auth/auth-context.d.ts.map +1 -0
  367. package/build/server/auth/auth-context.js +45 -0
  368. package/build/server/auth/auth-context.js.map +1 -0
  369. package/build/server/auth/guards.d.ts +72 -0
  370. package/build/server/auth/guards.d.ts.map +1 -0
  371. package/build/server/auth/guards.js +103 -0
  372. package/build/server/auth/guards.js.map +1 -0
  373. package/build/server/auth/index.d.ts +21 -0
  374. package/build/server/auth/index.d.ts.map +1 -0
  375. package/build/server/auth/index.js +20 -0
  376. package/build/server/auth/index.js.map +1 -0
  377. package/build/server/auth/oidc-discovery.d.ts +68 -0
  378. package/build/server/auth/oidc-discovery.d.ts.map +1 -0
  379. package/build/server/auth/oidc-discovery.js +234 -0
  380. package/build/server/auth/oidc-discovery.js.map +1 -0
  381. package/build/server/auth/oidc-provider.d.ts +96 -0
  382. package/build/server/auth/oidc-provider.d.ts.map +1 -0
  383. package/build/server/auth/oidc-provider.js +126 -0
  384. package/build/server/auth/oidc-provider.js.map +1 -0
  385. package/build/server/auth/types.d.ts +204 -0
  386. package/build/server/auth/types.d.ts.map +1 -0
  387. package/build/server/auth/types.js +29 -0
  388. package/build/server/auth/types.js.map +1 -0
  389. package/build/server/auth/upstream-provider.d.ts +161 -0
  390. package/build/server/auth/upstream-provider.d.ts.map +1 -0
  391. package/build/server/auth/upstream-provider.js +411 -0
  392. package/build/server/auth/upstream-provider.js.map +1 -0
  393. package/build/server/builder/constants.d.ts +45 -0
  394. package/build/server/builder/constants.d.ts.map +1 -0
  395. package/build/server/builder/constants.js +54 -0
  396. package/build/server/builder/constants.js.map +1 -0
  397. package/build/server/builder/index.d.ts +24 -0
  398. package/build/server/builder/index.d.ts.map +1 -0
  399. package/build/server/builder/index.js +25 -0
  400. package/build/server/builder/index.js.map +1 -0
  401. package/build/server/builder/primitive-collector.d.ts +24 -0
  402. package/build/server/builder/primitive-collector.d.ts.map +1 -0
  403. package/build/server/builder/primitive-collector.js +89 -0
  404. package/build/server/builder/primitive-collector.js.map +1 -0
  405. package/build/server/builder/server-builder.d.ts +53 -0
  406. package/build/server/builder/server-builder.d.ts.map +1 -0
  407. package/build/server/builder/server-builder.js +132 -0
  408. package/build/server/builder/server-builder.js.map +1 -0
  409. package/build/server/builder/types.d.ts +93 -0
  410. package/build/server/builder/types.d.ts.map +1 -0
  411. package/build/server/builder/types.js +25 -0
  412. package/build/server/builder/types.js.map +1 -0
  413. package/build/server/builder/validation.d.ts +36 -0
  414. package/build/server/builder/validation.d.ts.map +1 -0
  415. package/build/server/builder/validation.js +44 -0
  416. package/build/server/builder/validation.js.map +1 -0
  417. package/build/server/create-server.d.ts +57 -0
  418. package/build/server/create-server.d.ts.map +1 -0
  419. package/build/server/create-server.js +104 -0
  420. package/build/server/create-server.js.map +1 -0
  421. package/build/server/http/express-app.d.ts +103 -0
  422. package/build/server/http/express-app.d.ts.map +1 -0
  423. package/build/server/http/express-app.js +391 -0
  424. package/build/server/http/express-app.js.map +1 -0
  425. package/build/server/http/http-server.d.ts +67 -0
  426. package/build/server/http/http-server.d.ts.map +1 -0
  427. package/build/server/http/http-server.js +188 -0
  428. package/build/server/http/http-server.js.map +1 -0
  429. package/build/server/http/http-transport.d.ts +33 -0
  430. package/build/server/http/http-transport.d.ts.map +1 -0
  431. package/build/server/http/http-transport.js +84 -0
  432. package/build/server/http/http-transport.js.map +1 -0
  433. package/build/server/http/index.d.ts +15 -0
  434. package/build/server/http/index.d.ts.map +1 -0
  435. package/build/server/http/index.js +11 -0
  436. package/build/server/http/index.js.map +1 -0
  437. package/build/server/index.d.ts +25 -0
  438. package/build/server/index.d.ts.map +1 -0
  439. package/build/server/index.js +41 -0
  440. package/build/server/index.js.map +1 -0
  441. package/build/server/lifecycle.d.ts +114 -0
  442. package/build/server/lifecycle.d.ts.map +1 -0
  443. package/build/server/lifecycle.js +30 -0
  444. package/build/server/lifecycle.js.map +1 -0
  445. package/build/server/middleware/bearer-auth.d.ts +43 -0
  446. package/build/server/middleware/bearer-auth.d.ts.map +1 -0
  447. package/build/server/middleware/bearer-auth.js +75 -0
  448. package/build/server/middleware/bearer-auth.js.map +1 -0
  449. package/build/server/middleware/custom-header-auth.d.ts +40 -0
  450. package/build/server/middleware/custom-header-auth.d.ts.map +1 -0
  451. package/build/server/middleware/custom-header-auth.js +90 -0
  452. package/build/server/middleware/custom-header-auth.js.map +1 -0
  453. package/build/server/middleware/dns-rebinding.d.ts +25 -0
  454. package/build/server/middleware/dns-rebinding.d.ts.map +1 -0
  455. package/build/server/middleware/dns-rebinding.js +94 -0
  456. package/build/server/middleware/dns-rebinding.js.map +1 -0
  457. package/build/server/middleware/index.d.ts +69 -0
  458. package/build/server/middleware/index.d.ts.map +1 -0
  459. package/build/server/middleware/index.js +68 -0
  460. package/build/server/middleware/index.js.map +1 -0
  461. package/build/server/middleware/logging.d.ts +21 -0
  462. package/build/server/middleware/logging.d.ts.map +1 -0
  463. package/build/server/middleware/logging.js +36 -0
  464. package/build/server/middleware/logging.js.map +1 -0
  465. package/build/server/middleware/oauth-router.d.ts +50 -0
  466. package/build/server/middleware/oauth-router.d.ts.map +1 -0
  467. package/build/server/middleware/oauth-router.js +53 -0
  468. package/build/server/middleware/oauth-router.js.map +1 -0
  469. package/build/server/middleware/protocol-version.d.ts +13 -0
  470. package/build/server/middleware/protocol-version.d.ts.map +1 -0
  471. package/build/server/middleware/protocol-version.js +48 -0
  472. package/build/server/middleware/protocol-version.js.map +1 -0
  473. package/build/server/middleware/rate-limit.d.ts +47 -0
  474. package/build/server/middleware/rate-limit.d.ts.map +1 -0
  475. package/build/server/middleware/rate-limit.js +109 -0
  476. package/build/server/middleware/rate-limit.js.map +1 -0
  477. package/build/server/middleware/trust-proxy.d.ts +37 -0
  478. package/build/server/middleware/trust-proxy.d.ts.map +1 -0
  479. package/build/server/middleware/trust-proxy.js +154 -0
  480. package/build/server/middleware/trust-proxy.js.map +1 -0
  481. package/build/server/option-overrides.d.ts +25 -0
  482. package/build/server/option-overrides.d.ts.map +1 -0
  483. package/build/server/option-overrides.js +85 -0
  484. package/build/server/option-overrides.js.map +1 -0
  485. package/build/server/routes/health.d.ts +87 -0
  486. package/build/server/routes/health.d.ts.map +1 -0
  487. package/build/server/routes/health.js +183 -0
  488. package/build/server/routes/health.js.map +1 -0
  489. package/build/server/routes/index.d.ts +16 -0
  490. package/build/server/routes/index.d.ts.map +1 -0
  491. package/build/server/routes/index.js +18 -0
  492. package/build/server/routes/index.js.map +1 -0
  493. package/build/server/routes/metrics.d.ts +40 -0
  494. package/build/server/routes/metrics.d.ts.map +1 -0
  495. package/build/server/routes/metrics.js +81 -0
  496. package/build/server/routes/metrics.js.map +1 -0
  497. package/build/server/routes/oauth-router.d.ts +50 -0
  498. package/build/server/routes/oauth-router.d.ts.map +1 -0
  499. package/build/server/routes/oauth-router.js +53 -0
  500. package/build/server/routes/oauth-router.js.map +1 -0
  501. package/build/server/routes/readiness-status.d.ts +25 -0
  502. package/build/server/routes/readiness-status.d.ts.map +1 -0
  503. package/build/server/routes/readiness-status.js +27 -0
  504. package/build/server/routes/readiness-status.js.map +1 -0
  505. package/build/server/routes/sse-router.d.ts +43 -0
  506. package/build/server/routes/sse-router.d.ts.map +1 -0
  507. package/build/server/routes/sse-router.js +92 -0
  508. package/build/server/routes/sse-router.js.map +1 -0
  509. package/build/server/routes/streamable-http-router.d.ts +36 -0
  510. package/build/server/routes/streamable-http-router.d.ts.map +1 -0
  511. package/build/server/routes/streamable-http-router.js +59 -0
  512. package/build/server/routes/streamable-http-router.js.map +1 -0
  513. package/build/server/server-instance.d.ts +185 -0
  514. package/build/server/server-instance.d.ts.map +1 -0
  515. package/build/server/server-instance.js +615 -0
  516. package/build/server/server-instance.js.map +1 -0
  517. package/build/server/server-options.d.ts +411 -0
  518. package/build/server/server-options.d.ts.map +1 -0
  519. package/build/server/server-options.js +17 -0
  520. package/build/server/server-options.js.map +1 -0
  521. package/build/server/session/in-memory-store.d.ts +128 -0
  522. package/build/server/session/in-memory-store.d.ts.map +1 -0
  523. package/build/server/session/in-memory-store.js +312 -0
  524. package/build/server/session/in-memory-store.js.map +1 -0
  525. package/build/server/session/index.d.ts +43 -0
  526. package/build/server/session/index.d.ts.map +1 -0
  527. package/build/server/session/index.js +47 -0
  528. package/build/server/session/index.js.map +1 -0
  529. package/build/server/session/mcp-session.d.ts +210 -0
  530. package/build/server/session/mcp-session.d.ts.map +1 -0
  531. package/build/server/session/mcp-session.js +428 -0
  532. package/build/server/session/mcp-session.js.map +1 -0
  533. package/build/server/session/session-factory.d.ts +119 -0
  534. package/build/server/session/session-factory.d.ts.map +1 -0
  535. package/build/server/session/session-factory.js +131 -0
  536. package/build/server/session/session-factory.js.map +1 -0
  537. package/build/server/session/session-housekeeper.d.ts +100 -0
  538. package/build/server/session/session-housekeeper.d.ts.map +1 -0
  539. package/build/server/session/session-housekeeper.js +217 -0
  540. package/build/server/session/session-housekeeper.js.map +1 -0
  541. package/build/server/session/session-manager.d.ts +227 -0
  542. package/build/server/session/session-manager.d.ts.map +1 -0
  543. package/build/server/session/session-manager.js +282 -0
  544. package/build/server/session/session-manager.js.map +1 -0
  545. package/build/server/session/session-store.d.ts +95 -0
  546. package/build/server/session/session-store.d.ts.map +1 -0
  547. package/build/server/session/session-store.js +13 -0
  548. package/build/server/session/session-store.js.map +1 -0
  549. package/build/server/session/session.d.ts +132 -0
  550. package/build/server/session/session.d.ts.map +1 -0
  551. package/build/server/session/session.js +61 -0
  552. package/build/server/session/session.js.map +1 -0
  553. package/build/server/transport/constants.d.ts +85 -0
  554. package/build/server/transport/constants.d.ts.map +1 -0
  555. package/build/server/transport/constants.js +103 -0
  556. package/build/server/transport/constants.js.map +1 -0
  557. package/build/server/transport/index.d.ts +21 -0
  558. package/build/server/transport/index.d.ts.map +1 -0
  559. package/build/server/transport/index.js +28 -0
  560. package/build/server/transport/index.js.map +1 -0
  561. package/build/server/transport/sse/handler.d.ts +46 -0
  562. package/build/server/transport/sse/handler.d.ts.map +1 -0
  563. package/build/server/transport/sse/handler.js +189 -0
  564. package/build/server/transport/sse/handler.js.map +1 -0
  565. package/build/server/transport/sse/index.d.ts +15 -0
  566. package/build/server/transport/sse/index.d.ts.map +1 -0
  567. package/build/server/transport/sse/index.js +14 -0
  568. package/build/server/transport/sse/index.js.map +1 -0
  569. package/build/server/transport/sse/transport.d.ts +94 -0
  570. package/build/server/transport/sse/transport.d.ts.map +1 -0
  571. package/build/server/transport/sse/transport.js +175 -0
  572. package/build/server/transport/sse/transport.js.map +1 -0
  573. package/build/server/transport/stdio-transport.d.ts +23 -0
  574. package/build/server/transport/stdio-transport.d.ts.map +1 -0
  575. package/build/server/transport/stdio-transport.js +59 -0
  576. package/build/server/transport/stdio-transport.js.map +1 -0
  577. package/build/server/transport/streamable-http/index.d.ts +9 -0
  578. package/build/server/transport/streamable-http/index.d.ts.map +1 -0
  579. package/build/server/transport/streamable-http/index.js +9 -0
  580. package/build/server/transport/streamable-http/index.js.map +1 -0
  581. package/build/server/transport/streamable-http/stateful-handler.d.ts +41 -0
  582. package/build/server/transport/streamable-http/stateful-handler.d.ts.map +1 -0
  583. package/build/server/transport/streamable-http/stateful-handler.js +264 -0
  584. package/build/server/transport/streamable-http/stateful-handler.js.map +1 -0
  585. package/build/server/transport/streamable-http/stateless-handler.d.ts +28 -0
  586. package/build/server/transport/streamable-http/stateless-handler.d.ts.map +1 -0
  587. package/build/server/transport/streamable-http/stateless-handler.js +81 -0
  588. package/build/server/transport/streamable-http/stateless-handler.js.map +1 -0
  589. package/build/server/transport/streamable-http/transport.d.ts +110 -0
  590. package/build/server/transport/streamable-http/transport.d.ts.map +1 -0
  591. package/build/server/transport/streamable-http/transport.js +118 -0
  592. package/build/server/transport/streamable-http/transport.js.map +1 -0
  593. package/build/server/transport/transport-context.d.ts +67 -0
  594. package/build/server/transport/transport-context.d.ts.map +1 -0
  595. package/build/server/transport/transport-context.js +38 -0
  596. package/build/server/transport/transport-context.js.map +1 -0
  597. package/build/server/transport/types.d.ts +56 -0
  598. package/build/server/transport/types.d.ts.map +1 -0
  599. package/build/server/transport/types.js +11 -0
  600. package/build/server/transport/types.js.map +1 -0
  601. package/build/server/transport-options.d.ts +248 -0
  602. package/build/server/transport-options.d.ts.map +1 -0
  603. package/build/server/transport-options.js +18 -0
  604. package/build/server/transport-options.js.map +1 -0
  605. package/build/server/types.d.ts +172 -0
  606. package/build/server/types.d.ts.map +1 -0
  607. package/build/server/types.js +9 -0
  608. package/build/server/types.js.map +1 -0
  609. package/build/telemetry/connection-telemetry-bridge.d.ts +30 -0
  610. package/build/telemetry/connection-telemetry-bridge.d.ts.map +1 -0
  611. package/build/telemetry/connection-telemetry-bridge.js +54 -0
  612. package/build/telemetry/connection-telemetry-bridge.js.map +1 -0
  613. package/build/telemetry/core/config.d.ts +38 -0
  614. package/build/telemetry/core/config.d.ts.map +1 -0
  615. package/build/telemetry/core/config.js +54 -0
  616. package/build/telemetry/core/config.js.map +1 -0
  617. package/build/telemetry/core/constants.d.ts +183 -0
  618. package/build/telemetry/core/constants.d.ts.map +1 -0
  619. package/build/telemetry/core/constants.js +207 -0
  620. package/build/telemetry/core/constants.js.map +1 -0
  621. package/build/telemetry/core/diag-logger.d.ts +35 -0
  622. package/build/telemetry/core/diag-logger.d.ts.map +1 -0
  623. package/build/telemetry/core/diag-logger.js +54 -0
  624. package/build/telemetry/core/diag-logger.js.map +1 -0
  625. package/build/telemetry/core/index.d.ts +12 -0
  626. package/build/telemetry/core/index.d.ts.map +1 -0
  627. package/build/telemetry/core/index.js +32 -0
  628. package/build/telemetry/core/index.js.map +1 -0
  629. package/build/telemetry/core/types.d.ts +106 -0
  630. package/build/telemetry/core/types.d.ts.map +1 -0
  631. package/build/telemetry/core/types.js +10 -0
  632. package/build/telemetry/core/types.js.map +1 -0
  633. package/build/telemetry/index.d.ts +59 -0
  634. package/build/telemetry/index.d.ts.map +1 -0
  635. package/build/telemetry/index.js +79 -0
  636. package/build/telemetry/index.js.map +1 -0
  637. package/build/telemetry/metrics.d.ts +127 -0
  638. package/build/telemetry/metrics.d.ts.map +1 -0
  639. package/build/telemetry/metrics.js +337 -0
  640. package/build/telemetry/metrics.js.map +1 -0
  641. package/build/telemetry/sdk.d.ts +110 -0
  642. package/build/telemetry/sdk.d.ts.map +1 -0
  643. package/build/telemetry/sdk.js +547 -0
  644. package/build/telemetry/sdk.js.map +1 -0
  645. package/build/telemetry/tracing.d.ts +78 -0
  646. package/build/telemetry/tracing.d.ts.map +1 -0
  647. package/build/telemetry/tracing.js +257 -0
  648. package/build/telemetry/tracing.js.map +1 -0
  649. package/build/utils/env-helpers.d.ts +46 -0
  650. package/build/utils/env-helpers.d.ts.map +1 -0
  651. package/build/utils/env-helpers.js +54 -0
  652. package/build/utils/env-helpers.js.map +1 -0
  653. package/build/utils/index.d.ts +14 -0
  654. package/build/utils/index.d.ts.map +1 -0
  655. package/build/utils/index.js +19 -0
  656. package/build/utils/index.js.map +1 -0
  657. package/build/utils/sensitive-keys.d.ts +48 -0
  658. package/build/utils/sensitive-keys.d.ts.map +1 -0
  659. package/build/utils/sensitive-keys.js +131 -0
  660. package/build/utils/sensitive-keys.js.map +1 -0
  661. package/build/utils/string-helpers.d.ts +126 -0
  662. package/build/utils/string-helpers.d.ts.map +1 -0
  663. package/build/utils/string-helpers.js +189 -0
  664. package/build/utils/string-helpers.js.map +1 -0
  665. package/build/utils/validation.d.ts +84 -0
  666. package/build/utils/validation.d.ts.map +1 -0
  667. package/build/utils/validation.js +111 -0
  668. package/build/utils/validation.js.map +1 -0
  669. package/build/utils/zod-helpers.d.ts +92 -0
  670. package/build/utils/zod-helpers.d.ts.map +1 -0
  671. package/build/utils/zod-helpers.js +120 -0
  672. package/build/utils/zod-helpers.js.map +1 -0
  673. package/package.json +133 -0
@@ -0,0 +1,411 @@
1
+ /**
2
+ * Upstream OAuth Provider Factory
3
+ *
4
+ * Creates a generic {@link OAuthServerProvider} that proxies OAuth flows
5
+ * to any upstream authorization server using the **server-side callback pattern**.
6
+ *
7
+ * This pattern is needed because MCP clients (Inspector, VS Code, Claude Desktop)
8
+ * each have their own callback URL, but upstream providers (GitHub, Google, etc.)
9
+ * validate `redirect_uri` against the registered callback. By routing all callbacks
10
+ * through the MCP server, we solve this mismatch transparently.
11
+ *
12
+ * Flow:
13
+ * Client → MCP Server /authorize → Upstream /authorize
14
+ * (redirect_uri = MCP Server /callback)
15
+ * Upstream → MCP Server /callback?code=X&state=UP
16
+ * MCP Server → Client callback?code=X&state=DOWN
17
+ * Client → MCP Server /token (code=X)
18
+ * MCP Server → Upstream token endpoint → returns token
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { createUpstreamOAuthProvider } from 'mcp-server-framework';
23
+ *
24
+ * const { provider, callbackHandler } = createUpstreamOAuthProvider({
25
+ * endpoints: {
26
+ * authorizationUrl: 'https://github.com/login/oauth/authorize',
27
+ * tokenUrl: 'https://github.com/login/oauth/access_token',
28
+ * userinfoUrl: 'https://api.github.com/user',
29
+ * },
30
+ * clientId: process.env.GITHUB_CLIENT_ID!,
31
+ * clientSecret: process.env.GITHUB_CLIENT_SECRET!,
32
+ * serverUrl: 'http://localhost:8000',
33
+ * upstreamScopes: ['read:user'],
34
+ * tokenRequestContentType: 'json',
35
+ * mapUserInfo: async (token, data) => ({
36
+ * token,
37
+ * clientId: data.login as string,
38
+ * scopes: ['read', 'write'],
39
+ * expiresAt: Math.floor(Date.now() / 1000) + 3600,
40
+ * }),
41
+ * });
42
+ *
43
+ * createServer({
44
+ * auth: { provider, callbackHandler, issuerUrl: new URL('http://localhost:8000') },
45
+ * });
46
+ * ```
47
+ *
48
+ * @module server/auth/upstream-provider
49
+ */
50
+ import crypto from "node:crypto";
51
+ import { logger as baseLogger } from "../../logger/index.js";
52
+ // ============================================================================
53
+ // Logger
54
+ // ============================================================================
55
+ const LOG_COMPONENT = "upstream-oauth";
56
+ const LogMessages = {
57
+ GET_CLIENT: "getClient: %s → %s",
58
+ REGISTERED_CLIENT: "Registered client: %s",
59
+ AUTHORIZE: "Authorize: client=%s redirectUri=%s upstreamState=%s",
60
+ TOKEN_EXCHANGE: "Token exchange: code=%s…",
61
+ TOKEN_EXCHANGE_ERROR: "Upstream token exchange error: %s",
62
+ CALLBACK_INVALID_STATE: "Callback: invalid or expired state=%s",
63
+ CALLBACK_EXPIRED: "Callback: expired pending auth state=%s",
64
+ CALLBACK_SUCCESS: "Callback: state mapped, redirecting to client",
65
+ PENDING_AUTHS_AT_CAPACITY: "Pending auths at capacity (%d) — rejecting new authorize request",
66
+ };
67
+ // ============================================================================
68
+ // Constants
69
+ // ============================================================================
70
+ const DEFAULT_PENDING_AUTH_TTL_MS = 10 * 60 * 1000; // 10 min
71
+ const DEFAULT_CODE_CONTEXT_TTL_MS = 5 * 60 * 1000; // 5 min
72
+ const DEFAULT_FETCH_TIMEOUT_MS = 10_000; // 10s — prevent unbounded upstream calls
73
+ const DEFAULT_EVICTION_INTERVAL_MS = 60_000; // 1 min — periodic cleanup of expired state
74
+ const DEFAULT_MAX_CLIENTS = 1000; // Max registered clients — prevents unbounded memory growth
75
+ const DEFAULT_MAX_PENDING_AUTHS = 1000; // Max pending auth flows — prevents memory exhaustion via /authorize flooding
76
+ // ============================================================================
77
+ // Factory
78
+ // ============================================================================
79
+ /**
80
+ * Creates an {@link OAuthServerProvider} that proxies OAuth flows to an
81
+ * upstream authorization server using server-side callbacks.
82
+ *
83
+ * This is the generic extraction of the server-side callback pattern —
84
+ * all provider-specific logic is encapsulated in the options (endpoints,
85
+ * scopes, `mapUserInfo`). The boilerplate (client store, state mapping,
86
+ * callback handler, token exchange, TTL management) is handled here.
87
+ *
88
+ * @param options - Upstream OAuth configuration
89
+ * @returns Provider and callback handler, ready for {@link AuthOptions}
90
+ */
91
+ export function createUpstreamOAuthProvider(options) {
92
+ const { endpoints, clientId, clientSecret, serverUrl, upstreamScopes, mapUserInfo, tokenRequestContentType = "form", upstreamAuthorizeParams, refreshTokenSupport = false, pendingAuthTtlMs = DEFAULT_PENDING_AUTH_TTL_MS, codeContextTtlMs = DEFAULT_CODE_CONTEXT_TTL_MS, } = options;
93
+ const logger = baseLogger.child({ component: LOG_COMPONENT });
94
+ const serverCallbackUrl = `${serverUrl.replace(/\/+$/, "")}/callback`;
95
+ // ── State Maps ──────────────────────────────────────────────────────────
96
+ const pendingAuths = new Map();
97
+ const codeContexts = new Map();
98
+ const clients = new Map();
99
+ // ── Periodic Eviction ─────────────────────────────────────────────────
100
+ // Proactively evict expired entries from pendingAuths and codeContexts.
101
+ // Without this, abandoned OAuth flows (attacker starts /authorize but never
102
+ // completes callback) accumulate indefinitely in memory.
103
+ const evictionTimer = setInterval(() => {
104
+ const now = Date.now();
105
+ for (const [key, entry] of pendingAuths) {
106
+ if (now - entry.createdAt > pendingAuthTtlMs) {
107
+ pendingAuths.delete(key);
108
+ }
109
+ }
110
+ for (const [key, entry] of codeContexts) {
111
+ if (now - entry.createdAt > codeContextTtlMs) {
112
+ codeContexts.delete(key);
113
+ }
114
+ }
115
+ }, DEFAULT_EVICTION_INTERVAL_MS);
116
+ evictionTimer.unref(); // Don't keep the process alive for cleanup
117
+ // ── OAuthServerProvider ─────────────────────────────────────────────────
118
+ const provider = {
119
+ // Server-side callback pattern: PKCE is validated by the upstream provider,
120
+ // not by the MCP server. Skip local PKCE validation in the SDK.
121
+ get skipLocalPkceValidation() {
122
+ return true;
123
+ },
124
+ // ── Client Store (in-memory, dynamic registration) ──────────────────
125
+ clientsStore: {
126
+ getClient: async (id) => {
127
+ const client = clients.get(id);
128
+ logger.debug(LogMessages.GET_CLIENT, id, client ? "found" : "not found");
129
+ return client;
130
+ },
131
+ registerClient: async (clientInfo) => {
132
+ // Guard against unbounded client accumulation (e.g., automated registration abuse).
133
+ // Evict the oldest entry (FIFO via Map insertion order) when at capacity.
134
+ if (!clients.has(clientInfo.client_id) && clients.size >= DEFAULT_MAX_CLIENTS) {
135
+ const oldestKey = clients.keys().next().value;
136
+ if (oldestKey !== undefined) {
137
+ clients.delete(oldestKey);
138
+ logger.warn("Client store at capacity (%d) — evicted oldest client: %s", DEFAULT_MAX_CLIENTS, oldestKey);
139
+ }
140
+ }
141
+ clients.set(clientInfo.client_id, clientInfo);
142
+ logger.info(LogMessages.REGISTERED_CLIENT, clientInfo.client_id);
143
+ return clientInfo;
144
+ },
145
+ },
146
+ // ── Authorize: Redirect to upstream with server callback URL ────────
147
+ async authorize(client, params, res) {
148
+ // Guard against unbounded pendingAuths accumulation (DoS vector via /authorize flooding)
149
+ if (pendingAuths.size >= DEFAULT_MAX_PENDING_AUTHS) {
150
+ logger.warn(LogMessages.PENDING_AUTHS_AT_CAPACITY, DEFAULT_MAX_PENDING_AUTHS);
151
+ res
152
+ .status(503)
153
+ .json({ error: "too_many_requests", error_description: "Authorization service temporarily at capacity" });
154
+ return;
155
+ }
156
+ const upstreamState = crypto.randomUUID();
157
+ pendingAuths.set(upstreamState, {
158
+ clientRedirectUri: params.redirectUri,
159
+ clientState: params.state,
160
+ codeChallenge: params.codeChallenge,
161
+ createdAt: Date.now(),
162
+ });
163
+ logger.info(LogMessages.AUTHORIZE, client.client_id, params.redirectUri, upstreamState);
164
+ const url = new URL(endpoints.authorizationUrl);
165
+ url.searchParams.set("client_id", clientId);
166
+ url.searchParams.set("redirect_uri", serverCallbackUrl);
167
+ url.searchParams.set("state", upstreamState);
168
+ url.searchParams.set("scope", upstreamScopes.join(" "));
169
+ // Apply extra authorize params (e.g. response_type for OIDC)
170
+ if (upstreamAuthorizeParams) {
171
+ for (const [key, value] of Object.entries(upstreamAuthorizeParams)) {
172
+ url.searchParams.set(key, value);
173
+ }
174
+ }
175
+ res.redirect(url.toString());
176
+ },
177
+ // ── PKCE Challenge (not called when skipLocalPkceValidation=true) ────
178
+ async challengeForAuthorizationCode(_client, _authorizationCode) {
179
+ throw new Error("PKCE validation is handled by the upstream provider");
180
+ },
181
+ // ── Token Exchange ──────────────────────────────────────────────────
182
+ async exchangeAuthorizationCode(_client, authorizationCode, _codeVerifier, _redirectUri) {
183
+ logger.debug(LogMessages.TOKEN_EXCHANGE, authorizationCode.slice(0, 8));
184
+ // Resolve and validate code context
185
+ const ctx = codeContexts.get(authorizationCode);
186
+ if (ctx && Date.now() - ctx.createdAt > codeContextTtlMs) {
187
+ codeContexts.delete(authorizationCode);
188
+ throw new Error("Authorization code expired");
189
+ }
190
+ codeContexts.delete(authorizationCode);
191
+ const redirectUri = ctx?.serverCallbackUrl ?? serverCallbackUrl;
192
+ const response = await fetchToken(endpoints.tokenUrl, {
193
+ grant_type: "authorization_code",
194
+ client_id: clientId,
195
+ client_secret: clientSecret,
196
+ code: authorizationCode,
197
+ redirect_uri: redirectUri,
198
+ }, tokenRequestContentType);
199
+ assertJsonContentType(response, "token exchange");
200
+ const data = (await response.json());
201
+ if (data.error) {
202
+ logger.error(LogMessages.TOKEN_EXCHANGE_ERROR, data.error_description ?? data.error);
203
+ throw new Error(data.error_description ?? data.error);
204
+ }
205
+ if (!data.access_token) {
206
+ throw new Error("Upstream token response missing access_token");
207
+ }
208
+ const expiresIn = data.expires_in ? Number(data.expires_in) : undefined;
209
+ if (expiresIn !== undefined && (!Number.isFinite(expiresIn) || expiresIn < 1)) {
210
+ throw new Error(`Invalid expires_in from upstream token response: ${data.expires_in}`);
211
+ }
212
+ return {
213
+ access_token: data.access_token,
214
+ token_type: data.token_type ?? "bearer",
215
+ // Artificial 1h expiry when upstream doesn't provide one
216
+ expires_in: expiresIn ?? 3600,
217
+ ...(data.refresh_token && { refresh_token: data.refresh_token }),
218
+ ...(data.scope && { scope: data.scope }),
219
+ };
220
+ },
221
+ // ── Token Verification via UserInfo endpoint ────────────────────────
222
+ async verifyAccessToken(token) {
223
+ if (!endpoints.userinfoUrl) {
224
+ throw new Error("No userinfoUrl configured — cannot verify access token");
225
+ }
226
+ let response;
227
+ try {
228
+ response = await fetch(endpoints.userinfoUrl, {
229
+ headers: {
230
+ Authorization: `Bearer ${token}`,
231
+ Accept: "application/json",
232
+ },
233
+ signal: AbortSignal.timeout(DEFAULT_FETCH_TIMEOUT_MS),
234
+ });
235
+ }
236
+ catch (err) {
237
+ throw new Error(`Token verification failed: ${err instanceof Error ? err.message : "network error"}`, {
238
+ cause: err,
239
+ });
240
+ }
241
+ if (!response.ok) {
242
+ throw new Error(`Token verification failed (HTTP ${response.status})`);
243
+ }
244
+ assertJsonContentType(response, "userinfo");
245
+ const data = (await response.json());
246
+ return mapUserInfo(token, data);
247
+ },
248
+ // ── Refresh Token ───────────────────────────────────────────────────
249
+ async exchangeRefreshToken(_client, refreshToken, _scopes) {
250
+ if (!refreshTokenSupport) {
251
+ throw new Error("Refresh tokens are not supported by this provider");
252
+ }
253
+ const response = await fetchToken(endpoints.tokenUrl, {
254
+ grant_type: "refresh_token",
255
+ client_id: clientId,
256
+ client_secret: clientSecret,
257
+ refresh_token: refreshToken,
258
+ }, tokenRequestContentType);
259
+ assertJsonContentType(response, "refresh token exchange");
260
+ const data = (await response.json());
261
+ if (data.error) {
262
+ throw new Error(data.error_description ?? data.error);
263
+ }
264
+ if (!data.access_token) {
265
+ throw new Error("Upstream refresh token response missing access_token");
266
+ }
267
+ return {
268
+ access_token: data.access_token,
269
+ token_type: data.token_type ?? "bearer",
270
+ ...(data.expires_in && { expires_in: Number(data.expires_in) }),
271
+ ...(data.refresh_token && { refresh_token: data.refresh_token }),
272
+ };
273
+ },
274
+ // ── Revoke Token ────────────────────────────────────────────────────
275
+ async revokeToken(_client, request) {
276
+ if (!endpoints.revocationUrl)
277
+ return;
278
+ const params = new URLSearchParams({
279
+ token: request.token,
280
+ client_id: clientId,
281
+ client_secret: clientSecret,
282
+ });
283
+ if (request.token_type_hint) {
284
+ params.set("token_type_hint", request.token_type_hint);
285
+ }
286
+ try {
287
+ const response = await fetch(endpoints.revocationUrl, {
288
+ method: "POST",
289
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
290
+ body: params.toString(),
291
+ signal: AbortSignal.timeout(DEFAULT_FETCH_TIMEOUT_MS),
292
+ });
293
+ if (!response.ok) {
294
+ logger.warn("Token revocation failed (HTTP %d)", response.status);
295
+ }
296
+ }
297
+ catch {
298
+ logger.warn("Token revocation request failed");
299
+ }
300
+ },
301
+ };
302
+ // ── Callback Handler ────────────────────────────────────────────────────
303
+ const callbackHandler = (req, res) => {
304
+ const code = req.query.code;
305
+ const state = req.query.state;
306
+ const error = req.query.error;
307
+ if (error) {
308
+ const desc = req.query.error_description;
309
+ // Log upstream error details for debugging, but send generic message to client
310
+ // to prevent information disclosure (CWE-209)
311
+ logger.warn("OAuth callback error from upstream: %s — %s", error, desc ?? "(no description)");
312
+ res.status(400).send("Authorization failed");
313
+ return;
314
+ }
315
+ if (!code || !state) {
316
+ res.status(400).send("Missing code or state parameter");
317
+ return;
318
+ }
319
+ const pending = pendingAuths.get(state);
320
+ if (!pending) {
321
+ logger.warn(LogMessages.CALLBACK_INVALID_STATE, state);
322
+ res.status(400).send("Invalid or expired state parameter");
323
+ return;
324
+ }
325
+ if (Date.now() - pending.createdAt > pendingAuthTtlMs) {
326
+ pendingAuths.delete(state);
327
+ logger.warn(LogMessages.CALLBACK_EXPIRED, state);
328
+ res.status(400).send("Authorization request expired");
329
+ return;
330
+ }
331
+ pendingAuths.delete(state);
332
+ // Defense-in-depth: re-validate the stored redirect URI at callback time.
333
+ // The URI was validated at authorize time, but re-checking guards against
334
+ // stale entries or client store mutations between authorize and callback.
335
+ let redirectUrl;
336
+ try {
337
+ redirectUrl = new URL(pending.clientRedirectUri);
338
+ if (redirectUrl.protocol !== "https:" &&
339
+ !(redirectUrl.protocol === "http:" &&
340
+ (redirectUrl.hostname === "localhost" ||
341
+ redirectUrl.hostname === "127.0.0.1" ||
342
+ redirectUrl.hostname === "::1"))) {
343
+ logger.warn("Callback: rejected unsafe clientRedirectUri scheme: %s", redirectUrl.protocol);
344
+ res.status(400).send("Invalid redirect URI");
345
+ return;
346
+ }
347
+ }
348
+ catch {
349
+ logger.warn("Callback: invalid clientRedirectUri URL");
350
+ res.status(400).send("Invalid redirect URI");
351
+ return;
352
+ }
353
+ codeContexts.set(code, { serverCallbackUrl, createdAt: Date.now() });
354
+ logger.info(LogMessages.CALLBACK_SUCCESS);
355
+ redirectUrl.searchParams.set("code", code);
356
+ redirectUrl.searchParams.set("state", pending.clientState);
357
+ res.redirect(redirectUrl.toString());
358
+ };
359
+ return {
360
+ provider,
361
+ callbackHandler,
362
+ dispose: () => {
363
+ clearInterval(evictionTimer);
364
+ },
365
+ };
366
+ }
367
+ // ============================================================================
368
+ // Internal Helpers
369
+ // ============================================================================
370
+ /**
371
+ * Asserts that a fetch Response carries a JSON Content-Type before parsing.
372
+ * Throws a descriptive error when upstream returns HTML error pages or other
373
+ * non-JSON bodies (e.g. from WAFs, proxies, or misconfigured endpoints).
374
+ */
375
+ function assertJsonContentType(response, context) {
376
+ const ct = response.headers.get("content-type") ?? "";
377
+ if (!ct.includes("json")) {
378
+ throw new Error(`Expected JSON from ${context}, got Content-Type: ${ct} (HTTP ${response.status})`);
379
+ }
380
+ }
381
+ /**
382
+ * Sends a token request to the upstream provider.
383
+ * Supports both `application/x-www-form-urlencoded` (standard) and
384
+ * `application/json` (GitHub) content types.
385
+ */
386
+ async function fetchToken(tokenUrl, params, contentType) {
387
+ const headers = { Accept: "application/json" };
388
+ let body;
389
+ if (contentType === "json") {
390
+ headers["Content-Type"] = "application/json";
391
+ body = JSON.stringify(params);
392
+ }
393
+ else {
394
+ headers["Content-Type"] = "application/x-www-form-urlencoded";
395
+ body = new URLSearchParams(params).toString();
396
+ }
397
+ try {
398
+ return await fetch(tokenUrl, {
399
+ method: "POST",
400
+ headers,
401
+ body,
402
+ signal: AbortSignal.timeout(DEFAULT_FETCH_TIMEOUT_MS),
403
+ });
404
+ }
405
+ catch (err) {
406
+ throw new Error(`Token request to ${tokenUrl} failed: ${err instanceof Error ? err.message : "network error"}`, {
407
+ cause: err,
408
+ });
409
+ }
410
+ }
411
+ //# sourceMappingURL=upstream-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upstream-provider.js","sourceRoot":"","sources":["../../../src/server/auth/upstream-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Server Builder Constants
3
+ *
4
+ * Constants and default values for the server builder.
5
+ *
6
+ * @module server/builder/constants
7
+ */
8
+ /**
9
+ * Default server name when not specified.
10
+ */
11
+ export declare const DEFAULT_SERVER_NAME = "mcp-server";
12
+ /**
13
+ * Default server version when not specified.
14
+ */
15
+ export declare const DEFAULT_SERVER_VERSION = "1.0.0";
16
+ /**
17
+ * Log component name for builder operations.
18
+ */
19
+ export declare const BUILDER_LOG_COMPONENT = "server-builder";
20
+ /**
21
+ * Builder-specific error messages.
22
+ */
23
+ export declare const BuilderMessages: {
24
+ readonly OPTIONS_REQUIRED: "Server options are required. Call withOptions() before build().";
25
+ readonly OPTIONS_ALREADY_SET: "Server options have already been configured.";
26
+ readonly NAME_REQUIRED: "Server name is required in options.";
27
+ readonly VERSION_REQUIRED: "Server version is required in options.";
28
+ readonly ALREADY_BUILT: "This builder has already been used to build a server. Create a new McpServerBuilder instance.";
29
+ };
30
+ /**
31
+ * Log messages for builder operations.
32
+ */
33
+ export declare const BuilderLogMessages: {
34
+ readonly OPTIONS_CONFIGURED: "Server options configured: name=%s, version=%s";
35
+ readonly BUILD_STARTED: "Building server instance...";
36
+ readonly BUILD_COMPLETED: "Server instance built successfully";
37
+ readonly BUILD_SUMMARY: "Server ready: %d tools, %d resources, %d prompts";
38
+ readonly DUPLICATE_TOOL: "Duplicate tool name detected: %s — last registration wins";
39
+ readonly DUPLICATE_RESOURCE: "Duplicate resource URI detected: %s — last registration wins";
40
+ readonly DUPLICATE_TEMPLATE: "Duplicate resource template detected: %s — last registration wins";
41
+ readonly DUPLICATE_PROMPT: "Duplicate prompt name detected: %s — last registration wins";
42
+ readonly DUPLICATE_TASK_TOOL: "Duplicate task tool name detected: %s — last registration wins";
43
+ readonly NO_CAPABILITIES: "Server built with no tools, resources, or prompts registered";
44
+ };
45
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/server/builder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAMtD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAMX;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAWrB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Server Builder Constants
3
+ *
4
+ * Constants and default values for the server builder.
5
+ *
6
+ * @module server/builder/constants
7
+ */
8
+ // ============================================================================
9
+ // Builder Constants
10
+ // ============================================================================
11
+ /**
12
+ * Default server name when not specified.
13
+ */
14
+ export const DEFAULT_SERVER_NAME = "mcp-server";
15
+ /**
16
+ * Default server version when not specified.
17
+ */
18
+ export const DEFAULT_SERVER_VERSION = "1.0.0";
19
+ /**
20
+ * Log component name for builder operations.
21
+ */
22
+ export const BUILDER_LOG_COMPONENT = "server-builder";
23
+ // ============================================================================
24
+ // Builder Error Messages
25
+ // ============================================================================
26
+ /**
27
+ * Builder-specific error messages.
28
+ */
29
+ export const BuilderMessages = {
30
+ OPTIONS_REQUIRED: "Server options are required. Call withOptions() before build().",
31
+ OPTIONS_ALREADY_SET: "Server options have already been configured.",
32
+ NAME_REQUIRED: "Server name is required in options.",
33
+ VERSION_REQUIRED: "Server version is required in options.",
34
+ ALREADY_BUILT: "This builder has already been used to build a server. Create a new McpServerBuilder instance.",
35
+ };
36
+ // ============================================================================
37
+ // Builder Log Messages
38
+ // ============================================================================
39
+ /**
40
+ * Log messages for builder operations.
41
+ */
42
+ export const BuilderLogMessages = {
43
+ OPTIONS_CONFIGURED: "Server options configured: name=%s, version=%s",
44
+ BUILD_STARTED: "Building server instance...",
45
+ BUILD_COMPLETED: "Server instance built successfully",
46
+ BUILD_SUMMARY: "Server ready: %d tools, %d resources, %d prompts",
47
+ DUPLICATE_TOOL: "Duplicate tool name detected: %s — last registration wins",
48
+ DUPLICATE_RESOURCE: "Duplicate resource URI detected: %s — last registration wins",
49
+ DUPLICATE_TEMPLATE: "Duplicate resource template detected: %s — last registration wins",
50
+ DUPLICATE_PROMPT: "Duplicate prompt name detected: %s — last registration wins",
51
+ DUPLICATE_TASK_TOOL: "Duplicate task tool name detected: %s — last registration wins",
52
+ NO_CAPABILITIES: "Server built with no tools, resources, or prompts registered",
53
+ };
54
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/server/builder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,gBAAgB,EAAE,iEAAiE;IACnF,mBAAmB,EAAE,8CAA8C;IACnE,aAAa,EAAE,qCAAqC;IACpD,gBAAgB,EAAE,wCAAwC;IAC1D,aAAa,EAAE,+FAA+F;CACtG,CAAC;AAEX,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kBAAkB,EAAE,gDAAgD;IACpE,aAAa,EAAE,6BAA6B;IAC5C,eAAe,EAAE,oCAAoC;IACrD,aAAa,EAAE,kDAAkD;IACjE,cAAc,EAAE,2DAA2D;IAC3E,kBAAkB,EAAE,8DAA8D;IAClF,kBAAkB,EAAE,mEAAmE;IACvF,gBAAgB,EAAE,6DAA6D;IAC/E,mBAAmB,EAAE,gEAAgE;IACrF,eAAe,EAAE,8DAA8D;CACvE,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Server Builder Module
3
+ *
4
+ * Provides a fluent, declarative API for constructing MCP servers.
5
+ * This module is the primary entry point for creating servers with the framework.
6
+ *
7
+ * @module server/builder
8
+ *
9
+ * @example Basic usage
10
+ * ```typescript
11
+ * import { McpServerBuilder } from './server/builder/index.js';
12
+ *
13
+ * const server = new McpServerBuilder<MyClient>()
14
+ * .withOptions({ name: 'my-server', version: '1.0.0' })
15
+ * .withToolProvider(toolRegistry)
16
+ * .build();
17
+ *
18
+ * await server.start();
19
+ * ```
20
+ */
21
+ export { McpServerBuilder } from "./server-builder.js";
22
+ export { DEFAULT_SERVER_NAME, DEFAULT_SERVER_VERSION } from "./constants.js";
23
+ export type { ServerBuilder } from "./types.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7E,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Server Builder Module
3
+ *
4
+ * Provides a fluent, declarative API for constructing MCP servers.
5
+ * This module is the primary entry point for creating servers with the framework.
6
+ *
7
+ * @module server/builder
8
+ *
9
+ * @example Basic usage
10
+ * ```typescript
11
+ * import { McpServerBuilder } from './server/builder/index.js';
12
+ *
13
+ * const server = new McpServerBuilder<MyClient>()
14
+ * .withOptions({ name: 'my-server', version: '1.0.0' })
15
+ * .withToolProvider(toolRegistry)
16
+ * .build();
17
+ *
18
+ * await server.start();
19
+ * ```
20
+ */
21
+ // Main builder class
22
+ export { McpServerBuilder } from "./server-builder.js";
23
+ // Constants
24
+ export { DEFAULT_SERVER_NAME, DEFAULT_SERVER_VERSION } from "./constants.js";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,YAAY;AACZ,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Primitive Collector
3
+ *
4
+ * Collects tools, resources, resource templates, and prompts from
5
+ * providers and direct registrations. Detects duplicates with warnings
6
+ * and returns frozen, immutable arrays.
7
+ *
8
+ * Extracted from McpServerBuilder.build() for single responsibility.
9
+ *
10
+ * @module server/builder/primitive-collector
11
+ */
12
+ import type { BuilderState, CollectedPrimitives } from "./types.js";
13
+ /**
14
+ * Collects all MCP primitives from builder state.
15
+ *
16
+ * Merges directly registered items with items from providers,
17
+ * warns about duplicates (last registration wins), and
18
+ * freezes all arrays for immutability after build.
19
+ *
20
+ * @param state - Current builder state with providers and direct registrations
21
+ * @returns Frozen, immutable primitive arrays
22
+ */
23
+ export declare function collectPrimitives(state: BuilderState): CollectedPrimitives;
24
+ //# sourceMappingURL=primitive-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-collector.d.ts","sourceRoot":"","sources":["../../../src/server/builder/primitive-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUpE;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAsD1E"}