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,85 @@
1
+ /**
2
+ * Programmatic Option → Config Overrides
3
+ *
4
+ * Pure mapping function that bridges programmatic ServerOptions into
5
+ * FrameworkEnvConfig overrides. Extracted from McpServerInstance for
6
+ * testability and to reduce class complexity.
7
+ *
8
+ * @module server/option-overrides
9
+ * @internal
10
+ */
11
+ import { isHttpTransport } from "./server-options.js";
12
+ /**
13
+ * Maps programmatic server options to config override entries.
14
+ *
15
+ * This is a pure function — it reads `currentConfig` only to check
16
+ * whether OTEL_SERVICE_NAME is already set (avoiding accidental override).
17
+ *
18
+ * @param options - The server options from createServer() or McpServerBuilder
19
+ * @param currentConfig - The current resolved framework config
20
+ * @returns Partial config overrides to apply (empty object if none)
21
+ * @internal
22
+ */
23
+ export function mapServerOptionsToOverrides(options, currentConfig) {
24
+ const overrides = {};
25
+ // Always bridge version — createServer({ version }) is the canonical source
26
+ overrides.VERSION = options.version;
27
+ // Bridge server name as OTEL service name default.
28
+ // The MCP server name is the natural default — env var or config file
29
+ // can override it for deployment-specific naming (e.g. 'my-app-prod').
30
+ if (options.name && !currentConfig.OTEL_SERVICE_NAME) {
31
+ overrides.OTEL_SERVICE_NAME = options.name;
32
+ }
33
+ // Bridge transport HTTP options (discriminated union — narrowed by isHttpTransport)
34
+ const transport = options.transport;
35
+ if (isHttpTransport(transport)) {
36
+ if (transport.legacySseEnabled !== undefined) {
37
+ overrides.MCP_LEGACY_SSE_ENABLED = transport.legacySseEnabled;
38
+ }
39
+ if (transport.port !== undefined) {
40
+ overrides.MCP_PORT = transport.port;
41
+ }
42
+ if (transport.host !== undefined) {
43
+ overrides.MCP_BIND_HOST = transport.host;
44
+ }
45
+ if (transport.rateLimitMax !== undefined) {
46
+ overrides.MCP_RATE_LIMIT_MAX = transport.rateLimitMax;
47
+ }
48
+ if (transport.rateLimitWindowMs !== undefined) {
49
+ overrides.MCP_RATE_LIMIT_WINDOW_MS = transport.rateLimitWindowMs;
50
+ }
51
+ if (transport.trustProxy !== undefined) {
52
+ overrides.MCP_TRUST_PROXY = transport.trustProxy;
53
+ }
54
+ if (transport.stateless !== undefined) {
55
+ overrides.MCP_STATELESS = transport.stateless;
56
+ }
57
+ if (transport.enableJsonResponse !== undefined) {
58
+ overrides.MCP_JSON_RESPONSE = transport.enableJsonResponse;
59
+ }
60
+ if (transport.corsOrigin !== undefined) {
61
+ overrides.MCP_CORS_ORIGIN = transport.corsOrigin;
62
+ }
63
+ if (transport.corsCredentials !== undefined) {
64
+ overrides.MCP_CORS_CREDENTIALS = transport.corsCredentials;
65
+ }
66
+ if (transport.helmetHsts !== undefined) {
67
+ overrides.MCP_HELMET_HSTS = transport.helmetHsts;
68
+ }
69
+ if (transport.helmetCsp !== undefined) {
70
+ overrides.MCP_HELMET_CSP = transport.helmetCsp;
71
+ }
72
+ if (transport.helmetFrameOptions !== undefined) {
73
+ overrides.MCP_HELMET_FRAME_OPTIONS = transport.helmetFrameOptions;
74
+ }
75
+ }
76
+ // Bridge programmatic session options → config cache (limits only)
77
+ const session = options.session;
78
+ if (session) {
79
+ if (session.maxSessions !== undefined) {
80
+ overrides.MCP_MAX_SESSIONS = session.maxSessions;
81
+ }
82
+ }
83
+ return overrides;
84
+ }
85
+ //# sourceMappingURL=option-overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-overrides.js","sourceRoot":"","sources":["../../src/server/option-overrides.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Health and Readiness check routes
3
+ *
4
+ * Provides endpoints for container orchestration (Kubernetes, Docker Swarm, Docker Compose):
5
+ *
6
+ * /health - Liveness probe (is the process alive?)
7
+ * - Always returns 200 if server is running
8
+ * - Use: Kubernetes livenessProbe, basic uptime monitoring
9
+ *
10
+ * /ready - Readiness probe (can the server handle requests?)
11
+ * - 200 OK: Server is ready for traffic
12
+ * - 503 Service Unavailable: API configured but not connected
13
+ * - 429 Too Many Requests: Session limit reached
14
+ * - Use: Kubernetes readinessProbe, Docker HEALTHCHECK, load balancer health checks
15
+ *
16
+ * For Docker containers, use /ready as the HEALTHCHECK endpoint to ensure
17
+ * the container only receives traffic when fully operational.
18
+ *
19
+ * @module server/routes/health
20
+ */
21
+ import { Router } from "express";
22
+ import type { SessionManager } from "../session/index.js";
23
+ import type { ConnectionStateManager } from "../../connection/index.js";
24
+ import type { ServiceClient } from "../../connection/types.js";
25
+ export { ReadinessStatus, type ReadinessStatusValue } from "./readiness-status.js";
26
+ /**
27
+ * SSE transport information provider.
28
+ *
29
+ * Injected by the transport layer to decouple health checks
30
+ * from SSE implementation details.
31
+ */
32
+ export interface SseInfoProvider {
33
+ /** Whether SSE transport is enabled */
34
+ readonly enabled: boolean;
35
+ /** Get the current count of active SSE sessions */
36
+ getSessionCount(sessionManager: SessionManager): number;
37
+ }
38
+ /**
39
+ * Options for creating the health router.
40
+ */
41
+ export interface HealthRouterOptions<TService extends ServiceClient = ServiceClient> {
42
+ /** Session manager for tracking active sessions */
43
+ sessionManager: SessionManager;
44
+ /**
45
+ * Optional connection manager for API health checks.
46
+ * If not provided, API connectivity checks are skipped.
47
+ */
48
+ connectionManager?: ConnectionStateManager<TService> | undefined;
49
+ /**
50
+ * Function to check if API is configured.
51
+ * Reads from runtime environment to support Docker env_file.
52
+ * If not provided, defaults to checking for API_URL env var.
53
+ */
54
+ isApiConfigured?: (() => boolean) | undefined;
55
+ /**
56
+ * Label for the API in health responses (e.g., 'my-api', 'docker', 'kubernetes')
57
+ * Defaults to 'api'
58
+ */
59
+ apiLabel?: string | undefined;
60
+ /**
61
+ * Optional SSE transport information.
62
+ * If not provided, SSE-related information is omitted from health responses.
63
+ */
64
+ sseInfo?: SseInfoProvider | undefined;
65
+ }
66
+ /**
67
+ * Creates health check router with configurable API connection monitoring.
68
+ *
69
+ * @param options - Configuration options for the health router
70
+ * @returns Express router with /health and /ready endpoints
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * // Basic usage (no API monitoring)
75
+ * const router = createHealthRouter({ sessionManager });
76
+ *
77
+ * // With API connection monitoring
78
+ * const router = createHealthRouter({
79
+ * sessionManager,
80
+ * connectionManager: myConnectionManager,
81
+ * isApiConfigured: () => !!process.env.API_URL,
82
+ * apiLabel: 'api',
83
+ * });
84
+ * ```
85
+ */
86
+ export declare function createHealthRouter<TService extends ServiceClient = ServiceClient>(options: HealthRouterOptions<TService>): Router;
87
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA2B/D,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,mDAAmD;IACnD,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa;IACjF,mDAAmD;IACnD,cAAc,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAEjE;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;IAE9C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACvC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa,EAC/E,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACrC,MAAM,CAuIR"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Health and Readiness check routes
3
+ *
4
+ * Provides endpoints for container orchestration (Kubernetes, Docker Swarm, Docker Compose):
5
+ *
6
+ * /health - Liveness probe (is the process alive?)
7
+ * - Always returns 200 if server is running
8
+ * - Use: Kubernetes livenessProbe, basic uptime monitoring
9
+ *
10
+ * /ready - Readiness probe (can the server handle requests?)
11
+ * - 200 OK: Server is ready for traffic
12
+ * - 503 Service Unavailable: API configured but not connected
13
+ * - 429 Too Many Requests: Session limit reached
14
+ * - Use: Kubernetes readinessProbe, Docker HEALTHCHECK, load balancer health checks
15
+ *
16
+ * For Docker containers, use /ready as the HEALTHCHECK endpoint to ensure
17
+ * the container only receives traffic when fully operational.
18
+ *
19
+ * @module server/routes/health
20
+ */
21
+ import { Router } from "express";
22
+ import { getFrameworkConfig } from "../../config/index.js";
23
+ import { logger as baseLogger } from "../../logger/index.js";
24
+ // ============================================================================
25
+ // Constants
26
+ // ============================================================================
27
+ const ROUTES = {
28
+ HEALTH: "/health",
29
+ READY: "/ready",
30
+ };
31
+ const LOG_COMPONENT = "health";
32
+ const LogMessages = {
33
+ NOT_READY: "Server not ready: %s",
34
+ READINESS_CHECK: "Readiness check: status=%d, reason=%s",
35
+ };
36
+ const logger = baseLogger.child({ component: LOG_COMPONENT });
37
+ // ============================================================================
38
+ // Types
39
+ // ============================================================================
40
+ import { ReadinessStatus } from "./readiness-status.js";
41
+ export { ReadinessStatus } from "./readiness-status.js";
42
+ // ============================================================================
43
+ // Health Router Factory
44
+ // ============================================================================
45
+ /**
46
+ * Creates health check router with configurable API connection monitoring.
47
+ *
48
+ * @param options - Configuration options for the health router
49
+ * @returns Express router with /health and /ready endpoints
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Basic usage (no API monitoring)
54
+ * const router = createHealthRouter({ sessionManager });
55
+ *
56
+ * // With API connection monitoring
57
+ * const router = createHealthRouter({
58
+ * sessionManager,
59
+ * connectionManager: myConnectionManager,
60
+ * isApiConfigured: () => !!process.env.API_URL,
61
+ * apiLabel: 'api',
62
+ * });
63
+ * ```
64
+ */
65
+ export function createHealthRouter(options) {
66
+ const { sessionManager, connectionManager, isApiConfigured = () => !!process.env.API_URL?.trim(), apiLabel = "api", sseInfo, } = options;
67
+ const router = Router();
68
+ /**
69
+ * Liveness probe endpoint
70
+ * Returns 200 if the server process is running.
71
+ */
72
+ router.get(ROUTES.HEALTH, (_req, res) => {
73
+ const config = getFrameworkConfig();
74
+ const { byTransportType } = sessionManager.stats;
75
+ const streamableHttpCount = byTransportType.http + byTransportType.https;
76
+ const response = {
77
+ status: "healthy",
78
+ version: config.VERSION,
79
+ uptime: process.uptime(),
80
+ sessions: {
81
+ active: sessionManager.size,
82
+ streamableHttp: streamableHttpCount,
83
+ },
84
+ };
85
+ // Include SSE session count if enabled
86
+ if (sseInfo?.enabled) {
87
+ // @type-narrowing — response.sessions is narrower typed; SSE field added conditionally
88
+ response.sessions.sse = byTransportType.sse;
89
+ }
90
+ res.status(200).json(response);
91
+ });
92
+ /**
93
+ * Readiness probe endpoint
94
+ * Returns appropriate status code based on server readiness.
95
+ */
96
+ router.get(ROUTES.READY, (_req, res) => {
97
+ const config = getFrameworkConfig();
98
+ // Get API connection state (if connection manager is provided)
99
+ const connectionState = connectionManager?.getState() ?? "unknown";
100
+ const isApiConnected = connectionState === "connected";
101
+ // Read session limits from dynamic config
102
+ const maxSessions = config.MCP_MAX_SESSIONS;
103
+ const maxStreamableHttpSessions = config.MCP_MAX_STREAMABLE_HTTP_SESSIONS;
104
+ const maxSseSessions = config.MCP_MAX_SSE_SESSIONS;
105
+ // Check session limits using accurate per-transport-type counters
106
+ const { byTransportType } = sessionManager.stats;
107
+ const totalSessionCount = sessionManager.size;
108
+ const sseEnabled = sseInfo?.enabled ?? false;
109
+ const sseSessionCount = byTransportType.sse;
110
+ const streamableHttpSessionCount = byTransportType.http + byTransportType.https;
111
+ const totalAtLimit = totalSessionCount >= maxSessions;
112
+ const streamableHttpAtLimit = streamableHttpSessionCount >= maxStreamableHttpSessions;
113
+ const sseAtLimit = sseEnabled && sseSessionCount >= maxSseSessions;
114
+ const sessionsAtLimit = totalAtLimit || streamableHttpAtLimit || sseAtLimit;
115
+ // Determine readiness
116
+ const hasApiConfig = isApiConfigured();
117
+ const apiReady = !hasApiConfig || isApiConnected;
118
+ // Determine status code
119
+ let status;
120
+ let reason;
121
+ if (sessionsAtLimit) {
122
+ status = ReadinessStatus.TOO_MANY_REQUESTS;
123
+ if (totalAtLimit) {
124
+ reason = `Total session limit reached (${totalSessionCount}/${maxSessions})`;
125
+ }
126
+ else if (streamableHttpAtLimit) {
127
+ reason = `Streamable HTTP session limit reached (${streamableHttpSessionCount}/${maxStreamableHttpSessions})`;
128
+ }
129
+ else {
130
+ reason = `SSE session limit reached (${sseSessionCount}/${maxSseSessions})`;
131
+ }
132
+ }
133
+ else if (!apiReady) {
134
+ status = ReadinessStatus.SERVICE_UNAVAILABLE;
135
+ reason = `${apiLabel} not connected (state: ${connectionState})`;
136
+ }
137
+ else {
138
+ status = ReadinessStatus.READY;
139
+ reason = "Server is ready";
140
+ }
141
+ const isReady = status === ReadinessStatus.READY;
142
+ // Log readiness state — warn on not-ready, debug on ready
143
+ if (!isReady) {
144
+ logger.warn(LogMessages.NOT_READY, reason);
145
+ }
146
+ else {
147
+ logger.debug(LogMessages.READINESS_CHECK, status, reason);
148
+ }
149
+ const response = {
150
+ ready: isReady,
151
+ status: reason,
152
+ version: config.VERSION,
153
+ uptime: process.uptime(),
154
+ [apiLabel]: {
155
+ configured: hasApiConfig,
156
+ state: connectionState,
157
+ connected: isApiConnected,
158
+ },
159
+ sessions: {
160
+ total: {
161
+ current: totalSessionCount,
162
+ max: maxSessions,
163
+ atLimit: totalAtLimit,
164
+ },
165
+ streamableHttp: {
166
+ current: streamableHttpSessionCount,
167
+ max: maxStreamableHttpSessions,
168
+ atLimit: streamableHttpAtLimit,
169
+ },
170
+ ...(sseEnabled && {
171
+ sse: {
172
+ current: sseSessionCount,
173
+ max: maxSseSessions,
174
+ atLimit: sseAtLimit,
175
+ },
176
+ }),
177
+ },
178
+ };
179
+ res.status(status).json(response);
180
+ });
181
+ return router;
182
+ }
183
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Server Routes
3
+ *
4
+ * Express route handlers for server-level endpoints (health, readiness, metrics)
5
+ * and MCP transport routers (Streamable HTTP, legacy SSE).
6
+ *
7
+ * @module server/routes
8
+ */
9
+ export { createHealthRouter, ReadinessStatus } from "./health.js";
10
+ export type { HealthRouterOptions, SseInfoProvider } from "./health.js";
11
+ export { createMetricsRouter } from "./metrics.js";
12
+ export { createStreamableHttpRouter } from "./streamable-http-router.js";
13
+ export { createSseRouter, isSseEnabled, getSseSessionCount } from "./sse-router.js";
14
+ export { createOAuthRouter } from "./oauth-router.js";
15
+ export type { OAuthRouterOptions } from "./oauth-router.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Server Routes
3
+ *
4
+ * Express route handlers for server-level endpoints (health, readiness, metrics)
5
+ * and MCP transport routers (Streamable HTTP, legacy SSE).
6
+ *
7
+ * @module server/routes
8
+ */
9
+ // ===== Health & Readiness =====
10
+ export { createHealthRouter, ReadinessStatus } from "./health.js";
11
+ // ===== Prometheus Metrics =====
12
+ export { createMetricsRouter } from "./metrics.js";
13
+ // ===== MCP Transport Routers =====
14
+ export { createStreamableHttpRouter } from "./streamable-http-router.js";
15
+ export { createSseRouter, isSseEnabled, getSseSessionCount } from "./sse-router.js";
16
+ // ===== OAuth Router =====
17
+ export { createOAuthRouter } from "./oauth-router.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,iCAAiC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE,iCAAiC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,oCAAoC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,2BAA2B;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Prometheus Metrics Route
3
+ *
4
+ * Exposes OpenTelemetry metrics in Prometheus text format at `/metrics`.
5
+ *
6
+ * The route delegates to the embedded PrometheusExporter registered as a
7
+ * MetricReader in the SDK. When telemetry is disabled or 'prometheus' is
8
+ * not in OTEL_METRICS_EXPORTER, the endpoint returns 503.
9
+ *
10
+ * All metrics are collected centrally by OpenTelemetry — no custom metric
11
+ * implementations. The Prometheus exporter serializes the same data that
12
+ * is also exported to OTLP backends.
13
+ *
14
+ * Exposed metrics include:
15
+ * - `mcp_server_*` — MCP server metrics (requests, sessions, errors, uptime, memory)
16
+ * - `http_server_*` — HTTP server metrics from auto-instrumentation
17
+ * - `target_info` — Service resource attributes
18
+ *
19
+ * @module server/routes/metrics
20
+ */
21
+ import { Router } from "express";
22
+ /**
23
+ * Creates an Express router that serves Prometheus-formatted metrics.
24
+ *
25
+ * Delegates to the `PrometheusExporter` request handler registered as a
26
+ * MetricReader in the SDK ({@link initializeTelemetry}). Returns 503 when
27
+ * telemetry is disabled or 'prometheus' is not in OTEL_METRICS_EXPORTER.
28
+ *
29
+ * @returns Express Router with GET /metrics handler
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { createMetricsRouter } from './routes/metrics.js';
34
+ *
35
+ * const app = express();
36
+ * app.use(createMetricsRouter());
37
+ * ```
38
+ */
39
+ export declare function createMetricsRouter(): Router;
40
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/server/routes/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0BjC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA4B5C"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Prometheus Metrics Route
3
+ *
4
+ * Exposes OpenTelemetry metrics in Prometheus text format at `/metrics`.
5
+ *
6
+ * The route delegates to the embedded PrometheusExporter registered as a
7
+ * MetricReader in the SDK. When telemetry is disabled or 'prometheus' is
8
+ * not in OTEL_METRICS_EXPORTER, the endpoint returns 503.
9
+ *
10
+ * All metrics are collected centrally by OpenTelemetry — no custom metric
11
+ * implementations. The Prometheus exporter serializes the same data that
12
+ * is also exported to OTLP backends.
13
+ *
14
+ * Exposed metrics include:
15
+ * - `mcp_server_*` — MCP server metrics (requests, sessions, errors, uptime, memory)
16
+ * - `http_server_*` — HTTP server metrics from auto-instrumentation
17
+ * - `target_info` — Service resource attributes
18
+ *
19
+ * @module server/routes/metrics
20
+ */
21
+ import { Router } from "express";
22
+ import { getPrometheusExporter } from "../../telemetry/index.js";
23
+ import { logger as baseLogger } from "../../logger/index.js";
24
+ const COMPONENT = "MetricsRoute";
25
+ const logger = baseLogger.child({ component: COMPONENT });
26
+ /** @internal Log messages for the metrics route */
27
+ const LogMessages = {
28
+ TELEMETRY_DISABLED: "Metrics endpoint requested but Prometheus exporter is not available",
29
+ };
30
+ // ============================================================================
31
+ // Content Types
32
+ // ============================================================================
33
+ /**
34
+ * Prometheus text exposition format content type.
35
+ * @see https://prometheus.io/docs/instrumenting/exposition_formats/
36
+ */
37
+ const PROMETHEUS_CONTENT_TYPE = "text/plain; version=0.0.4; charset=utf-8";
38
+ // ============================================================================
39
+ // Metrics Router Factory
40
+ // ============================================================================
41
+ /**
42
+ * Creates an Express router that serves Prometheus-formatted metrics.
43
+ *
44
+ * Delegates to the `PrometheusExporter` request handler registered as a
45
+ * MetricReader in the SDK ({@link initializeTelemetry}). Returns 503 when
46
+ * telemetry is disabled or 'prometheus' is not in OTEL_METRICS_EXPORTER.
47
+ *
48
+ * @returns Express Router with GET /metrics handler
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * import { createMetricsRouter } from './routes/metrics.js';
53
+ *
54
+ * const app = express();
55
+ * app.use(createMetricsRouter());
56
+ * ```
57
+ */
58
+ export function createMetricsRouter() {
59
+ const router = Router();
60
+ router.get("/metrics", (req, res) => {
61
+ const exporter = getPrometheusExporter();
62
+ if (!exporter) {
63
+ logger.debug(LogMessages.TELEMETRY_DISABLED);
64
+ res.status(503).json({
65
+ error: "Prometheus metrics not available",
66
+ hint: 'Set OTEL_ENABLED=true and include "prometheus" in OTEL_METRICS_EXPORTER',
67
+ });
68
+ return;
69
+ }
70
+ // @express-api — PrometheusExporter.getMetricsRequestHandler expects
71
+ // Node.js IncomingMessage/ServerResponse, which Express req/res extend.
72
+ // @type-narrowing — getPrometheusExporter() returns `unknown` because the
73
+ // PrometheusExporter class is lazy-loaded (DD-020). The null check above
74
+ // guarantees the exporter exists, and its API is known.
75
+ res.setHeader("Content-Type", PROMETHEUS_CONTENT_TYPE);
76
+ const handler = exporter;
77
+ handler.getMetricsRequestHandler(req, res);
78
+ });
79
+ return router;
80
+ }
81
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/server/routes/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,SAAS,GAAG,cAAc,CAAC;AACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAE1D,mDAAmD;AACnD,MAAM,WAAW,GAAG;IAClB,kBAAkB,EAAE,qEAAqE;CACjF,CAAC;AAEX,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;AAE3E,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,yEAAyE;aAChF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,wDAAwD;QACxD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,QAEf,CAAC;QACF,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * OAuth Router Middleware
3
+ *
4
+ * Wraps the SDK's `mcpAuthRouter()` to mount OAuth 2.1 endpoints
5
+ * when a full OAuth provider is configured.
6
+ *
7
+ * Routes mounted:
8
+ * - `GET /authorize` — Authorization endpoint
9
+ * - `POST /token` — Token endpoint
10
+ * - `POST /register` — Dynamic client registration
11
+ * - `POST /revoke` — Token revocation
12
+ * - `GET /.well-known/oauth-authorization-server` — Authorization Server Metadata (RFC 8414)
13
+ * - `GET /.well-known/oauth-protected-resource` — Protected Resource Metadata (RFC 9728)
14
+ *
15
+ * Only created when the provider is a full `OAuthServerProvider`
16
+ * (detected via {@link isFullOAuthProvider}).
17
+ *
18
+ * @module server/routes/oauth-router
19
+ */
20
+ import type { RequestHandler } from "express";
21
+ import type { OAuthServerProvider } from "@modelcontextprotocol/sdk/server/auth/provider.js";
22
+ /**
23
+ * Options for creating the OAuth router.
24
+ */
25
+ export interface OAuthRouterOptions {
26
+ /** Full OAuth server provider (must have `clientsStore`) */
27
+ readonly provider: OAuthServerProvider;
28
+ /**
29
+ * OAuth issuer URL (Authorization Server identifier).
30
+ * Required by the MCP SDK for Authorization Server Metadata (RFC 8414).
31
+ */
32
+ readonly issuerUrl: URL;
33
+ /**
34
+ * Scopes supported by this authorization server.
35
+ * Advertised in the Authorization Server Metadata document.
36
+ */
37
+ readonly scopesSupported?: readonly string[] | undefined;
38
+ }
39
+ /**
40
+ * Creates an Express router with OAuth 2.1 endpoints.
41
+ *
42
+ * Delegates to the SDK's `mcpAuthRouter()` for the actual endpoint
43
+ * implementation. The router handles authorization, token exchange,
44
+ * client registration, and discovery metadata.
45
+ *
46
+ * @param options - OAuth router configuration
47
+ * @returns Express request handler (router) with OAuth endpoints
48
+ */
49
+ export declare function createOAuthRouter(options: OAuthRouterOptions): RequestHandler;
50
+ //# sourceMappingURL=oauth-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-router.d.ts","sourceRoot":"","sources":["../../../src/server/routes/oauth-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAqB7F;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC1D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,CAY7E"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * OAuth Router Middleware
3
+ *
4
+ * Wraps the SDK's `mcpAuthRouter()` to mount OAuth 2.1 endpoints
5
+ * when a full OAuth provider is configured.
6
+ *
7
+ * Routes mounted:
8
+ * - `GET /authorize` — Authorization endpoint
9
+ * - `POST /token` — Token endpoint
10
+ * - `POST /register` — Dynamic client registration
11
+ * - `POST /revoke` — Token revocation
12
+ * - `GET /.well-known/oauth-authorization-server` — Authorization Server Metadata (RFC 8414)
13
+ * - `GET /.well-known/oauth-protected-resource` — Protected Resource Metadata (RFC 9728)
14
+ *
15
+ * Only created when the provider is a full `OAuthServerProvider`
16
+ * (detected via {@link isFullOAuthProvider}).
17
+ *
18
+ * @module server/routes/oauth-router
19
+ */
20
+ import { mcpAuthRouter } from "@modelcontextprotocol/sdk/server/auth/router.js";
21
+ import { logger as baseLogger } from "../../logger/index.js";
22
+ // ============================================================================
23
+ // Logger
24
+ // ============================================================================
25
+ const LOG_COMPONENT = "oauth-router";
26
+ const LogMessages = {
27
+ MOUNTED: "OAuth router mounted (issuer: %s)",
28
+ };
29
+ const logger = baseLogger.child({ component: LOG_COMPONENT });
30
+ // ============================================================================
31
+ // Factory
32
+ // ============================================================================
33
+ /**
34
+ * Creates an Express router with OAuth 2.1 endpoints.
35
+ *
36
+ * Delegates to the SDK's `mcpAuthRouter()` for the actual endpoint
37
+ * implementation. The router handles authorization, token exchange,
38
+ * client registration, and discovery metadata.
39
+ *
40
+ * @param options - OAuth router configuration
41
+ * @returns Express request handler (router) with OAuth endpoints
42
+ */
43
+ export function createOAuthRouter(options) {
44
+ const { provider, issuerUrl, scopesSupported } = options;
45
+ const routerOptions = {
46
+ provider,
47
+ issuerUrl,
48
+ ...(scopesSupported && { scopesSupported: [...scopesSupported] }),
49
+ };
50
+ logger.info(LogMessages.MOUNTED, issuerUrl.toString());
51
+ return mcpAuthRouter(routerOptions);
52
+ }
53
+ //# sourceMappingURL=oauth-router.js.map