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,127 @@
1
+ /**
2
+ * OpenTelemetry Metrics for Server State
3
+ *
4
+ * Provides metrics collection for the MCP Server including:
5
+ * - Server uptime and startup time
6
+ * - Active sessions and connections
7
+ * - Request counts and latencies
8
+ * - Memory and resource usage
9
+ * - Connection state transitions
10
+ *
11
+ * @module server/telemetry/metrics
12
+ */
13
+ import { type ServerMetrics, type ServerStats } from "./core/index.js";
14
+ /**
15
+ * Server Metrics Manager
16
+ *
17
+ * Collects and exports metrics about server state and performance.
18
+ * Uses OpenTelemetry metrics API when available, falls back to in-memory tracking.
19
+ */
20
+ declare class ServerMetricsManager implements ServerMetrics {
21
+ private readonly startTime;
22
+ private totalRequests;
23
+ private failedRequests;
24
+ private activeHttpSessions;
25
+ private activeSseSessions;
26
+ private connectionStateChanges;
27
+ private instruments;
28
+ /** Resolves when OTEL instruments are initialized (or immediately if OTEL is disabled) */
29
+ private readonly ready;
30
+ private otelInitialized;
31
+ private otelDropWarningLogged;
32
+ constructor();
33
+ /**
34
+ * Wait for OTEL instrument initialization to complete.
35
+ *
36
+ * Not required for normal operation — in-memory counters work immediately.
37
+ * Useful when the caller needs to ensure OTEL metrics are captured from
38
+ * the very first request (e.g. in integration tests).
39
+ */
40
+ waitForReady(): Promise<void>;
41
+ /**
42
+ * Log a one-time debug warning when OTEL metrics are dropped
43
+ * because instruments aren't initialized yet.
44
+ */
45
+ private warnOtelNotReady;
46
+ /**
47
+ * Initialize OpenTelemetry metrics instruments.
48
+ * Async because @opentelemetry/api is lazy-loaded.
49
+ */
50
+ private initializeMetrics;
51
+ /**
52
+ * Record a request (tool invocation).
53
+ */
54
+ recordRequest(toolName: string, durationMs: number, success: boolean): void;
55
+ /**
56
+ * Record an active session change.
57
+ * @param transport - Transport type ('http' or 'sse')
58
+ * @param delta - Change in session count (+1 for new, -1 for closed)
59
+ */
60
+ recordSessionChange(transport: string, delta: number): void;
61
+ /**
62
+ * Record a connection state change.
63
+ */
64
+ recordConnectionStateChange(previousState: string, newState: string): void;
65
+ /**
66
+ * Record an error.
67
+ */
68
+ recordError(errorType: string, component: string): void;
69
+ /**
70
+ * Get current server statistics.
71
+ */
72
+ getStats(): ServerStats;
73
+ /**
74
+ * Reset all statistics.
75
+ * Useful for testing.
76
+ */
77
+ reset(): void;
78
+ }
79
+ /**
80
+ * Create a new ServerMetricsManager instance.
81
+ *
82
+ * Use this factory function for testing or when you need
83
+ * an independent metrics instance.
84
+ *
85
+ * @returns A new ServerMetricsManager instance
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * // For testing - create isolated instance
90
+ * const metrics = createServerMetrics();
91
+ * metrics.recordRequest('test-tool', 100, true);
92
+ * ```
93
+ */
94
+ export declare function createServerMetrics(): ServerMetricsManager;
95
+ /**
96
+ * Get the singleton ServerMetricsManager instance.
97
+ *
98
+ * This is the recommended way to access metrics in production code.
99
+ * The instance is lazily initialized on first access.
100
+ *
101
+ * @returns The singleton ServerMetricsManager instance
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * import { getServerMetrics } from './telemetry/metrics.js';
106
+ *
107
+ * const metrics = getServerMetrics();
108
+ * metrics.recordRequest('tool_name', 150, true);
109
+ * ```
110
+ */
111
+ export declare function getServerMetrics(): ServerMetricsManager;
112
+ /**
113
+ * Reset the singleton instance.
114
+ *
115
+ * **Warning**: Only use this for testing purposes.
116
+ * This will reset all tracked metrics. A fresh instance with new OTEL
117
+ * instruments will be created on the next `getServerMetrics()` call.
118
+ *
119
+ * Note: OTEL metric instruments are cumulative by design — resetting
120
+ * in-memory counters does not affect already-exported metric data points.
121
+ * The new instance re-creates instruments from the global MeterProvider.
122
+ *
123
+ * @internal
124
+ */
125
+ export declare function resetServerMetrics(): void;
126
+ export { ServerMetricsManager };
127
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAwCzB;;;;;GAKG;AACH,cAAM,oBAAqB,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,sBAAsB,CAAK;IAGnC,OAAO,CAAC,WAAW,CAAyB;IAE5C,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,qBAAqB,CAAS;;IAoBtC;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;YACW,iBAAiB;IAwE/B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IA0B3E;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAwB3D;;OAEG;IACH,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAe1E;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAavD;;OAEG;IACH,QAAQ,IAAI,WAAW;IAgBvB;;;OAGG;IACH,KAAK,IAAI,IAAI;CAOd;AASD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,IAAI,oBAAoB,CAE1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,IAAI,oBAAoB,CAKvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * OpenTelemetry Metrics for Server State
3
+ *
4
+ * Provides metrics collection for the MCP Server including:
5
+ * - Server uptime and startup time
6
+ * - Active sessions and connections
7
+ * - Request counts and latencies
8
+ * - Memory and resource usage
9
+ * - Connection state transitions
10
+ *
11
+ * @module server/telemetry/metrics
12
+ */
13
+ import { getTelemetryConfig, METRIC_ATTRIBUTES, METRIC_NAMES, METRIC_DESCRIPTIONS, METRIC_UNITS, TRANSPORT_TYPES, TELEMETRY_LOG_COMPONENTS, } from "./core/index.js";
14
+ import { logger as baseLogger } from "../logger/index.js";
15
+ const logger = baseLogger.child({
16
+ component: TELEMETRY_LOG_COMPONENTS.METRICS,
17
+ });
18
+ /**
19
+ * Lazily loads and caches the `metrics` namespace from `@opentelemetry/api`.
20
+ * Returns null if the import fails (shouldn't happen in production).
21
+ */
22
+ let metricsApi = null;
23
+ async function getMetricsApi() {
24
+ if (metricsApi)
25
+ return metricsApi;
26
+ const api = await import("@opentelemetry/api");
27
+ metricsApi = api.metrics;
28
+ return metricsApi;
29
+ }
30
+ /** @internal Log messages for metrics recording */
31
+ const LogMessages = {
32
+ METRIC_REQUEST_FAILED: "Failed to record request metric: %s",
33
+ METRIC_SESSION_FAILED: "Failed to record session metric: %s",
34
+ METRIC_CONNECTION_STATE_FAILED: "Failed to record connection state metric: %s",
35
+ METRIC_ERROR_FAILED: "Failed to record error metric: %s",
36
+ };
37
+ /**
38
+ * Server Metrics Manager
39
+ *
40
+ * Collects and exports metrics about server state and performance.
41
+ * Uses OpenTelemetry metrics API when available, falls back to in-memory tracking.
42
+ */
43
+ class ServerMetricsManager {
44
+ startTime;
45
+ totalRequests = 0;
46
+ failedRequests = 0;
47
+ activeHttpSessions = 0;
48
+ activeSseSessions = 0;
49
+ connectionStateChanges = 0;
50
+ // OpenTelemetry instruments
51
+ instruments = {};
52
+ /** Resolves when OTEL instruments are initialized (or immediately if OTEL is disabled) */
53
+ ready;
54
+ otelInitialized = false;
55
+ otelDropWarningLogged = false;
56
+ constructor() {
57
+ this.startTime = new Date();
58
+ // OTEL instruments are initialized asynchronously because the
59
+ // @opentelemetry/api import is lazy-loaded (see DD-020). The async
60
+ // init is fire-and-forget — in-memory counters always work regardless.
61
+ // In production the lazy singleton (`getServerMetrics()`) is created
62
+ // after `initializeTelemetry()`, so the await resolves near-instantly
63
+ // (module already cached).
64
+ this.ready = this.initializeMetrics()
65
+ .then(() => {
66
+ this.otelInitialized = true;
67
+ })
68
+ .catch((error) => {
69
+ const reason = error instanceof Error ? error.message : String(error);
70
+ logger.warn("OTEL metrics initialization failed: %s (in-memory metrics still active)", reason);
71
+ });
72
+ }
73
+ /**
74
+ * Wait for OTEL instrument initialization to complete.
75
+ *
76
+ * Not required for normal operation — in-memory counters work immediately.
77
+ * Useful when the caller needs to ensure OTEL metrics are captured from
78
+ * the very first request (e.g. in integration tests).
79
+ */
80
+ async waitForReady() {
81
+ await this.ready;
82
+ }
83
+ /**
84
+ * Log a one-time debug warning when OTEL metrics are dropped
85
+ * because instruments aren't initialized yet.
86
+ */
87
+ warnOtelNotReady() {
88
+ if (!this.otelDropWarningLogged && getTelemetryConfig().enabled) {
89
+ this.otelDropWarningLogged = true;
90
+ logger.debug("OTEL metrics instruments not yet initialized — OTEL metric dropped (in-memory counter still recorded)");
91
+ }
92
+ }
93
+ /**
94
+ * Initialize OpenTelemetry metrics instruments.
95
+ * Async because @opentelemetry/api is lazy-loaded.
96
+ */
97
+ async initializeMetrics() {
98
+ const config = getTelemetryConfig();
99
+ if (!config.enabled) {
100
+ return; // Skip OTEL setup if disabled
101
+ }
102
+ const metricsNamespace = await getMetricsApi();
103
+ const meter = metricsNamespace.getMeter(config.serviceName, config.serviceVersion);
104
+ // Request counter
105
+ this.instruments.requestCounter = meter.createCounter(METRIC_NAMES.REQUESTS_TOTAL, {
106
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.REQUESTS_TOTAL],
107
+ unit: METRIC_UNITS.COUNT,
108
+ });
109
+ // Request duration histogram
110
+ this.instruments.requestDuration = meter.createHistogram(METRIC_NAMES.REQUEST_DURATION, {
111
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.REQUEST_DURATION],
112
+ unit: METRIC_UNITS.MILLISECONDS,
113
+ });
114
+ // Session gauge (up/down counter for active sessions)
115
+ this.instruments.sessionGauge = meter.createUpDownCounter(METRIC_NAMES.SESSIONS_ACTIVE, {
116
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.SESSIONS_ACTIVE],
117
+ unit: METRIC_UNITS.COUNT,
118
+ });
119
+ // Connection state change counter
120
+ this.instruments.connectionStateCounter = meter.createCounter(METRIC_NAMES.CONNECTION_STATE_CHANGES, {
121
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.CONNECTION_STATE_CHANGES],
122
+ unit: METRIC_UNITS.COUNT,
123
+ });
124
+ // Error counter
125
+ this.instruments.errorCounter = meter.createCounter(METRIC_NAMES.ERRORS_TOTAL, {
126
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.ERRORS_TOTAL],
127
+ unit: METRIC_UNITS.COUNT,
128
+ });
129
+ // Observable gauges for system metrics
130
+ meter
131
+ .createObservableGauge(METRIC_NAMES.UPTIME, {
132
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.UPTIME],
133
+ unit: METRIC_UNITS.SECONDS,
134
+ })
135
+ .addCallback((result) => {
136
+ const uptimeSeconds = (Date.now() - this.startTime.getTime()) / 1000;
137
+ result.observe(uptimeSeconds);
138
+ });
139
+ meter
140
+ .createObservableGauge(METRIC_NAMES.MEMORY_HEAP_USED, {
141
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.MEMORY_HEAP_USED],
142
+ unit: METRIC_UNITS.BYTES,
143
+ })
144
+ .addCallback((result) => {
145
+ const memUsage = process.memoryUsage();
146
+ result.observe(memUsage.heapUsed);
147
+ });
148
+ meter
149
+ .createObservableGauge(METRIC_NAMES.MEMORY_RSS, {
150
+ description: METRIC_DESCRIPTIONS[METRIC_NAMES.MEMORY_RSS],
151
+ unit: METRIC_UNITS.BYTES,
152
+ })
153
+ .addCallback((result) => {
154
+ const memUsage = process.memoryUsage();
155
+ result.observe(memUsage.rss);
156
+ });
157
+ }
158
+ /**
159
+ * Record a request (tool invocation).
160
+ */
161
+ recordRequest(toolName, durationMs, success) {
162
+ this.totalRequests++;
163
+ if (!success) {
164
+ this.failedRequests++;
165
+ }
166
+ if (!this.otelInitialized) {
167
+ this.warnOtelNotReady();
168
+ return;
169
+ }
170
+ try {
171
+ const attributes = {
172
+ [METRIC_ATTRIBUTES.TOOL_NAME]: toolName,
173
+ [METRIC_ATTRIBUTES.SUCCESS]: String(success),
174
+ };
175
+ this.instruments.requestCounter?.add(1, attributes);
176
+ this.instruments.requestDuration?.record(durationMs, attributes);
177
+ }
178
+ catch (error) {
179
+ /* v8 ignore next 3 - OTEL error handling */
180
+ const message = error instanceof Error ? error.message : String(error);
181
+ logger.warn(LogMessages.METRIC_REQUEST_FAILED, message);
182
+ }
183
+ }
184
+ /**
185
+ * Record an active session change.
186
+ * @param transport - Transport type ('http' or 'sse')
187
+ * @param delta - Change in session count (+1 for new, -1 for closed)
188
+ */
189
+ recordSessionChange(transport, delta) {
190
+ let actualDelta = delta;
191
+ if (transport === TRANSPORT_TYPES.HTTP) {
192
+ const previous = this.activeHttpSessions;
193
+ this.activeHttpSessions = Math.max(0, previous + delta);
194
+ actualDelta = this.activeHttpSessions - previous;
195
+ }
196
+ else if (transport === TRANSPORT_TYPES.SSE) {
197
+ const previous = this.activeSseSessions;
198
+ this.activeSseSessions = Math.max(0, previous + delta);
199
+ actualDelta = this.activeSseSessions - previous;
200
+ }
201
+ try {
202
+ this.instruments.sessionGauge?.add(actualDelta, {
203
+ [METRIC_ATTRIBUTES.TRANSPORT]: transport,
204
+ });
205
+ }
206
+ catch (error) {
207
+ /* v8 ignore next 3 - OTEL error handling */
208
+ const message = error instanceof Error ? error.message : String(error);
209
+ logger.warn(LogMessages.METRIC_SESSION_FAILED, message);
210
+ }
211
+ }
212
+ /**
213
+ * Record a connection state change.
214
+ */
215
+ recordConnectionStateChange(previousState, newState) {
216
+ this.connectionStateChanges++;
217
+ try {
218
+ this.instruments.connectionStateCounter?.add(1, {
219
+ [METRIC_ATTRIBUTES.PREVIOUS_STATE]: previousState,
220
+ [METRIC_ATTRIBUTES.CURRENT_STATE]: newState,
221
+ });
222
+ }
223
+ catch (error) {
224
+ /* v8 ignore next 3 - OTEL error handling */
225
+ const message = error instanceof Error ? error.message : String(error);
226
+ logger.warn(LogMessages.METRIC_CONNECTION_STATE_FAILED, message);
227
+ }
228
+ }
229
+ /**
230
+ * Record an error.
231
+ */
232
+ recordError(errorType, component) {
233
+ try {
234
+ this.instruments.errorCounter?.add(1, {
235
+ [METRIC_ATTRIBUTES.ERROR_TYPE]: errorType,
236
+ [METRIC_ATTRIBUTES.COMPONENT]: component,
237
+ });
238
+ }
239
+ catch (error) {
240
+ /* v8 ignore next 3 - OTEL error handling */
241
+ const message = error instanceof Error ? error.message : String(error);
242
+ logger.warn(LogMessages.METRIC_ERROR_FAILED, message);
243
+ }
244
+ }
245
+ /**
246
+ * Get current server statistics.
247
+ */
248
+ getStats() {
249
+ const memUsage = process.memoryUsage();
250
+ return {
251
+ uptimeMs: Date.now() - this.startTime.getTime(),
252
+ startTime: this.startTime,
253
+ totalRequests: this.totalRequests,
254
+ failedRequests: this.failedRequests,
255
+ activeHttpSessions: this.activeHttpSessions,
256
+ activeSseSessions: this.activeSseSessions,
257
+ connectionStateChanges: this.connectionStateChanges,
258
+ memoryUsageBytes: memUsage.rss,
259
+ heapUsedBytes: memUsage.heapUsed,
260
+ };
261
+ }
262
+ /**
263
+ * Reset all statistics.
264
+ * Useful for testing.
265
+ */
266
+ reset() {
267
+ this.totalRequests = 0;
268
+ this.failedRequests = 0;
269
+ this.activeHttpSessions = 0;
270
+ this.activeSseSessions = 0;
271
+ this.connectionStateChanges = 0;
272
+ }
273
+ }
274
+ // ============================================================================
275
+ // Factory & Singleton
276
+ // ============================================================================
277
+ /** Singleton instance - lazily initialized */
278
+ let instance = null;
279
+ /**
280
+ * Create a new ServerMetricsManager instance.
281
+ *
282
+ * Use this factory function for testing or when you need
283
+ * an independent metrics instance.
284
+ *
285
+ * @returns A new ServerMetricsManager instance
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * // For testing - create isolated instance
290
+ * const metrics = createServerMetrics();
291
+ * metrics.recordRequest('test-tool', 100, true);
292
+ * ```
293
+ */
294
+ export function createServerMetrics() {
295
+ return new ServerMetricsManager();
296
+ }
297
+ /**
298
+ * Get the singleton ServerMetricsManager instance.
299
+ *
300
+ * This is the recommended way to access metrics in production code.
301
+ * The instance is lazily initialized on first access.
302
+ *
303
+ * @returns The singleton ServerMetricsManager instance
304
+ *
305
+ * @example
306
+ * ```typescript
307
+ * import { getServerMetrics } from './telemetry/metrics.js';
308
+ *
309
+ * const metrics = getServerMetrics();
310
+ * metrics.recordRequest('tool_name', 150, true);
311
+ * ```
312
+ */
313
+ export function getServerMetrics() {
314
+ if (!instance) {
315
+ instance = new ServerMetricsManager();
316
+ }
317
+ return instance;
318
+ }
319
+ /**
320
+ * Reset the singleton instance.
321
+ *
322
+ * **Warning**: Only use this for testing purposes.
323
+ * This will reset all tracked metrics. A fresh instance with new OTEL
324
+ * instruments will be created on the next `getServerMetrics()` call.
325
+ *
326
+ * Note: OTEL metric instruments are cumulative by design — resetting
327
+ * in-memory counters does not affect already-exported metric data points.
328
+ * The new instance re-creates instruments from the global MeterProvider.
329
+ *
330
+ * @internal
331
+ */
332
+ export function resetServerMetrics() {
333
+ instance = null;
334
+ }
335
+ // Export the class for testing
336
+ export { ServerMetricsManager };
337
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * OpenTelemetry SDK Initialization
3
+ *
4
+ * Handles the lifecycle of the OpenTelemetry SDK including:
5
+ * - SDK initialization with targeted instrumentation
6
+ * - Trace and metric export via OTLP/HTTP
7
+ * - Prometheus metrics embedded at `/metrics` on the MCP Express server
8
+ * - Graceful shutdown
9
+ *
10
+ * ## Configuration
11
+ *
12
+ * All OTEL settings are routed through the config system (env vars + config file).
13
+ * The framework builds exporters and readers explicitly from the unified config
14
+ * so that both env vars and config file are respected consistently.
15
+ *
16
+ * **Framework-managed** (with defaults):
17
+ * - `OTEL_ENABLED` — Master toggle (default: false)
18
+ * - `OTEL_SERVICE_NAME` — Service name (default: 'mcp-server')
19
+ * - `OTEL_METRICS_EXPORTER` — Metric exporters (default: 'otlp,prometheus')
20
+ * - `OTEL_LOGS_EXPORTER` — Log exporter (default: 'none' — framework has own logger)
21
+ *
22
+ * **Standard OTEL (pass-through, no defaults)**:
23
+ * - `OTEL_EXPORTER_OTLP_ENDPOINT` — OTLP endpoint URL
24
+ * - `OTEL_TRACES_EXPORTER` — Trace exporter: otlp (default), console, none
25
+ * - `OTEL_LOG_LEVEL` — SDK diagnostic log level
26
+ * - `OTEL_METRIC_EXPORT_INTERVAL` — Periodic metric export interval (ms)
27
+ *
28
+ * ## Environment Variable Synchronization
29
+ *
30
+ * The NodeSDK reads standard OTEL env vars directly from `process.env`
31
+ * for internal auto-configuration. Since the framework's config system
32
+ * deliberately does NOT mutate `process.env` (12-Factor compliance),
33
+ * config-file-only values would be invisible to the SDK.
34
+ *
35
+ * {@link syncOtelEnvironment} bridges this gap by writing config values
36
+ * to `process.env` for keys that are NOT already set, preserving the
37
+ * 12-Factor priority: env var > config file > default.
38
+ *
39
+ * ## DiagLogger / OTEL_LOG_LEVEL
40
+ *
41
+ * `OTEL_LOG_LEVEL` is consumed (deleted) from `process.env` in Step 0
42
+ * of {@link initializeTelemetry}, BEFORE the NodeSDK constructor.
43
+ * Without this, the SDK calls `diag.setLogger(new DiagConsoleLogger(), level)`
44
+ * — writing diagnostics to stdout and corrupting the MCP stdio transport.
45
+ *
46
+ * The framework sets `frameworkDiagLogger` as default DiagLogger,
47
+ * which routes all OTEL diagnostics through the framework's logging
48
+ * pipeline (→ stderr with secret scrubbing and structured formatting).
49
+ * Power users can override via `onBeforeTelemetryInit` callback.
50
+ *
51
+ * ## Why exporters are built manually
52
+ *
53
+ * The SDK's env-var auto-config is bypassed when `traceExporter` or
54
+ * `metricReaders` are passed to the NodeSDK constructor. Since we need
55
+ * to build metric readers manually (for Prometheus embedded mode), AND
56
+ * we want config-file support for all settings, we build both trace
57
+ * and metric exporters explicitly from the unified config.
58
+ *
59
+ * @module server/telemetry/sdk
60
+ */
61
+ /**
62
+ * Initialize the OpenTelemetry SDK.
63
+ * Call this at application startup, before any other code.
64
+ *
65
+ * All @opentelemetry/* packages are loaded dynamically on first call
66
+ * (see DD-020). When OTEL is disabled, no packages are loaded and
67
+ * the function returns immediately — saving ~15-20 MB of memory.
68
+ *
69
+ * Builds both trace and metric exporters from the unified config.
70
+ * Only HTTP and Express instrumentations are loaded — other
71
+ * auto-instrumentations are irrelevant for MCP servers.
72
+ *
73
+ * @param onBeforeInit - Optional callback invoked before SDK construction.
74
+ * Power users can call `diag.setLogger()` in this callback to override the
75
+ * framework's default DiagLogger. The callback runs AFTER the framework sets
76
+ * `frameworkDiagLogger` as default.
77
+ * @returns true if OpenTelemetry was initialized, false if disabled
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * import { initializeTelemetry } from './telemetry/index.js';
82
+ *
83
+ * const enabled = await initializeTelemetry();
84
+ * ```
85
+ */
86
+ export declare function initializeTelemetry(onBeforeInit?: () => void): Promise<boolean>;
87
+ /**
88
+ * Shutdown the OpenTelemetry SDK.
89
+ * Call this during application shutdown.
90
+ *
91
+ * @returns Promise that resolves when shutdown is complete
92
+ */
93
+ export declare function shutdownTelemetry(): Promise<void>;
94
+ /**
95
+ * Check if the SDK is currently initialized.
96
+ *
97
+ * @returns true if SDK is initialized
98
+ */
99
+ export declare function isSdkInitialized(): boolean;
100
+ /**
101
+ * Get the Prometheus exporter instance.
102
+ *
103
+ * Returns null when telemetry is disabled, not yet initialized,
104
+ * or 'prometheus' is not in OTEL_METRICS_EXPORTER.
105
+ * Used by the `/metrics` Express route to serve Prometheus metrics.
106
+ *
107
+ * @returns PrometheusExporter instance or null
108
+ */
109
+ export declare function getPrometheusExporter(): unknown;
110
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/telemetry/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAqIH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAqIrF;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}