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,242 @@
1
+ /**
2
+ * Tool Registry
3
+ *
4
+ * Global registry for MCP tools that implements ToolProvider interface.
5
+ * Extends BaseRegistry for common CRUD operations and provides SDK binding.
6
+ *
7
+ * The registry is the single authority for tool definitions:
8
+ * - Storage: CRUD operations via BaseRegistry
9
+ * - SDK Binding: `bindToSdk()` registers tools with MCP SDK server instances
10
+ *
11
+ * @module mcp/capabilities/registry/tool-registry
12
+ */
13
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
14
+ import { createProgressReporter } from "../../handlers/index.js";
15
+ import { JsonRpcErrorCode } from "../../../errors/index.js";
16
+ import { withSpan, getServerMetrics, MCP_ATTRIBUTES, SpanKind } from "../../../telemetry/index.js";
17
+ import { BaseRegistry } from "./base-registry.js";
18
+ import { enforceScopeOrThrow } from "./scope-enforcement.js";
19
+ // ============================================================================
20
+ // Constants
21
+ // ============================================================================
22
+ const SdkBindingMessages = {
23
+ TOOLS_REGISTERED: "Registered %d tools with SDK",
24
+ TOOL_REGISTERED: "Registered tool: %s",
25
+ NO_TOOLS: "No tools to register",
26
+ TOOL_EXECUTING: "Tool [%s] executing",
27
+ TOOL_COMPLETED: "Tool [%s] completed in %dms",
28
+ TOOL_CANCELLED: "Tool [%s] cancelled",
29
+ TOOL_ERROR: "Error executing %s:",
30
+ REQUEST_CANCELLED_BEFORE: "Request was cancelled before execution",
31
+ REQUEST_CANCELLED: "Request was cancelled",
32
+ };
33
+ // ============================================================================
34
+ // Tool Registry Class
35
+ // ============================================================================
36
+ /**
37
+ * Registry for MCP tools that implements ToolProvider.
38
+ *
39
+ * Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
40
+ * and provides `bindToSdk()` for registering tools with MCP SDK server instances.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * import { toolRegistry, defineTool } from 'mcp-server-framework';
45
+ *
46
+ * // Tools are auto-registered via defineTool()
47
+ * defineTool({ name: 'greet', ... });
48
+ *
49
+ * // Registry can be used directly as a provider
50
+ * builder.withToolProvider(toolRegistry);
51
+ * ```
52
+ */
53
+ export class ToolRegistry extends BaseRegistry {
54
+ // ──────────────────────────────────────────────────────────────────────────
55
+ // Factory
56
+ // ──────────────────────────────────────────────────────────────────────────
57
+ /**
58
+ * Creates an isolated ToolRegistry (no shared global state).
59
+ *
60
+ * Used for testing.
61
+ */
62
+ static createIsolated() {
63
+ return new ToolRegistry();
64
+ }
65
+ // ──────────────────────────────────────────────────────────────────────────
66
+ // BaseRegistry Override
67
+ // ──────────────────────────────────────────────────────────────────────────
68
+ get itemTypeName() {
69
+ return "Tool";
70
+ }
71
+ // ──────────────────────────────────────────────────────────────────────────
72
+ // Generic Registration (Variance-Safe)
73
+ // ──────────────────────────────────────────────────────────────────────────
74
+ /**
75
+ * Register a tool from a generic factory function.
76
+ *
77
+ * Centralizes TypeScript generic variance handling. `ToolDefinition<TInput>`
78
+ * is invariant — `TInput` appears in both covariant (input property) and
79
+ * contravariant (handler parameter) positions via Zod's type mapping.
80
+ * TypeScript requires `as unknown as` because neither `ToolDefinition<TInput>`
81
+ * nor `ToolDefinition<ZodTypeAny>` sufficiently overlaps with the other.
82
+ *
83
+ * This is safe because the MCP SDK validates input via the Zod schema
84
+ * at runtime before the handler is invoked.
85
+ *
86
+ * @internal Used by defineTool() — prefer registerOrReplace() for non-generic usage.
87
+ */
88
+ registerFromFactory(tool) {
89
+ // @type-variance — Generic input erased for homogeneous storage; SDK validates at runtime
90
+ return this.registerOrReplace(tool);
91
+ }
92
+ // ──────────────────────────────────────────────────────────────────────────
93
+ // ToolProvider Implementation
94
+ // ──────────────────────────────────────────────────────────────────────────
95
+ /**
96
+ * Get all registered tools.
97
+ *
98
+ * @returns Readonly array of all tools
99
+ */
100
+ getTools() {
101
+ return this.getAll();
102
+ }
103
+ // ──────────────────────────────────────────────────────────────────────────
104
+ // SDK Binding
105
+ // ──────────────────────────────────────────────────────────────────────────
106
+ /**
107
+ * Registers tool definitions with an MCP SDK server instance.
108
+ *
109
+ * Each tool is registered with:
110
+ * - SDK-native cancellation via `extra.signal` (AbortSignal per request)
111
+ * - Rate-limited progress reporting via `extra.sendNotification`
112
+ * - Structured error handling with MCP error codes
113
+ * - OpenTelemetry tracing spans and metrics recording
114
+ * - Tool annotations passed through to the SDK
115
+ *
116
+ * @param sdk - The MCP SDK server instance
117
+ * @param tools - Tool definitions to register
118
+ * @param options - Registration context (logger, stateless mode)
119
+ * @internal
120
+ */
121
+ static bindToSdk(sdk, tools, options) {
122
+ const { logger, stateless } = options;
123
+ if (tools.length === 0) {
124
+ logger.trace(SdkBindingMessages.NO_TOOLS);
125
+ return;
126
+ }
127
+ logger.trace(SdkBindingMessages.TOOLS_REGISTERED, tools.length);
128
+ for (const tool of tools) {
129
+ sdk.registerTool(tool.name, {
130
+ description: tool.description,
131
+ inputSchema: tool.input,
132
+ ...(tool.annotations && { annotations: tool.annotations }),
133
+ ...(tool._meta && { _meta: tool._meta }),
134
+ }, async (args, extra) => {
135
+ const { signal: abortSignal, requestId, sessionId } = extra;
136
+ const progressToken = extra._meta?.progressToken;
137
+ const reportProgress = createProgressReporter(extra.sendNotification.bind(extra), progressToken);
138
+ // ── Auth Context from SDK ────────────────────────────────────────
139
+ // SDK flows req.auth → extra.authInfo when bearer auth middleware is active
140
+ const authInfo = extra.authInfo;
141
+ // Tool-level scope enforcement (RBAC)
142
+ enforceScopeOrThrow(tool.requiredScopes, authInfo, "Tool", tool.name, logger);
143
+ // Build auth context for tool handler
144
+ const auth = authInfo
145
+ ? {
146
+ authInfo,
147
+ extra: undefined,
148
+ }
149
+ : undefined;
150
+ // Cross-request features: only available in stateful mode + client capability
151
+ const isStateful = !stateless;
152
+ const clientCaps = sdk.server.getClientCapabilities();
153
+ const createMessage = isStateful && clientCaps?.sampling ? sdk.server.createMessage.bind(sdk.server) : undefined;
154
+ const listRoots = isStateful && clientCaps?.roots ? sdk.server.listRoots.bind(sdk.server) : undefined;
155
+ const elicitInput = isStateful && clientCaps?.elicitation ? sdk.server.elicitInput.bind(sdk.server) : undefined;
156
+ return ToolRegistry.executeToolCall(tool, args, {
157
+ reportProgress,
158
+ abortSignal,
159
+ requestId,
160
+ sessionId,
161
+ stateless,
162
+ ...(auth && { auth }),
163
+ ...(createMessage && { createMessage }),
164
+ ...(listRoots && { listRoots }),
165
+ ...(elicitInput && { elicitInput }),
166
+ }, logger);
167
+ });
168
+ logger.trace(SdkBindingMessages.TOOL_REGISTERED, tool.name);
169
+ }
170
+ }
171
+ // ──────────────────────────────────────────────────────────────────────────
172
+ // Private SDK Binding Helpers
173
+ // ──────────────────────────────────────────────────────────────────────────
174
+ /**
175
+ * Executes a tool handler with cancellation, progress, tracing, and error handling.
176
+ */
177
+ static executeToolCall(tool, args, context, logger) {
178
+ const startTime = Date.now();
179
+ let success = true;
180
+ return withSpan(`mcp.tool.${tool.name}`, async (span) => {
181
+ span.setAttributes({
182
+ [MCP_ATTRIBUTES.TOOL_NAME]: tool.name,
183
+ [MCP_ATTRIBUTES.OPERATION]: "tool_call",
184
+ [MCP_ATTRIBUTES.REQUEST_ID]: String(context.requestId),
185
+ ...(context.sessionId && {
186
+ [MCP_ATTRIBUTES.SESSION_ID]: context.sessionId,
187
+ }),
188
+ });
189
+ try {
190
+ // Check for pre-cancellation
191
+ if (context.abortSignal.aborted) {
192
+ // @sdk-constraint — SDK ErrorCode has no cancellation code; use framework's REQUEST_CANCELLED (-32002)
193
+ throw new McpError(JsonRpcErrorCode.REQUEST_CANCELLED, SdkBindingMessages.REQUEST_CANCELLED_BEFORE);
194
+ }
195
+ logger.info(SdkBindingMessages.TOOL_EXECUTING, tool.name);
196
+ // @sdk-constraint — SDK registerTool erases input schema type; args validated at runtime by SDK
197
+ const result = await tool.handler(args, context);
198
+ // Record result metadata on span
199
+ span.setAttributes({
200
+ [MCP_ATTRIBUTES.SUCCESS]: true,
201
+ [MCP_ATTRIBUTES.RESULT_IS_ERROR]: result.isError === true,
202
+ [MCP_ATTRIBUTES.RESULT_CONTENT_COUNT]: result.content?.length ?? 0,
203
+ });
204
+ return result;
205
+ }
206
+ catch (error) {
207
+ success = false;
208
+ // Handle cancellation
209
+ if (context.abortSignal.aborted || (error instanceof Error && error.name === "AbortError")) {
210
+ logger.info(SdkBindingMessages.TOOL_CANCELLED, tool.name);
211
+ span.setAttribute(MCP_ATTRIBUTES.SUCCESS, false);
212
+ // @sdk-constraint — SDK ErrorCode has no cancellation code; use framework's REQUEST_CANCELLED (-32002)
213
+ throw new McpError(JsonRpcErrorCode.REQUEST_CANCELLED, SdkBindingMessages.REQUEST_CANCELLED);
214
+ }
215
+ logger.error(SdkBindingMessages.TOOL_ERROR, tool.name, error);
216
+ span.setAttribute(MCP_ATTRIBUTES.SUCCESS, false);
217
+ if (error instanceof McpError) {
218
+ throw error;
219
+ }
220
+ throw new McpError(ErrorCode.InternalError, `Error executing ${tool.name}: ${error instanceof Error ? error.message : String(error)}`);
221
+ }
222
+ finally {
223
+ const durationMs = Date.now() - startTime;
224
+ getServerMetrics().recordRequest(tool.name, durationMs, success);
225
+ if (success) {
226
+ logger.debug(SdkBindingMessages.TOOL_COMPLETED, tool.name, durationMs);
227
+ }
228
+ }
229
+ }, { kind: SpanKind.SERVER });
230
+ }
231
+ }
232
+ // ============================================================================
233
+ // Global Singleton Instance
234
+ // ============================================================================
235
+ /**
236
+ * Global tool registry singleton.
237
+ *
238
+ * This instance is used by defineTool() for auto-registration
239
+ * and by createServer() to discover all tools.
240
+ */
241
+ export const globalToolRegistry = new ToolRegistry();
242
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Resource Definition Factory
3
+ *
4
+ * Provides the defineResource() and defineResourceTemplate() factory functions
5
+ * for zero-boilerplate resource registration. Resources defined with these
6
+ * functions are automatically registered in global registries.
7
+ *
8
+ * @module mcp/capabilities/resources/define-resource
9
+ */
10
+ import type { z } from "zod";
11
+ import type { ResourceStaticDefinition, ResourceTemplateDefinition } from "../../types/index.js";
12
+ /**
13
+ * Define a resource with automatic registration.
14
+ *
15
+ * This is the recommended way to define static resources in the framework.
16
+ * The resource is automatically registered in the global registry when defined.
17
+ *
18
+ * @param definition - Resource definition with name, description, uri, and read handler
19
+ * @returns The registered resource (for re-export and type inference)
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // resources/config.ts
24
+ * import { defineResource } from 'mcp-server-framework';
25
+ *
26
+ * export const configResource = defineResource({
27
+ * name: 'app-config',
28
+ * description: 'Application configuration',
29
+ * uri: 'myapp://config/main',
30
+ * mimeType: 'application/json',
31
+ * read: async () => JSON.stringify({
32
+ * version: '1.0.0',
33
+ * environment: process.env.NODE_ENV,
34
+ * }),
35
+ * });
36
+ * ```
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // resources/readme.ts - Text resource
41
+ * import { defineResource } from 'mcp-server-framework';
42
+ * import { readFile } from 'fs/promises';
43
+ *
44
+ * export const readmeResource = defineResource({
45
+ * name: 'readme',
46
+ * description: 'Project README file',
47
+ * uri: 'myapp://docs/readme',
48
+ * mimeType: 'text/markdown',
49
+ * read: async () => readFile('./README.md', 'utf-8'),
50
+ * });
51
+ * ```
52
+ */
53
+ export declare function defineResource(definition: ResourceStaticDefinition): ResourceStaticDefinition;
54
+ /**
55
+ * Define a resource template with automatic registration.
56
+ *
57
+ * Resource templates support dynamic URIs using RFC 6570 URI Templates.
58
+ * The template is automatically registered in the global registry when defined.
59
+ *
60
+ * @typeParam TInput - Zod object schema for parameter validation
61
+ * @param definition - Template definition with name, description, uriTemplate, and read handler
62
+ * @returns The registered template (for re-export and type inference)
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // resources/logs.ts - With typed parameters
67
+ * import { defineResourceTemplate } from 'mcp-server-framework';
68
+ * import { z } from 'zod';
69
+ *
70
+ * export const logResource = defineResourceTemplate({
71
+ * name: 'log-viewer',
72
+ * description: 'View application logs by ID',
73
+ * uriTemplate: 'myapp://logs/{logId}',
74
+ * mimeType: 'text/plain',
75
+ * input: z.object({
76
+ * logId: z.string().describe('Log identifier'),
77
+ * }),
78
+ * read: async ({ logId }) => {
79
+ * const log = await fetchLogById(logId);
80
+ * return log.content;
81
+ * },
82
+ * });
83
+ * ```
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * // resources/users.ts - User profile template
88
+ * import { defineResourceTemplate } from 'mcp-server-framework';
89
+ *
90
+ * export const userProfileResource = defineResourceTemplate({
91
+ * name: 'user-profile',
92
+ * description: 'Get user profile by ID',
93
+ * uriTemplate: 'myapp://users/{userId}/profile',
94
+ * mimeType: 'application/json',
95
+ * read: async ({ userId }) => {
96
+ * const user = await getUserById(userId);
97
+ * return JSON.stringify(user);
98
+ * },
99
+ * });
100
+ * ```
101
+ */
102
+ export declare function defineResourceTemplate<TInput extends z.AnyZodObject = z.AnyZodObject>(definition: ResourceTemplateDefinition<TInput>): ResourceTemplateDefinition<TInput>;
103
+ //# sourceMappingURL=define-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/resources/define-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAajG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,CAU7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,EACnF,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAC7C,0BAA0B,CAAC,MAAM,CAAC,CAiCpC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Resource Definition Factory
3
+ *
4
+ * Provides the defineResource() and defineResourceTemplate() factory functions
5
+ * for zero-boilerplate resource registration. Resources defined with these
6
+ * functions are automatically registered in global registries.
7
+ *
8
+ * @module mcp/capabilities/resources/define-resource
9
+ */
10
+ import { globalResourceRegistry } from "../registry/index.js";
11
+ import { validateDefinitionBase, validateNonEmptyString, validateFunction, validateZodSchema, } from "../../../utils/index.js";
12
+ // ============================================================================
13
+ // Factory Functions
14
+ // ============================================================================
15
+ /**
16
+ * Define a resource with automatic registration.
17
+ *
18
+ * This is the recommended way to define static resources in the framework.
19
+ * The resource is automatically registered in the global registry when defined.
20
+ *
21
+ * @param definition - Resource definition with name, description, uri, and read handler
22
+ * @returns The registered resource (for re-export and type inference)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // resources/config.ts
27
+ * import { defineResource } from 'mcp-server-framework';
28
+ *
29
+ * export const configResource = defineResource({
30
+ * name: 'app-config',
31
+ * description: 'Application configuration',
32
+ * uri: 'myapp://config/main',
33
+ * mimeType: 'application/json',
34
+ * read: async () => JSON.stringify({
35
+ * version: '1.0.0',
36
+ * environment: process.env.NODE_ENV,
37
+ * }),
38
+ * });
39
+ * ```
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * // resources/readme.ts - Text resource
44
+ * import { defineResource } from 'mcp-server-framework';
45
+ * import { readFile } from 'fs/promises';
46
+ *
47
+ * export const readmeResource = defineResource({
48
+ * name: 'readme',
49
+ * description: 'Project README file',
50
+ * uri: 'myapp://docs/readme',
51
+ * mimeType: 'text/markdown',
52
+ * read: async () => readFile('./README.md', 'utf-8'),
53
+ * });
54
+ * ```
55
+ */
56
+ export function defineResource(definition) {
57
+ // Validate required fields (safety net for JS consumers and empty strings)
58
+ validateDefinitionBase(definition, "Resource");
59
+ validateNonEmptyString(definition.uri, "Resource", "uri");
60
+ validateFunction(definition.read, "Resource", "read");
61
+ // Auto-register in global registry (replace if exists for hot-reload support)
62
+ globalResourceRegistry.registerOrReplaceResource(definition);
63
+ return definition;
64
+ }
65
+ /**
66
+ * Define a resource template with automatic registration.
67
+ *
68
+ * Resource templates support dynamic URIs using RFC 6570 URI Templates.
69
+ * The template is automatically registered in the global registry when defined.
70
+ *
71
+ * @typeParam TInput - Zod object schema for parameter validation
72
+ * @param definition - Template definition with name, description, uriTemplate, and read handler
73
+ * @returns The registered template (for re-export and type inference)
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // resources/logs.ts - With typed parameters
78
+ * import { defineResourceTemplate } from 'mcp-server-framework';
79
+ * import { z } from 'zod';
80
+ *
81
+ * export const logResource = defineResourceTemplate({
82
+ * name: 'log-viewer',
83
+ * description: 'View application logs by ID',
84
+ * uriTemplate: 'myapp://logs/{logId}',
85
+ * mimeType: 'text/plain',
86
+ * input: z.object({
87
+ * logId: z.string().describe('Log identifier'),
88
+ * }),
89
+ * read: async ({ logId }) => {
90
+ * const log = await fetchLogById(logId);
91
+ * return log.content;
92
+ * },
93
+ * });
94
+ * ```
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * // resources/users.ts - User profile template
99
+ * import { defineResourceTemplate } from 'mcp-server-framework';
100
+ *
101
+ * export const userProfileResource = defineResourceTemplate({
102
+ * name: 'user-profile',
103
+ * description: 'Get user profile by ID',
104
+ * uriTemplate: 'myapp://users/{userId}/profile',
105
+ * mimeType: 'application/json',
106
+ * read: async ({ userId }) => {
107
+ * const user = await getUserById(userId);
108
+ * return JSON.stringify(user);
109
+ * },
110
+ * });
111
+ * ```
112
+ */
113
+ export function defineResourceTemplate(definition) {
114
+ // Validate required fields (safety net for JS consumers and empty strings)
115
+ validateDefinitionBase(definition, "ResourceTemplate");
116
+ validateNonEmptyString(definition.uriTemplate, "ResourceTemplate", "uriTemplate");
117
+ validateFunction(definition.read, "ResourceTemplate", "read");
118
+ // Basic RFC 6570 check: uriTemplate must contain at least one {varName} placeholder
119
+ if (!/{[a-zA-Z_]\w*}/.test(definition.uriTemplate)) {
120
+ throw new TypeError(`ResourceTemplate '${definition.name}': uriTemplate must contain at least one {variable} placeholder (RFC 6570), got '${definition.uriTemplate}'`);
121
+ }
122
+ // Validate optional Zod schema if provided (consistent with defineTool)
123
+ if (definition.input) {
124
+ validateZodSchema(definition.input, "ResourceTemplate", "input");
125
+ // Validate URI template variables match schema fields
126
+ const uriVars = [...definition.uriTemplate.matchAll(/\{(\w+)\}/g)].map((m) => m[1] ?? "");
127
+ const schemaKeys = Object.keys(definition.input.shape);
128
+ const missingInSchema = uriVars.filter((v) => !schemaKeys.includes(v));
129
+ if (missingInSchema.length > 0) {
130
+ throw new TypeError(`ResourceTemplate '${definition.name}': URI template variables {${missingInSchema.join(", ")}} have no corresponding fields in the input schema`);
131
+ }
132
+ }
133
+ // Auto-register in global registry (variance handled by registry)
134
+ globalResourceRegistry.registerTemplateFromFactory(definition);
135
+ return definition;
136
+ }
137
+ //# sourceMappingURL=define-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-resource.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/resources/define-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,cAAc,CAAC,UAAoC;IACjE,2EAA2E;IAC3E,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,sBAAsB,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1D,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEtD,8EAA8E;IAC9E,sBAAsB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAE7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAA8C;IAE9C,2EAA2E;IAC3E,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACvD,sBAAsB,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAClF,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAE9D,oFAAoF;IACpF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CACjB,qBAAqB,UAAU,CAAC,IAAI,oFAAoF,UAAU,CAAC,WAAW,GAAG,CAClJ,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEjE,sDAAsD;QACtD,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAgC,CAAC,CAAC;QAElF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,qBAAqB,UAAU,CAAC,IAAI,8BAA8B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CACjJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,sBAAsB,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE/D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resources Module
3
+ *
4
+ * Exports resource definition factories for zero-boilerplate registration.
5
+ * Types should be imported directly from `mcp/types/`.
6
+ *
7
+ * @module mcp/capabilities/resources
8
+ */
9
+ export { defineResource, defineResourceTemplate } from "./define-resource.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resources Module
3
+ *
4
+ * Exports resource definition factories for zero-boilerplate registration.
5
+ * Types should be imported directly from `mcp/types/`.
6
+ *
7
+ * @module mcp/capabilities/resources
8
+ */
9
+ export { defineResource, defineResourceTemplate } from "./define-resource.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP Server Capabilities
3
+ *
4
+ * Defines which MCP protocol capabilities a server advertises to clients.
5
+ * Lives in the MCP layer because capabilities are an MCP protocol concept.
6
+ *
7
+ * @module mcp/capabilities/server-capabilities
8
+ */
9
+ /**
10
+ * MCP server capabilities to advertise to clients.
11
+ */
12
+ export interface ServerCapabilities {
13
+ /** Enable tools capability with optional list-changed notifications */
14
+ tools?: boolean | {
15
+ listChanged?: boolean;
16
+ };
17
+ /** Enable resources capability with optional list-changed and subscribe notifications */
18
+ resources?: boolean | {
19
+ listChanged?: boolean;
20
+ subscribe?: boolean;
21
+ };
22
+ /** Enable prompts capability with optional list-changed notifications */
23
+ prompts?: boolean | {
24
+ listChanged?: boolean;
25
+ };
26
+ /** Enable logging capability */
27
+ logging?: boolean;
28
+ }
29
+ /**
30
+ * Default server capabilities.
31
+ */
32
+ export declare const DEFAULT_CAPABILITIES: ServerCapabilities;
33
+ //# sourceMappingURL=server-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-capabilities.d.ts","sourceRoot":"","sources":["../../../src/mcp/capabilities/server-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAE5C,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAErE,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAE9C,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAGzB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MCP Server Capabilities
3
+ *
4
+ * Defines which MCP protocol capabilities a server advertises to clients.
5
+ * Lives in the MCP layer because capabilities are an MCP protocol concept.
6
+ *
7
+ * @module mcp/capabilities/server-capabilities
8
+ */
9
+ /**
10
+ * Default server capabilities.
11
+ */
12
+ export const DEFAULT_CAPABILITIES = {
13
+ tools: { listChanged: true },
14
+ logging: true,
15
+ };
16
+ //# sourceMappingURL=server-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-capabilities.js","sourceRoot":"","sources":["../../../src/mcp/capabilities/server-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5B,OAAO,EAAE,IAAI;CACL,CAAC"}