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,428 @@
1
+ /**
2
+ * MCP Session
3
+ *
4
+ * Represents a single MCP client session. Each session wraps an SDK McpServer
5
+ * instance with SDK-native cancellation and progress support.
6
+ *
7
+ * Key responsibilities:
8
+ * - One client = one session = one SDK McpServer (1:1 per MCP spec)
9
+ * - Delegates tool/resource/prompt/task registration to registrar modules
10
+ * - Manages per-session resource subscriptions
11
+ * - Uses SDK's native AbortSignal for cancellation (per-request, protocol-managed)
12
+ *
13
+ * @module server/session/mcp-session
14
+ */
15
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
16
+ import { SubscribeRequestSchema, UnsubscribeRequestSchema, SetLevelRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
17
+ import { setupPingHandler } from "../../mcp/handlers/index.js";
18
+ import { ToolRegistry, ResourceRegistry, PromptRegistry, TaskToolRegistry, } from "../../mcp/capabilities/registry/index.js";
19
+ import { hasAllRequiredScopes } from "../../mcp/capabilities/registry/scope-enforcement.js";
20
+ import { logger as frameworkLogger } from "../../logger/index.js";
21
+ // ============================================================================
22
+ // Constants
23
+ // ============================================================================
24
+ const LOG_COMPONENT = "mcp-session";
25
+ const LogMessages = {
26
+ SESSION_CREATED: "MCP session created: %s v%s",
27
+ SESSION_CLOSED: "MCP session closed",
28
+ SESSION_ERROR: "MCP session error: %s",
29
+ // Subscriptions
30
+ SUBSCRIPTION_HANDLERS_REGISTERED: "Subscription handlers registered",
31
+ RESOURCE_SUBSCRIBED: "Subscribed to resource: %s",
32
+ RESOURCE_UNSUBSCRIBED: "Unsubscribed from resource: %s",
33
+ RESOURCE_UPDATED_SENT: "Sent resource updated notification: %s",
34
+ RESOURCE_UPDATED_SKIPPED: "Skipped resource updated (not subscribed): %s",
35
+ // Logging
36
+ LOG_LEVEL_SET: "Client requested log level: %s",
37
+ LOG_SET_LEVEL_HANDLER_REGISTERED: "logging/setLevel handler registered",
38
+ // Scope-filtered list handlers
39
+ SCOPE_FILTER_INSTALLED: "Scope-filtered list handlers installed (tools: %d, resources: %d, templates: %d, prompts: %d scoped)",
40
+ SCOPE_FILTER_SKIPPED: "No scoped capabilities — scope-filtered list handlers not needed",
41
+ };
42
+ // ============================================================================
43
+ // McpSession Class
44
+ // ============================================================================
45
+ /**
46
+ * A managed MCP client session.
47
+ *
48
+ * Each session wraps an SDK McpServer instance. Cancellation and progress
49
+ * are handled natively by the SDK — no additional tracking layer needed.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const session = new McpSession({
54
+ * name: 'my-server',
55
+ * version: '1.0.0',
56
+ * capabilities: { tools: {} },
57
+ * });
58
+ *
59
+ * // Access underlying SDK server for transport connection
60
+ * await session.sdk.connect(transport);
61
+ * ```
62
+ */
63
+ export class McpSession {
64
+ /** The underlying MCP SDK server instance */
65
+ sdk;
66
+ /** Session options */
67
+ options;
68
+ /** URIs this session has subscribed to for resource update notifications */
69
+ subscribedURIs = new Set();
70
+ logger = frameworkLogger.child({ component: LOG_COMPONENT });
71
+ onCloseCallback;
72
+ onErrorCallback;
73
+ /**
74
+ * Creates a new McpSession instance.
75
+ *
76
+ * Cancellation is handled natively by the SDK's Protocol layer
77
+ * (per-request AbortController, keyed by real JSON-RPC request ID).
78
+ * Progress reporting uses the SDK's extra.sendNotification with
79
+ * rate-limiting applied by createProgressReporter().
80
+ *
81
+ * @param options - Session configuration options
82
+ */
83
+ constructor(options) {
84
+ this.options = Object.freeze({ ...options });
85
+ // Create the underlying SDK server with pre-built capabilities
86
+ this.sdk = new McpServer({ name: options.name, version: options.version }, {
87
+ capabilities: options.capabilities,
88
+ ...(options.taskStore && { taskStore: options.taskStore }),
89
+ ...(options.taskMessageQueue && {
90
+ taskMessageQueue: options.taskMessageQueue,
91
+ }),
92
+ });
93
+ // Setup protocol handlers (only ping — cancellation is SDK-native)
94
+ setupPingHandler(this.sdk, options.handlers?.onPing);
95
+ // Setup lifecycle callbacks
96
+ this.setupLifecycleCallbacks();
97
+ this.logger.debug(LogMessages.SESSION_CREATED, options.name, options.version);
98
+ }
99
+ // ─────────────────────────────────────────────────────────────────────────
100
+ // Public API
101
+ // ─────────────────────────────────────────────────────────────────────────
102
+ /** Server name */
103
+ get name() {
104
+ return this.options.name;
105
+ }
106
+ /** Server version */
107
+ get version() {
108
+ return this.options.version;
109
+ }
110
+ /**
111
+ * Set callback for session close events.
112
+ */
113
+ onClose(callback) {
114
+ this.onCloseCallback = callback;
115
+ return this;
116
+ }
117
+ /**
118
+ * Set callback for session error events.
119
+ */
120
+ onError(callback) {
121
+ this.onErrorCallback = callback;
122
+ return this;
123
+ }
124
+ /**
125
+ * Clean up session resources.
126
+ *
127
+ * Closes the underlying SDK McpServer, releasing protocol-level resources
128
+ * (pending requests, open streams, registered handlers). This is the
129
+ * counterpart to `sdk.connect(transport)` — every connected session
130
+ * should be disposed when no longer needed.
131
+ *
132
+ * Called by:
133
+ * - SessionManager (stateful sessions — on close/closeAll)
134
+ * - StreamableHttpTransport (stateless sessions — on response close)
135
+ *
136
+ * Safe to call multiple times — sdk.close() is idempotent.
137
+ */
138
+ async dispose() {
139
+ try {
140
+ await this.sdk.close();
141
+ this.logger.trace(LogMessages.SESSION_CLOSED);
142
+ }
143
+ catch (error) {
144
+ this.logger.warn(LogMessages.SESSION_ERROR, error instanceof Error ? error.message : String(error));
145
+ }
146
+ finally {
147
+ // Release callback references to allow GC of captured closures
148
+ this.onCloseCallback = undefined;
149
+ this.onErrorCallback = undefined;
150
+ }
151
+ }
152
+ // ─────────────────────────────────────────────────────────────────────────
153
+ // SDK Registration — Delegates to Registry.bindToSdk()
154
+ // ─────────────────────────────────────────────────────────────────────────
155
+ /**
156
+ * Registers all tools with the MCP SDK server.
157
+ * Delegates to ToolRegistry.bindToSdk().
158
+ */
159
+ registerTools(tools) {
160
+ ToolRegistry.bindToSdk(this.sdk, tools, {
161
+ logger: this.logger,
162
+ stateless: this.options.stateless ?? false,
163
+ });
164
+ }
165
+ /**
166
+ * Registers task tools with the MCP SDK's experimental tasks API.
167
+ * Delegates to TaskToolRegistry.bindToSdk().
168
+ *
169
+ * @experimental MCP Tasks is an experimental SDK feature
170
+ */
171
+ registerTaskTools(taskTools) {
172
+ TaskToolRegistry.bindToSdk(this.sdk, taskTools, {
173
+ logger: this.logger,
174
+ stateless: this.options.stateless ?? false,
175
+ });
176
+ }
177
+ /**
178
+ * Registers all resources (static + templates) with the MCP SDK server.
179
+ * Delegates to ResourceRegistry.bindToSdk().
180
+ */
181
+ registerResources(resources, templates) {
182
+ ResourceRegistry.bindToSdk(this.sdk, resources, templates, {
183
+ logger: this.logger,
184
+ });
185
+ }
186
+ /**
187
+ * Registers all prompts with the MCP SDK server.
188
+ * Delegates to PromptRegistry.bindToSdk().
189
+ */
190
+ registerPrompts(prompts) {
191
+ PromptRegistry.bindToSdk(this.sdk, prompts, {
192
+ logger: this.logger,
193
+ });
194
+ }
195
+ // ─────────────────────────────────────────────────────────────────────────
196
+ // SDK Registration — Resource Subscriptions
197
+ // ─────────────────────────────────────────────────────────────────────────
198
+ /**
199
+ * Registers request handlers for `resources/subscribe` and `resources/unsubscribe`.
200
+ *
201
+ * @sdk-constraint — The SDK's high-level `McpServer` does not handle subscription
202
+ * requests. This uses the low-level `Server.setRequestHandler()` API to register
203
+ * handlers for the subscribe/unsubscribe JSON-RPC methods.
204
+ *
205
+ * Subscription tracking is per-session (this `McpSession` instance).
206
+ * When `notifyResourceUpdated(uri)` is called, only sessions that
207
+ * subscribed to the given URI receive `notifications/resources/updated`.
208
+ *
209
+ * In stateless mode, subscriptions are not meaningful (no persistent session),
210
+ * so this method should not be called for stateless sessions.
211
+ */
212
+ registerSubscriptionHandlers() {
213
+ this.sdk.server.setRequestHandler(SubscribeRequestSchema, async (request) => {
214
+ const { uri } = request.params;
215
+ this.subscribedURIs.add(uri);
216
+ this.logger.trace(LogMessages.RESOURCE_SUBSCRIBED, uri);
217
+ return {};
218
+ });
219
+ this.sdk.server.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
220
+ const { uri } = request.params;
221
+ this.subscribedURIs.delete(uri);
222
+ this.logger.trace(LogMessages.RESOURCE_UNSUBSCRIBED, uri);
223
+ return {};
224
+ });
225
+ this.logger.trace(LogMessages.SUBSCRIPTION_HANDLERS_REGISTERED);
226
+ }
227
+ /**
228
+ * Sends a `notifications/resources/updated` notification to this session's client
229
+ * if the session has subscribed to the given URI.
230
+ *
231
+ * @param uri - The resource URI that was updated
232
+ */
233
+ async sendResourceUpdated(uri) {
234
+ if (!this.subscribedURIs.has(uri)) {
235
+ this.logger.trace(LogMessages.RESOURCE_UPDATED_SKIPPED, uri);
236
+ return;
237
+ }
238
+ try {
239
+ await this.sdk.server.sendResourceUpdated({ uri });
240
+ this.logger.trace(LogMessages.RESOURCE_UPDATED_SENT, uri);
241
+ }
242
+ catch (error) {
243
+ this.logger.warn("Error sending resource updated for %s: %s", uri, String(error));
244
+ }
245
+ }
246
+ // ─────────────────────────────────────────────────────────────────────────
247
+ // LogNotificationHandler — Bridge logger → MCP client
248
+ // ─────────────────────────────────────────────────────────────────────────
249
+ /**
250
+ * Sends a log notification to the connected MCP client.
251
+ * Implements {@link LogNotificationHandler} so this session can be
252
+ * registered directly with the MCP notification logger.
253
+ */
254
+ async sendLogNotification(level, message) {
255
+ await this.sdk.server.sendLoggingMessage({ level, data: message });
256
+ }
257
+ // ─────────────────────────────────────────────────────────────────────────
258
+ // SDK Registration — logging/setLevel
259
+ // ─────────────────────────────────────────────────────────────────────────
260
+ /**
261
+ * Registers a request handler for `logging/setLevel`.
262
+ *
263
+ * Per MCP Spec: When the server declares `logging: {}` capability, clients
264
+ * can send `logging/setLevel` to control which log notifications they receive.
265
+ * The handler updates the McpNotificationLogger's minimum level so that
266
+ * only messages at or above the requested level are forwarded.
267
+ *
268
+ * @param onSetLevel - Callback to apply the requested level (typically mcpLogger.setMinLevel)
269
+ */
270
+ registerSetLevelHandler(onSetLevel) {
271
+ this.sdk.server.setRequestHandler(SetLevelRequestSchema, async (request) => {
272
+ // @type-narrowing — SDK validates params against SetLevelRequestParamsSchema
273
+ const level = request.params.level;
274
+ onSetLevel(level);
275
+ this.logger.debug(LogMessages.LOG_LEVEL_SET, level);
276
+ return {};
277
+ });
278
+ this.logger.trace(LogMessages.LOG_SET_LEVEL_HANDLER_REGISTERED);
279
+ }
280
+ // ─────────────────────────────────────────────────────────────────────────
281
+ // Scope-Filtered List Handlers (Opt-in RBAC for capability listings)
282
+ // ─────────────────────────────────────────────────────────────────────────
283
+ /**
284
+ * Overrides `tools/list`, `resources/list`, `resources/templates/list`, and `prompts/list`
285
+ * handlers to filter out entries whose `requiredScopes` are not satisfied by the
286
+ * requesting user's token scopes.
287
+ *
288
+ * This wraps the SDK's original handlers — the full list is constructed by the SDK,
289
+ * then filtered before being returned to the client.
290
+ *
291
+ * Call this AFTER all tools/resources/prompts have been registered via `registerTools()` etc.
292
+ *
293
+ * @param options - All registered definitions (used to build scope lookup maps)
294
+ */
295
+ registerScopeFilteredListHandlers(options) {
296
+ // Build scope lookup maps
297
+ const toolScopes = new Map();
298
+ for (const t of options.tools) {
299
+ if (t.requiredScopes?.length)
300
+ toolScopes.set(t.name, t.requiredScopes);
301
+ }
302
+ const resourceScopes = new Map();
303
+ for (const r of options.resources) {
304
+ if (r.requiredScopes?.length)
305
+ resourceScopes.set(r.uri, r.requiredScopes);
306
+ }
307
+ const templateScopes = new Map();
308
+ for (const t of options.templates) {
309
+ if (t.requiredScopes?.length)
310
+ templateScopes.set(t.name, t.requiredScopes);
311
+ }
312
+ const promptScopes = new Map();
313
+ for (const p of options.prompts) {
314
+ if (p.requiredScopes?.length)
315
+ promptScopes.set(p.name, p.requiredScopes);
316
+ }
317
+ // Skip if nothing has scopes
318
+ const totalScoped = toolScopes.size + resourceScopes.size + templateScopes.size + promptScopes.size;
319
+ if (totalScoped === 0) {
320
+ this.logger.trace(LogMessages.SCOPE_FILTER_SKIPPED);
321
+ return;
322
+ }
323
+ // @sdk-constraint — _requestHandlers is private on Protocol but accessible at runtime.
324
+ // We wrap the SDK's original list handlers to add scope-based filtering.
325
+ // Guard: if the SDK changes its internal structure, fail gracefully instead of crashing.
326
+ const rawHandlers = this.sdk.server._requestHandlers;
327
+ if (!rawHandlers || !(rawHandlers instanceof Map)) {
328
+ this.logger.error("Cannot install scope-filtered list handlers: SDK _requestHandlers is %s. " +
329
+ "This may indicate an incompatible SDK version — scope filtering is disabled.", rawHandlers === undefined ? "undefined" : typeof rawHandlers);
330
+ return;
331
+ }
332
+ const handlers = rawHandlers;
333
+ const getTokenScopes = (extra) => {
334
+ const authInfo = extra.authInfo;
335
+ return authInfo?.scopes ?? [];
336
+ };
337
+ // Override tools/list
338
+ if (toolScopes.size > 0) {
339
+ const original = handlers.get("tools/list");
340
+ if (original) {
341
+ handlers.set("tools/list", async (request, extra) => {
342
+ const result = await original(request, extra);
343
+ const tokenScopes = getTokenScopes(extra);
344
+ const tools = (result.tools ?? []);
345
+ return {
346
+ ...result,
347
+ tools: tools.filter((tool) => {
348
+ const required = toolScopes.get(tool.name);
349
+ return !required || hasAllRequiredScopes(required, tokenScopes);
350
+ }),
351
+ };
352
+ });
353
+ }
354
+ }
355
+ // Override resources/list (filter static resources by URI)
356
+ if (resourceScopes.size > 0) {
357
+ const original = handlers.get("resources/list");
358
+ if (original) {
359
+ handlers.set("resources/list", async (request, extra) => {
360
+ const result = await original(request, extra);
361
+ const tokenScopes = getTokenScopes(extra);
362
+ const resources = (result.resources ?? []);
363
+ return {
364
+ ...result,
365
+ resources: resources.filter((resource) => {
366
+ const required = resourceScopes.get(resource.uri);
367
+ return !required || hasAllRequiredScopes(required, tokenScopes);
368
+ }),
369
+ };
370
+ });
371
+ }
372
+ }
373
+ // Override resources/templates/list (filter by template name)
374
+ if (templateScopes.size > 0) {
375
+ const original = handlers.get("resources/templates/list");
376
+ if (original) {
377
+ handlers.set("resources/templates/list", async (request, extra) => {
378
+ const result = await original(request, extra);
379
+ const tokenScopes = getTokenScopes(extra);
380
+ const templates = (result.resourceTemplates ?? []);
381
+ return {
382
+ ...result,
383
+ resourceTemplates: templates.filter((template) => {
384
+ const required = templateScopes.get(template.name);
385
+ return !required || hasAllRequiredScopes(required, tokenScopes);
386
+ }),
387
+ };
388
+ });
389
+ }
390
+ }
391
+ // Override prompts/list
392
+ if (promptScopes.size > 0) {
393
+ const original = handlers.get("prompts/list");
394
+ if (original) {
395
+ handlers.set("prompts/list", async (request, extra) => {
396
+ const result = await original(request, extra);
397
+ const tokenScopes = getTokenScopes(extra);
398
+ const prompts = (result.prompts ?? []);
399
+ return {
400
+ ...result,
401
+ prompts: prompts.filter((prompt) => {
402
+ const required = promptScopes.get(prompt.name);
403
+ return !required || hasAllRequiredScopes(required, tokenScopes);
404
+ }),
405
+ };
406
+ });
407
+ }
408
+ }
409
+ this.logger.debug(LogMessages.SCOPE_FILTER_INSTALLED, toolScopes.size, resourceScopes.size, templateScopes.size, promptScopes.size);
410
+ }
411
+ // ─────────────────────────────────────────────────────────────────────────
412
+ // Private Helpers
413
+ // ─────────────────────────────────────────────────────────────────────────
414
+ /**
415
+ * Sets up lifecycle callbacks on the underlying SDK server.
416
+ */
417
+ setupLifecycleCallbacks() {
418
+ this.sdk.server.onclose = () => {
419
+ this.logger.debug(LogMessages.SESSION_CLOSED);
420
+ this.onCloseCallback?.();
421
+ };
422
+ this.sdk.server.onerror = (error) => {
423
+ this.logger.error(LogMessages.SESSION_ERROR, error.message);
424
+ this.onErrorCallback?.(error);
425
+ };
426
+ }
427
+ }
428
+ //# sourceMappingURL=mcp-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-session.js","sourceRoot":"","sources":["../../../src/server/session/mcp-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * MCP Session Factory
3
+ *
4
+ * Responsible for creating fully-configured MCP sessions with pre-computed
5
+ * capabilities and all registered primitives. Capabilities are computed once
6
+ * at construction time since the input data (tools, resources, prompts) is
7
+ * immutable after server build.
8
+ *
9
+ * Extracted from McpServerInstance to satisfy the Single Responsibility
10
+ * Principle — the server orchestrates lifecycle, the factory creates sessions.
11
+ *
12
+ * @module server/session/session-factory
13
+ */
14
+ import type { ToolDefinition, ResourceStaticDefinition, ResourceTemplateDefinition, PromptDefinition, TaskToolDefinition, HandlersConfig } from "../../mcp/types/index.js";
15
+ import type { ServerCapabilities } from "../server-options.js";
16
+ import type { TaskStore, TaskMessageQueue } from "@modelcontextprotocol/sdk/experimental/tasks/interfaces.js";
17
+ import { McpSession } from "./mcp-session.js";
18
+ /**
19
+ * Configuration for the MCP session factory.
20
+ *
21
+ * All arrays should be frozen (immutable) after server build.
22
+ * Capabilities are computed once from this config at construction time.
23
+ */
24
+ export interface SessionFactoryConfig {
25
+ /** Server name passed to each MCP session */
26
+ readonly name: string;
27
+ /** Server version passed to each MCP session */
28
+ readonly version: string;
29
+ /** Server capabilities configuration */
30
+ readonly capabilities?: ServerCapabilities | undefined;
31
+ /** Custom protocol handler hooks */
32
+ readonly handlers?: HandlersConfig | undefined;
33
+ /** Whether sessions operate in stateless mode */
34
+ readonly stateless?: boolean | undefined;
35
+ /** Tool definitions to register on each session */
36
+ readonly tools: ReadonlyArray<ToolDefinition>;
37
+ /** Static resource definitions to register on each session */
38
+ readonly resources: ReadonlyArray<ResourceStaticDefinition>;
39
+ /** Resource template definitions to register on each session */
40
+ readonly resourceTemplates: ReadonlyArray<ResourceTemplateDefinition>;
41
+ /** Prompt definitions to register on each session */
42
+ readonly prompts: ReadonlyArray<PromptDefinition>;
43
+ /**
44
+ * Task tool definitions to register on each session.
45
+ *
46
+ * @experimental MCP Tasks is an experimental SDK feature
47
+ */
48
+ readonly taskTools: ReadonlyArray<TaskToolDefinition>;
49
+ /**
50
+ * Task store for experimental task support.
51
+ *
52
+ * When task tools are present, this is automatically set to
53
+ * `InMemoryTaskStore` unless a custom implementation is provided.
54
+ *
55
+ * @experimental MCP Tasks is an experimental SDK feature
56
+ */
57
+ readonly taskStore?: TaskStore | undefined;
58
+ /**
59
+ * Task message queue for experimental task support.
60
+ *
61
+ * When task tools are present, this is automatically set to
62
+ * `InMemoryTaskMessageQueue` unless a custom implementation is provided.
63
+ *
64
+ * @experimental MCP Tasks is an experimental SDK feature
65
+ */
66
+ readonly taskMessageQueue?: TaskMessageQueue | undefined;
67
+ /**
68
+ * When `true`, list handlers filter capabilities by user scopes.
69
+ *
70
+ * Only effective when definitions have `requiredScopes`.
71
+ * Default: `false` (spec-konform — all capabilities listed).
72
+ */
73
+ readonly scopeFilterCapabilities?: boolean | undefined;
74
+ }
75
+ /**
76
+ * Creates fully-configured MCP sessions.
77
+ *
78
+ * Capabilities are pre-computed once in the constructor since the input
79
+ * data is immutable after server build. Each `create()` call produces
80
+ * a new McpSession with all primitives registered — ready for transport
81
+ * connection.
82
+ *
83
+ * @internal Created by McpServerBuilder — do not instantiate directly.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const factory = new McpSessionFactory({
88
+ * name: 'my-server',
89
+ * version: '1.0.0',
90
+ * tools: frozenToolArray,
91
+ * resources: frozenResourceArray,
92
+ * resourceTemplates: frozenTemplateArray,
93
+ * prompts: frozenPromptArray,
94
+ * });
95
+ *
96
+ * const session = factory.create(); // Ready for transport.connect()
97
+ * ```
98
+ */
99
+ export declare class McpSessionFactory {
100
+ private readonly config;
101
+ /** Pre-computed SDK capabilities (immutable after construction) */
102
+ private readonly computedCapabilities;
103
+ /** Task store instance (shared across all sessions) */
104
+ private readonly taskStore;
105
+ /** Task message queue instance (shared across all sessions) */
106
+ private readonly taskMessageQueue;
107
+ constructor(config: SessionFactoryConfig);
108
+ /**
109
+ * Creates a new MCP session with all registered primitives.
110
+ *
111
+ * Called once for stdio mode, or per-client for HTTP mode.
112
+ * Each session wraps one SDK McpServer (1:1 per MCP spec).
113
+ *
114
+ * Session lifecycle is managed by the SessionManager —
115
+ * this factory only creates and configures sessions.
116
+ */
117
+ create(): McpSession;
118
+ }
119
+ //# sourceMappingURL=session-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-factory.d.ts","sourceRoot":"","sources":["../../../src/server/session/session-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAC;AAM9G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqB9C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,wCAAwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEvD,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAE/C,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEzC,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAE9C,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAE5D,gEAAgE;IAChE,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAEtE,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAEtD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAE3C;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAEzD;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxD;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,iBAAiB;IAUhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAE/D,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;gBAEnC,MAAM,EAAE,oBAAoB;IA4BzD;;;;;;;;OAQG;IACH,MAAM,IAAI,UAAU;CAwDrB"}