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,441 @@
1
+ /**
2
+ * Framework Environment Configuration
3
+ *
4
+ * Environment variables for the generic MCP server framework.
5
+ * These settings are NOT application-specific and apply to any MCP server
6
+ * built with this framework.
7
+ *
8
+ * @module config/env
9
+ */
10
+ import { z } from "zod";
11
+ import { booleanFromEnv, optionalCommaSeparatedList, commaSeparatedList, byteSizeSchema, } from "../utils/zod-helpers.js";
12
+ import { BYTE_SIZE_REGEX } from "../utils/string-helpers.js";
13
+ import { readFileSync, accessSync, constants as fsConstants } from "node:fs";
14
+ import { fileURLToPath } from "node:url";
15
+ import { dirname, join } from "node:path";
16
+ // ============================================================================
17
+ // Version Resolution
18
+ // ============================================================================
19
+ /** Path to baked-in VERSION file (created during Docker build) */
20
+ const VERSION_FILE_PATH = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "VERSION");
21
+ /**
22
+ * Resolve application version from available sources.
23
+ *
24
+ * Single Source of Truth: package.json
25
+ *
26
+ * Resolution:
27
+ * - Docker: Reads from build/VERSION (baked in from package.json during build)
28
+ * - npm run: Uses npm_package_version (injected by npm from package.json)
29
+ *
30
+ * @returns Version string or 'unknown' if resolution fails
31
+ */
32
+ function resolveVersion() {
33
+ // Docker: VERSION file is baked in during build
34
+ try {
35
+ return readFileSync(VERSION_FILE_PATH, "utf-8").trim();
36
+ }
37
+ catch (_) {
38
+ // Not running in Docker container — VERSION file doesn't exist
39
+ }
40
+ // npm run: npm injects version from package.json
41
+ return process.env.npm_package_version ?? "unknown";
42
+ }
43
+ /** Cached version - resolved once at module load */
44
+ const VERSION = resolveVersion();
45
+ // ============================================================================
46
+ // Schema Definition
47
+ // ============================================================================
48
+ /**
49
+ * Framework environment schema - application-agnostic settings.
50
+ *
51
+ * Includes:
52
+ * - Application metadata (version, environment)
53
+ * - MCP Transport settings (host, port, transport mode)
54
+ * - Security settings (DNS rebinding protection, rate limiting)
55
+ * - Logging configuration
56
+ * - OpenTelemetry settings
57
+ */
58
+ export const frameworkEnvSchema = z
59
+ .object({
60
+ // ==========================================================================
61
+ // Application Metadata
62
+ // ==========================================================================
63
+ /**
64
+ * Application version (resolved at module load).
65
+ *
66
+ * Source of Truth: package.json
67
+ * - Docker: build/VERSION file (baked in during build)
68
+ * - npm run: npm_package_version environment variable
69
+ */
70
+ VERSION: z.string().default(VERSION),
71
+ /** Node environment (development, production, test) */
72
+ NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
73
+ // ==========================================================================
74
+ // MCP Transport Settings
75
+ // ==========================================================================
76
+ /** Host to bind the MCP server to (default: 127.0.0.1) */
77
+ MCP_BIND_HOST: z.string().min(1).default("127.0.0.1"),
78
+ /** Port to listen on (default: 8000) */
79
+ MCP_PORT: z.coerce.number().int().min(1).max(65535).default(8000),
80
+ /** Transport mode: 'stdio' for CLI, 'http' for HTTP, 'https' for HTTPS with TLS (default: http) */
81
+ MCP_TRANSPORT: z.enum(["stdio", "http", "https"]).default("stdio"),
82
+ /**
83
+ * Enable Legacy SSE Transport (deprecated HTTP+SSE from protocol 2024-11-05)
84
+ * Default: false (only Streamable HTTP Transport enabled)
85
+ * Set to 'true' to enable backwards compatibility with older MCP clients
86
+ */
87
+ MCP_LEGACY_SSE_ENABLED: booleanFromEnv(false),
88
+ /**
89
+ * Operate in stateless mode (no session IDs).
90
+ *
91
+ * Each request gets a fresh McpSession and SDK transport.
92
+ * No Mcp-Session-Id headers are set. GET and DELETE return 405.
93
+ *
94
+ * @default false (stateful mode)
95
+ */
96
+ MCP_STATELESS: booleanFromEnv(false),
97
+ /**
98
+ * Prefer JSON responses over SSE streams for simple request-response.
99
+ *
100
+ * When enabled, the SDK returns `application/json` for non-streaming
101
+ * responses (e.g. tools/list, resources/list) instead of wrapping them
102
+ * in a `text/event-stream` SSE envelope.
103
+ *
104
+ * The MCP specification recommends: "If the server is only sending one
105
+ * response with no notifications, it SHOULD prefer application/json."
106
+ *
107
+ * Streaming responses (progress, notifications) always use SSE regardless.
108
+ *
109
+ * @default true (spec-compliant JSON responses)
110
+ */
111
+ MCP_JSON_RESPONSE: booleanFromEnv(true),
112
+ // ==========================================================================
113
+ // TLS Configuration (HTTPS mode)
114
+ // ==========================================================================
115
+ /** Path to TLS certificate file (PEM format). Required when MCP_TRANSPORT='https'. */
116
+ MCP_TLS_CERT_PATH: z.string().min(1).optional(),
117
+ /** Path to TLS private key file (PEM format). Required when MCP_TRANSPORT='https'. */
118
+ MCP_TLS_KEY_PATH: z.string().min(1).optional(),
119
+ /** Path to CA certificate file (PEM format). Optional for custom CA chains. */
120
+ MCP_TLS_CA_PATH: z.string().min(1).optional(),
121
+ // ==========================================================================
122
+ // Security Settings
123
+ // ==========================================================================
124
+ /** Allowed hosts for DNS rebinding protection (comma-separated) */
125
+ MCP_ALLOWED_HOSTS: optionalCommaSeparatedList(),
126
+ /** Rate limit window in milliseconds (default: 900000 = 15 minutes) */
127
+ MCP_RATE_LIMIT_WINDOW_MS: z.coerce.number().int().min(1000).default(900000),
128
+ /** Maximum requests per rate limit window (default: 1000) */
129
+ MCP_RATE_LIMIT_MAX: z.coerce.number().int().min(100).default(1000),
130
+ /**
131
+ * Maximum request body size for `express.json()` middleware.
132
+ *
133
+ * Accepts Express size strings (e.g. `'1mb'`, `'500kb'`, `'2mb'`)
134
+ * or plain byte counts (e.g. `'1048576'`).
135
+ *
136
+ * Validated against the `bytes` library format used by Express/body-parser.
137
+ * Invalid values are rejected at config time to prevent silent limit bypass.
138
+ *
139
+ * @default '1mb'
140
+ */
141
+ MCP_BODY_SIZE_LIMIT: z
142
+ .string()
143
+ .regex(BYTE_SIZE_REGEX, 'Invalid body size format. Use formats like "1mb", "500kb", "2gb", or a plain byte count like "1048576".')
144
+ .default("1mb"),
145
+ /**
146
+ * Trust proxy setting for Express.
147
+ *
148
+ * Required when running behind a reverse proxy (nginx, Traefik, cloud LB)
149
+ * to correctly resolve client IPs, protocol, and host from proxy headers
150
+ * (`X-Forwarded-For`, `X-Forwarded-Proto`, `X-Forwarded-Host`).
151
+ *
152
+ * Values:
153
+ * - Hop count (`'1'`, `'2'`) — Trust N hops from the front-facing proxy
154
+ * - Express keyword (`'loopback'`, `'linklocal'`, `'uniquelocal'`)
155
+ * - IP address (`'10.0.0.1'`, `'::1'`)
156
+ * - CIDR range (`'10.0.0.0/8'`, `'172.16.0.0/12'`)
157
+ * - DNS hostname (`'proxy.example.com'`) — resolved at startup
158
+ * - Comma-separated list (`'loopback, 10.0.0.1'`)
159
+ *
160
+ * Omit or leave unset to disable trust proxy.
161
+ *
162
+ * @see https://expressjs.com/en/guide/behind-proxies.html
163
+ */
164
+ MCP_TRUST_PROXY: z.string().min(1).optional(),
165
+ /**
166
+ * CORS allowed origins (comma-separated).
167
+ *
168
+ * When set, the CORS middleware is mounted globally and allows requests
169
+ * from the listed origins. When unset, CORS is disabled (no CORS headers).
170
+ *
171
+ * Use `'*'` to allow all origins (not recommended for production).
172
+ *
173
+ * @example 'https://app.example.com,https://admin.example.com'
174
+ */
175
+ MCP_CORS_ORIGIN: optionalCommaSeparatedList(),
176
+ /**
177
+ * Allow credentials in CORS requests (cookies, auth headers).
178
+ *
179
+ * Only effective when MCP_CORS_ORIGIN is set.
180
+ * Cannot be used with `origin: '*'`.
181
+ *
182
+ * @default false
183
+ */
184
+ MCP_CORS_CREDENTIALS: booleanFromEnv(false),
185
+ /**
186
+ * Enable HTTP Strict Transport Security (HSTS) header.
187
+ *
188
+ * When true, Helmet sets `Strict-Transport-Security` with `max-age=15552000`
189
+ * (180 days) and `includeSubDomains`. Only enable when serving over HTTPS.
190
+ *
191
+ * @default false (managed by reverse proxy in production)
192
+ */
193
+ MCP_HELMET_HSTS: booleanFromEnv(false),
194
+ /**
195
+ * Content Security Policy configuration.
196
+ *
197
+ * - Omit or leave unset: Helmet default CSP applies
198
+ * - `'false'`: Disable CSP entirely
199
+ * - Custom string: Used as CSP directives (e.g. `"default-src 'self'"`).
200
+ * Parsed as directive-name + values separated by semicolons.
201
+ */
202
+ MCP_HELMET_CSP: z.string().min(1).optional(),
203
+ /**
204
+ * X-Frame-Options header value.
205
+ *
206
+ * Controls whether the server can be embedded in frames.
207
+ * - `'DENY'`: Never allow framing (most secure)
208
+ * - `'SAMEORIGIN'`: Allow framing from same origin
209
+ * - `'false'`: Disable X-Frame-Options header
210
+ *
211
+ * @default 'DENY'
212
+ */
213
+ MCP_HELMET_FRAME_OPTIONS: z.enum(["DENY", "SAMEORIGIN", "false"]).default("DENY"),
214
+ // ==========================================================================
215
+ // Authentication
216
+ // ==========================================================================
217
+ /**
218
+ * Required OAuth scopes for the `/mcp` endpoint (comma-separated).
219
+ *
220
+ * When set, all requests to `/mcp` must carry tokens with these scopes.
221
+ * Per-tool scopes can be configured via `ToolDefinition.auth.requiredScopes`.
222
+ *
223
+ * @example 'mcp:read,mcp:write'
224
+ */
225
+ MCP_AUTH_REQUIRED_SCOPES: optionalCommaSeparatedList(),
226
+ /**
227
+ * Protected Resource Metadata URL (RFC 9728).
228
+ *
229
+ * When set, included in `WWW-Authenticate` headers for 401 responses,
230
+ * allowing clients to discover the authorization server.
231
+ *
232
+ * @example 'https://api.example.com/.well-known/oauth-protected-resource'
233
+ */
234
+ MCP_AUTH_RESOURCE_METADATA_URL: z.string().url().optional(),
235
+ // ==========================================================================
236
+ // Session Management
237
+ // ==========================================================================
238
+ /** Maximum total concurrent sessions across all transports (default: 200) */
239
+ MCP_MAX_SESSIONS: z.coerce.number().int().min(1).default(200),
240
+ /** Maximum concurrent Streamable HTTP sessions (default: 100) */
241
+ MCP_MAX_STREAMABLE_HTTP_SESSIONS: z.coerce.number().int().min(1).default(100),
242
+ /** Maximum concurrent SSE sessions (default: 50) */
243
+ MCP_MAX_SSE_SESSIONS: z.coerce.number().int().min(1).default(50),
244
+ // ==========================================================================
245
+ // Logging Configuration
246
+ // ==========================================================================
247
+ /** Log level (trace, debug, info, warn, error) */
248
+ LOG_LEVEL: z.enum(["trace", "debug", "info", "warn", "error"]).default("info"),
249
+ /** Log format (text, json) */
250
+ LOG_FORMAT: z.enum(["text", "json"]).default("text"),
251
+ /** Include RFC 3339 timestamps in text log output (default: false) */
252
+ LOG_TIMESTAMP: booleanFromEnv(false),
253
+ /** Include component name (e.g. [server-runtime]) in text log output (default: false) */
254
+ LOG_COMPONENT: booleanFromEnv(false),
255
+ /** Directory to store logs (optional) */
256
+ LOG_DIR: z.string().min(1).optional(),
257
+ /**
258
+ * Maximum size of a single log file before rotation.
259
+ *
260
+ * Accepts human-readable size strings (e.g. `'10mb'`, `'500kb'`, `'1gb'`)
261
+ * or plain byte counts (e.g. `'1048576'`). Parsed to bytes at config time.
262
+ *
263
+ * @default '10mb'
264
+ */
265
+ LOG_MAX_FILE_SIZE: byteSizeSchema("10mb").pipe(z.number().int().min(1024)),
266
+ /** Maximum number of rotated log files to keep (default: 3) */
267
+ LOG_MAX_FILES: z.coerce.number().int().min(1).max(100).default(3),
268
+ /** Log file retention in days. Files older than this are deleted. 0 = disabled (default: 0) */
269
+ LOG_RETENTION_DAYS: z.coerce.number().int().min(0).default(0),
270
+ // ==========================================================================
271
+ // OpenTelemetry Configuration
272
+ //
273
+ // Standard OTEL env vars are parsed here so they can also be set via
274
+ // the config file. The SDK and exporters would read these from process.env
275
+ // natively, but routing them through the config system ensures a single
276
+ // source of truth and enables config-file-based setup.
277
+ // See: https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
278
+ // ==========================================================================
279
+ /** Enable OpenTelemetry (default: false). Master toggle for all OTEL features. */
280
+ OTEL_ENABLED: booleanFromEnv(false),
281
+ /**
282
+ * OpenTelemetry service name.
283
+ *
284
+ * When not set, defaults to the MCP server name from `createServer({ name })`.
285
+ * Can be overridden via env var or config file to distinguish deployments
286
+ * (e.g. 'app-mcp-prod' vs 'app-mcp-staging').
287
+ *
288
+ * Also read natively by the SDK's resource detector via OTEL_SERVICE_NAME.
289
+ */
290
+ OTEL_SERVICE_NAME: z.string().min(1).optional(),
291
+ /**
292
+ * OTLP exporter endpoint URL (e.g. http://localhost:4318).
293
+ *
294
+ * Used by both trace and metric OTLP exporters.
295
+ * Standard OTEL env var — also read natively by exporters,
296
+ * but parsed here to enable config file support.
297
+ */
298
+ OTEL_EXPORTER_OTLP_ENDPOINT: z.string().url().optional(),
299
+ /**
300
+ * Trace exporter selection.
301
+ *
302
+ * Standard OTEL env var. When set, the framework builds the
303
+ * trace exporter explicitly instead of leaving it to SDK auto-config.
304
+ * Supported: 'otlp' , 'console', 'none' (default).
305
+ */
306
+ OTEL_TRACES_EXPORTER: z.string().min(1).optional(),
307
+ /**
308
+ * Log exporter selection.
309
+ *
310
+ * Standard OTEL env var. Controls whether the NodeSDK auto-configures
311
+ * an OTLP log exporter. The framework uses its own logging system
312
+ * (see {@link Logger | framework logger}), so OTEL log export is disabled
313
+ * by default to prevent unwanted OTLP connections.
314
+ *
315
+ * Supported: 'otlp', 'console', 'none' (default).
316
+ */
317
+ OTEL_LOGS_EXPORTER: z.string().default("none"),
318
+ /**
319
+ * SDK diagnostic log level.
320
+ *
321
+ * Standard OTEL env var. Activates diag logging on the OTEL SDK.
322
+ * Values: 'NONE', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'VERBOSE', 'ALL'.
323
+ */
324
+ OTEL_LOG_LEVEL: z.string().min(1).optional(),
325
+ /**
326
+ * Periodic metric export interval in milliseconds.
327
+ *
328
+ * Standard OTEL env var name. Controls how often PeriodicExportingMetricReader
329
+ * pushes metrics to the OTLP endpoint or console.
330
+ */
331
+ OTEL_METRIC_EXPORT_INTERVAL: z.coerce.number().int().positive().optional(),
332
+ /**
333
+ * Metric exporters to activate (comma-separated).
334
+ *
335
+ * Standard OTEL env var name. Supported values:
336
+ * - `otlp` — Push metrics to OTLP endpoint (reads OTEL_EXPORTER_OTLP_ENDPOINT natively)
337
+ * - `prometheus` — Prometheus scrape endpoint at /metrics on the MCP server
338
+ * - `console` — Log metrics to console (useful for debugging)
339
+ * - `none` — Disable all metric export
340
+ *
341
+ * Default: 'otlp,prometheus' (both OTLP push + Prometheus pull)
342
+ */
343
+ OTEL_METRICS_EXPORTER: commaSeparatedList({ lowercase: true }).default("otlp,prometheus"),
344
+ })
345
+ .superRefine((data, ctx) => {
346
+ // Validate TLS configuration when HTTPS mode is selected
347
+ // Delegates to the shared constraint validator so the same rules
348
+ // apply regardless of config source (env, file, programmatic).
349
+ const violations = validateConfigConstraints(data);
350
+ for (const violation of violations) {
351
+ ctx.addIssue({
352
+ code: z.ZodIssueCode.custom,
353
+ message: violation.message,
354
+ path: [...violation.path],
355
+ });
356
+ }
357
+ });
358
+ /**
359
+ * Validate cross-field constraints on the framework configuration.
360
+ *
361
+ * Extracted as a standalone function so it can be called:
362
+ * 1. By the Zod schema's `superRefine` (env-only parsing)
363
+ * 2. By the config cache after merging all sources (env + file + overrides)
364
+ *
365
+ * @param config - The (potentially merged) configuration to validate
366
+ * @returns Array of constraint violations (empty = valid)
367
+ */
368
+ export function validateConfigConstraints(config) {
369
+ const violations = [];
370
+ // TLS constraint: HTTPS requires both cert and key paths
371
+ if (config.MCP_TRANSPORT === "https") {
372
+ if (!config.MCP_TLS_CERT_PATH) {
373
+ violations.push({
374
+ message: 'MCP_TLS_CERT_PATH is required when MCP_TRANSPORT is "https"',
375
+ path: ["MCP_TLS_CERT_PATH"],
376
+ });
377
+ }
378
+ if (!config.MCP_TLS_KEY_PATH) {
379
+ violations.push({
380
+ message: 'MCP_TLS_KEY_PATH is required when MCP_TRANSPORT is "https"',
381
+ path: ["MCP_TLS_KEY_PATH"],
382
+ });
383
+ }
384
+ // Validate TLS file existence and readability when paths are provided
385
+ if (config.MCP_TLS_CERT_PATH) {
386
+ try {
387
+ accessSync(config.MCP_TLS_CERT_PATH, fsConstants.R_OK);
388
+ }
389
+ catch {
390
+ violations.push({
391
+ message: `TLS certificate file not found or not readable: ${config.MCP_TLS_CERT_PATH}`,
392
+ path: ["MCP_TLS_CERT_PATH"],
393
+ });
394
+ }
395
+ }
396
+ if (config.MCP_TLS_KEY_PATH) {
397
+ try {
398
+ accessSync(config.MCP_TLS_KEY_PATH, fsConstants.R_OK);
399
+ }
400
+ catch {
401
+ violations.push({
402
+ message: `TLS private key file not found or not readable: ${config.MCP_TLS_KEY_PATH}`,
403
+ path: ["MCP_TLS_KEY_PATH"],
404
+ });
405
+ }
406
+ }
407
+ if (config.MCP_TLS_CA_PATH) {
408
+ try {
409
+ accessSync(config.MCP_TLS_CA_PATH, fsConstants.R_OK);
410
+ }
411
+ catch {
412
+ violations.push({
413
+ message: `TLS CA certificate file not found or not readable: ${config.MCP_TLS_CA_PATH}`,
414
+ path: ["MCP_TLS_CA_PATH"],
415
+ });
416
+ }
417
+ }
418
+ }
419
+ // Session limit hierarchy: transport-specific limits must not exceed the global limit
420
+ const transportSum = config.MCP_MAX_STREAMABLE_HTTP_SESSIONS + config.MCP_MAX_SSE_SESSIONS;
421
+ if (transportSum > config.MCP_MAX_SESSIONS) {
422
+ violations.push({
423
+ message: `MCP_MAX_STREAMABLE_HTTP_SESSIONS (${config.MCP_MAX_STREAMABLE_HTTP_SESSIONS}) + ` +
424
+ `MCP_MAX_SSE_SESSIONS (${config.MCP_MAX_SSE_SESSIONS}) = ${transportSum} exceeds ` +
425
+ `MCP_MAX_SESSIONS (${config.MCP_MAX_SESSIONS})`,
426
+ path: ["MCP_MAX_SESSIONS", "MCP_MAX_STREAMABLE_HTTP_SESSIONS", "MCP_MAX_SSE_SESSIONS"],
427
+ });
428
+ }
429
+ return violations;
430
+ }
431
+ /**
432
+ * Parse and validate an environment source against the framework schema.
433
+ *
434
+ * @param envSource - Key-value object to parse (defaults to `process.env`)
435
+ * @returns Validated framework configuration
436
+ * @internal Used only by config-cache.ts — consumers should use `getFrameworkConfig()`
437
+ */
438
+ export function parseFrameworkEnv(envSource = process.env) {
439
+ return frameworkEnvSchema.parse(envSource);
440
+ }
441
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Config Extensions
3
+ *
4
+ * Allows consumer projects to register custom config sections that
5
+ * are recognized during config file loading and validated with
6
+ * consumer-provided Zod schemas.
7
+ *
8
+ * This enables consumer-specific config file sections (e.g., `[myapp]`)
9
+ * without the framework warning about "unknown sections".
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { registerConfigSection, getAppConfig, z } from 'mcp-server-framework';
14
+ *
15
+ * // Register a custom section with a Zod schema
16
+ * registerConfigSection('myapp', z.object({
17
+ * url: z.string().url(),
18
+ * timeout_ms: z.number().int().positive().optional(),
19
+ * }));
20
+ *
21
+ * // After config is loaded, retrieve the validated section data
22
+ * const appConfig = getAppConfig<{ url: string; timeout_ms?: number }>('myapp');
23
+ * ```
24
+ *
25
+ * @module config/extensions
26
+ */
27
+ import type { ZodTypeAny } from "zod";
28
+ /**
29
+ * Register a custom config section for consumer use.
30
+ *
31
+ * Must be called **before** config initialization (i.e., before the
32
+ * first call to `getFrameworkConfig()`). Registered sections:
33
+ *
34
+ * 1. Are recognized in config files (no "unknown section" warning)
35
+ * 2. Are validated against the provided Zod schema
36
+ * 3. Can be retrieved via `getAppConfig(name)`
37
+ *
38
+ * @param name - Section name as it appears in the config file (e.g., 'myapp')
39
+ * @param schema - Zod schema to validate the section data
40
+ * @throws {ConfigurationError} If the section name is reserved, already registered,
41
+ * or config has already been initialized
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * registerConfigSection('myapp', z.object({
46
+ * url: z.string().url(),
47
+ * api_key: z.string().optional(),
48
+ * }));
49
+ * ```
50
+ */
51
+ export declare function registerConfigSection(name: string, schema: ZodTypeAny): void;
52
+ /**
53
+ * Retrieve the validated data for a registered config section.
54
+ *
55
+ * Returns `undefined` if:
56
+ * - The section was not present in the config file
57
+ * - Config has not been loaded yet
58
+ *
59
+ * @param name - Section name (case-insensitive)
60
+ * @returns The validated section data, or `undefined`
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * interface MyAppConfig {
65
+ * url: string;
66
+ * timeout_ms?: number;
67
+ * }
68
+ * const config = getAppConfig<MyAppConfig>('myapp');
69
+ * if (config) {
70
+ * console.log(config.url);
71
+ * }
72
+ * ```
73
+ */
74
+ export declare function getAppConfig<T = unknown>(name: string): T | undefined;
75
+ /**
76
+ * Get all registered consumer section names.
77
+ *
78
+ * Used by the config file loader to recognize consumer sections
79
+ * and suppress "unknown section" warnings.
80
+ *
81
+ * @internal
82
+ */
83
+ export declare function getRegisteredSectionNames(): ReadonlySet<string>;
84
+ /**
85
+ * Get the Zod schema for a registered section.
86
+ *
87
+ * @internal
88
+ */
89
+ export declare function getRegisteredSectionSchema(name: string): ZodTypeAny | undefined;
90
+ /**
91
+ * Store validated data for a registered section.
92
+ *
93
+ * Called by the config file loader after parsing and validating
94
+ * a consumer section from the config file.
95
+ *
96
+ * @internal
97
+ */
98
+ export declare function setRegisteredSectionData(name: string, data: unknown): void;
99
+ /**
100
+ * Reset all registered config sections.
101
+ *
102
+ * Intended for testing — clears all registrations and data.
103
+ *
104
+ * @internal
105
+ */
106
+ export declare function resetConfigExtensions(): void;
107
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/config/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAmCtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAoB5E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAIrE;AAMD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAK1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}