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.
- package/CHANGELOG.md +174 -0
- package/LICENSE-GPL.md +219 -0
- package/LICENSE.md +187 -0
- package/README.md +439 -0
- package/build/config/config-cache.d.ts +120 -0
- package/build/config/config-cache.d.ts.map +1 -0
- package/build/config/config-cache.js +310 -0
- package/build/config/config-cache.js.map +1 -0
- package/build/config/env.d.ts +476 -0
- package/build/config/env.d.ts.map +1 -0
- package/build/config/env.js +441 -0
- package/build/config/env.js.map +1 -0
- package/build/config/extensions.d.ts +107 -0
- package/build/config/extensions.d.ts.map +1 -0
- package/build/config/extensions.js +152 -0
- package/build/config/extensions.js.map +1 -0
- package/build/config/file/index.d.ts +8 -0
- package/build/config/file/index.d.ts.map +1 -0
- package/build/config/file/index.js +10 -0
- package/build/config/file/index.js.map +1 -0
- package/build/config/file/loader.d.ts +31 -0
- package/build/config/file/loader.d.ts.map +1 -0
- package/build/config/file/loader.js +313 -0
- package/build/config/file/loader.js.map +1 -0
- package/build/config/file/schema.d.ts +583 -0
- package/build/config/file/schema.d.ts.map +1 -0
- package/build/config/file/schema.js +388 -0
- package/build/config/file/schema.js.map +1 -0
- package/build/config/index.d.ts +15 -0
- package/build/config/index.d.ts.map +1 -0
- package/build/config/index.js +27 -0
- package/build/config/index.js.map +1 -0
- package/build/config/startup-warnings.d.ts +46 -0
- package/build/config/startup-warnings.d.ts.map +1 -0
- package/build/config/startup-warnings.js +61 -0
- package/build/config/startup-warnings.js.map +1 -0
- package/build/connection/connection-state.d.ts +196 -0
- package/build/connection/connection-state.d.ts.map +1 -0
- package/build/connection/connection-state.js +426 -0
- package/build/connection/connection-state.js.map +1 -0
- package/build/connection/core/base.d.ts +43 -0
- package/build/connection/core/base.d.ts.map +1 -0
- package/build/connection/core/base.js +82 -0
- package/build/connection/core/base.js.map +1 -0
- package/build/connection/core/constants.d.ts +121 -0
- package/build/connection/core/constants.d.ts.map +1 -0
- package/build/connection/core/constants.js +151 -0
- package/build/connection/core/constants.js.map +1 -0
- package/build/connection/core/index.d.ts +13 -0
- package/build/connection/core/index.d.ts.map +1 -0
- package/build/connection/core/index.js +14 -0
- package/build/connection/core/index.js.map +1 -0
- package/build/connection/core/types.d.ts +102 -0
- package/build/connection/core/types.d.ts.map +1 -0
- package/build/connection/core/types.js +31 -0
- package/build/connection/core/types.js.map +1 -0
- package/build/connection/index.d.ts +19 -0
- package/build/connection/index.d.ts.map +1 -0
- package/build/connection/index.js +22 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/types.d.ts +125 -0
- package/build/connection/types.d.ts.map +1 -0
- package/build/connection/types.js +39 -0
- package/build/connection/types.js.map +1 -0
- package/build/errors/categories/auth.d.ts +59 -0
- package/build/errors/categories/auth.d.ts.map +1 -0
- package/build/errors/categories/auth.js +111 -0
- package/build/errors/categories/auth.js.map +1 -0
- package/build/errors/categories/connection.d.ts +70 -0
- package/build/errors/categories/connection.d.ts.map +1 -0
- package/build/errors/categories/connection.js +120 -0
- package/build/errors/categories/connection.js.map +1 -0
- package/build/errors/categories/index.d.ts +14 -0
- package/build/errors/categories/index.d.ts.map +1 -0
- package/build/errors/categories/index.js +20 -0
- package/build/errors/categories/index.js.map +1 -0
- package/build/errors/categories/operation.d.ts +83 -0
- package/build/errors/categories/operation.d.ts.map +1 -0
- package/build/errors/categories/operation.js +149 -0
- package/build/errors/categories/operation.js.map +1 -0
- package/build/errors/categories/protocol.d.ts +68 -0
- package/build/errors/categories/protocol.d.ts.map +1 -0
- package/build/errors/categories/protocol.js +135 -0
- package/build/errors/categories/protocol.js.map +1 -0
- package/build/errors/categories/session.d.ts +50 -0
- package/build/errors/categories/session.d.ts.map +1 -0
- package/build/errors/categories/session.js +97 -0
- package/build/errors/categories/session.js.map +1 -0
- package/build/errors/categories/system.d.ts +95 -0
- package/build/errors/categories/system.d.ts.map +1 -0
- package/build/errors/categories/system.js +190 -0
- package/build/errors/categories/system.js.map +1 -0
- package/build/errors/categories/transport.d.ts +70 -0
- package/build/errors/categories/transport.d.ts.map +1 -0
- package/build/errors/categories/transport.js +148 -0
- package/build/errors/categories/transport.js.map +1 -0
- package/build/errors/categories/validation.d.ts +140 -0
- package/build/errors/categories/validation.d.ts.map +1 -0
- package/build/errors/categories/validation.js +311 -0
- package/build/errors/categories/validation.js.map +1 -0
- package/build/errors/core/base.d.ts +103 -0
- package/build/errors/core/base.d.ts.map +1 -0
- package/build/errors/core/base.js +219 -0
- package/build/errors/core/base.js.map +1 -0
- package/build/errors/core/constants.d.ts +40 -0
- package/build/errors/core/constants.d.ts.map +1 -0
- package/build/errors/core/constants.js +49 -0
- package/build/errors/core/constants.js.map +1 -0
- package/build/errors/core/error-codes.d.ts +72 -0
- package/build/errors/core/error-codes.d.ts.map +1 -0
- package/build/errors/core/error-codes.js +88 -0
- package/build/errors/core/error-codes.js.map +1 -0
- package/build/errors/core/http.d.ts +69 -0
- package/build/errors/core/http.d.ts.map +1 -0
- package/build/errors/core/http.js +106 -0
- package/build/errors/core/http.js.map +1 -0
- package/build/errors/core/index.d.ts +23 -0
- package/build/errors/core/index.d.ts.map +1 -0
- package/build/errors/core/index.js +41 -0
- package/build/errors/core/index.js.map +1 -0
- package/build/errors/core/json-rpc.d.ts +69 -0
- package/build/errors/core/json-rpc.d.ts.map +1 -0
- package/build/errors/core/json-rpc.js +79 -0
- package/build/errors/core/json-rpc.js.map +1 -0
- package/build/errors/core/messages.d.ts +51 -0
- package/build/errors/core/messages.d.ts.map +1 -0
- package/build/errors/core/messages.js +59 -0
- package/build/errors/core/messages.js.map +1 -0
- package/build/errors/core/types.d.ts +80 -0
- package/build/errors/core/types.d.ts.map +1 -0
- package/build/errors/core/types.js +10 -0
- package/build/errors/core/types.js.map +1 -0
- package/build/errors/factory.d.ts +199 -0
- package/build/errors/factory.d.ts.map +1 -0
- package/build/errors/factory.js +244 -0
- package/build/errors/factory.js.map +1 -0
- package/build/errors/index.d.ts +35 -0
- package/build/errors/index.d.ts.map +1 -0
- package/build/errors/index.js +67 -0
- package/build/errors/index.js.map +1 -0
- package/build/index.d.ts +93 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +107 -0
- package/build/index.js.map +1 -0
- package/build/logger/core/constants.d.ts +143 -0
- package/build/logger/core/constants.d.ts.map +1 -0
- package/build/logger/core/constants.js +206 -0
- package/build/logger/core/constants.js.map +1 -0
- package/build/logger/core/context.d.ts +170 -0
- package/build/logger/core/context.d.ts.map +1 -0
- package/build/logger/core/context.js +237 -0
- package/build/logger/core/context.js.map +1 -0
- package/build/logger/core/errors.d.ts +101 -0
- package/build/logger/core/errors.d.ts.map +1 -0
- package/build/logger/core/errors.js +128 -0
- package/build/logger/core/errors.js.map +1 -0
- package/build/logger/core/format.d.ts +40 -0
- package/build/logger/core/format.d.ts.map +1 -0
- package/build/logger/core/format.js +47 -0
- package/build/logger/core/format.js.map +1 -0
- package/build/logger/core/index.d.ts +19 -0
- package/build/logger/core/index.d.ts.map +1 -0
- package/build/logger/core/index.js +47 -0
- package/build/logger/core/index.js.map +1 -0
- package/build/logger/core/trace-context.d.ts +51 -0
- package/build/logger/core/trace-context.d.ts.map +1 -0
- package/build/logger/core/trace-context.js +42 -0
- package/build/logger/core/trace-context.js.map +1 -0
- package/build/logger/core/types.d.ts +233 -0
- package/build/logger/core/types.d.ts.map +1 -0
- package/build/logger/core/types.js +10 -0
- package/build/logger/core/types.js.map +1 -0
- package/build/logger/factory.d.ts +150 -0
- package/build/logger/factory.d.ts.map +1 -0
- package/build/logger/factory.js +236 -0
- package/build/logger/factory.js.map +1 -0
- package/build/logger/formatters/index.d.ts +12 -0
- package/build/logger/formatters/index.d.ts.map +1 -0
- package/build/logger/formatters/index.js +15 -0
- package/build/logger/formatters/index.js.map +1 -0
- package/build/logger/formatters/json-formatter.d.ts +54 -0
- package/build/logger/formatters/json-formatter.d.ts.map +1 -0
- package/build/logger/formatters/json-formatter.js +80 -0
- package/build/logger/formatters/json-formatter.js.map +1 -0
- package/build/logger/formatters/schema.d.ts +230 -0
- package/build/logger/formatters/schema.d.ts.map +1 -0
- package/build/logger/formatters/schema.js +278 -0
- package/build/logger/formatters/schema.js.map +1 -0
- package/build/logger/formatters/text-formatter.d.ts +50 -0
- package/build/logger/formatters/text-formatter.d.ts.map +1 -0
- package/build/logger/formatters/text-formatter.js +93 -0
- package/build/logger/formatters/text-formatter.js.map +1 -0
- package/build/logger/index.d.ts +39 -0
- package/build/logger/index.d.ts.map +1 -0
- package/build/logger/index.js +43 -0
- package/build/logger/index.js.map +1 -0
- package/build/logger/logger.d.ts +278 -0
- package/build/logger/logger.d.ts.map +1 -0
- package/build/logger/logger.js +459 -0
- package/build/logger/logger.js.map +1 -0
- package/build/logger/mcp-logger.d.ts +177 -0
- package/build/logger/mcp-logger.d.ts.map +1 -0
- package/build/logger/mcp-logger.js +294 -0
- package/build/logger/mcp-logger.js.map +1 -0
- package/build/logger/scrubbing/index.d.ts +14 -0
- package/build/logger/scrubbing/index.d.ts.map +1 -0
- package/build/logger/scrubbing/index.js +16 -0
- package/build/logger/scrubbing/index.js.map +1 -0
- package/build/logger/scrubbing/injection-guard.d.ts +69 -0
- package/build/logger/scrubbing/injection-guard.d.ts.map +1 -0
- package/build/logger/scrubbing/injection-guard.js +102 -0
- package/build/logger/scrubbing/injection-guard.js.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts +72 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.js +177 -0
- package/build/logger/scrubbing/secret-scrubber.js.map +1 -0
- package/build/logger/writers/base-writer.d.ts +45 -0
- package/build/logger/writers/base-writer.d.ts.map +1 -0
- package/build/logger/writers/base-writer.js +41 -0
- package/build/logger/writers/base-writer.js.map +1 -0
- package/build/logger/writers/composite-writer.d.ts +83 -0
- package/build/logger/writers/composite-writer.d.ts.map +1 -0
- package/build/logger/writers/composite-writer.js +121 -0
- package/build/logger/writers/composite-writer.js.map +1 -0
- package/build/logger/writers/console-writer.d.ts +59 -0
- package/build/logger/writers/console-writer.d.ts.map +1 -0
- package/build/logger/writers/console-writer.js +73 -0
- package/build/logger/writers/console-writer.js.map +1 -0
- package/build/logger/writers/file-writer.d.ts +160 -0
- package/build/logger/writers/file-writer.d.ts.map +1 -0
- package/build/logger/writers/file-writer.js +345 -0
- package/build/logger/writers/file-writer.js.map +1 -0
- package/build/logger/writers/index.d.ts +15 -0
- package/build/logger/writers/index.d.ts.map +1 -0
- package/build/logger/writers/index.js +19 -0
- package/build/logger/writers/index.js.map +1 -0
- package/build/mcp/capabilities/apps/define-app.d.ts +68 -0
- package/build/mcp/capabilities/apps/define-app.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/define-app.js +127 -0
- package/build/mcp/capabilities/apps/define-app.js.map +1 -0
- package/build/mcp/capabilities/apps/index.d.ts +10 -0
- package/build/mcp/capabilities/apps/index.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/index.js +10 -0
- package/build/mcp/capabilities/apps/index.js.map +1 -0
- package/build/mcp/capabilities/capabilities.d.ts +24 -0
- package/build/mcp/capabilities/capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/capabilities.js +50 -0
- package/build/mcp/capabilities/capabilities.js.map +1 -0
- package/build/mcp/capabilities/index.d.ts +17 -0
- package/build/mcp/capabilities/index.d.ts.map +1 -0
- package/build/mcp/capabilities/index.js +20 -0
- package/build/mcp/capabilities/index.js.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts +95 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.js +109 -0
- package/build/mcp/capabilities/prompts/define-prompt.js.map +1 -0
- package/build/mcp/capabilities/prompts/index.d.ts +10 -0
- package/build/mcp/capabilities/prompts/index.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/index.js +10 -0
- package/build/mcp/capabilities/prompts/index.js.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts +95 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.js +149 -0
- package/build/mcp/capabilities/registry/base-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/index.d.ts +16 -0
- package/build/mcp/capabilities/registry/index.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/index.js +34 -0
- package/build/mcp/capabilities/registry/index.js.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts +116 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.js +232 -0
- package/build/mcp/capabilities/registry/prompt-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/reset.d.ts +30 -0
- package/build/mcp/capabilities/registry/reset.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/reset.js +48 -0
- package/build/mcp/capabilities/registry/reset.js.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts +152 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.js +430 -0
- package/build/mcp/capabilities/registry/resource-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts +48 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js +62 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts +96 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js +190 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts +100 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.js +242 -0
- package/build/mcp/capabilities/registry/tool-registry.js.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts +103 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.js +137 -0
- package/build/mcp/capabilities/resources/define-resource.js.map +1 -0
- package/build/mcp/capabilities/resources/index.d.ts +10 -0
- package/build/mcp/capabilities/resources/index.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/index.js +10 -0
- package/build/mcp/capabilities/resources/index.js.map +1 -0
- package/build/mcp/capabilities/server-capabilities.d.ts +33 -0
- package/build/mcp/capabilities/server-capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/server-capabilities.js +16 -0
- package/build/mcp/capabilities/server-capabilities.js.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts +75 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.js +93 -0
- package/build/mcp/capabilities/tasks/define-task.js.map +1 -0
- package/build/mcp/capabilities/tasks/index.d.ts +11 -0
- package/build/mcp/capabilities/tasks/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/index.js +11 -0
- package/build/mcp/capabilities/tasks/index.js.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts +62 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.js +73 -0
- package/build/mcp/capabilities/tools/define-tool.js.map +1 -0
- package/build/mcp/capabilities/tools/index.d.ts +10 -0
- package/build/mcp/capabilities/tools/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/index.js +10 -0
- package/build/mcp/capabilities/tools/index.js.map +1 -0
- package/build/mcp/handlers/index.d.ts +19 -0
- package/build/mcp/handlers/index.d.ts.map +1 -0
- package/build/mcp/handlers/index.js +26 -0
- package/build/mcp/handlers/index.js.map +1 -0
- package/build/mcp/handlers/ping.d.ts +27 -0
- package/build/mcp/handlers/ping.d.ts.map +1 -0
- package/build/mcp/handlers/ping.js +61 -0
- package/build/mcp/handlers/ping.js.map +1 -0
- package/build/mcp/handlers/progress.d.ts +41 -0
- package/build/mcp/handlers/progress.d.ts.map +1 -0
- package/build/mcp/handlers/progress.js +79 -0
- package/build/mcp/handlers/progress.js.map +1 -0
- package/build/mcp/index.d.ts +28 -0
- package/build/mcp/index.d.ts.map +1 -0
- package/build/mcp/index.js +34 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/responses/helpers.d.ts +146 -0
- package/build/mcp/responses/helpers.d.ts.map +1 -0
- package/build/mcp/responses/helpers.js +197 -0
- package/build/mcp/responses/helpers.js.map +1 -0
- package/build/mcp/responses/index.d.ts +9 -0
- package/build/mcp/responses/index.d.ts.map +1 -0
- package/build/mcp/responses/index.js +12 -0
- package/build/mcp/responses/index.js.map +1 -0
- package/build/mcp/types/context.d.ts +371 -0
- package/build/mcp/types/context.d.ts.map +1 -0
- package/build/mcp/types/context.js +17 -0
- package/build/mcp/types/context.js.map +1 -0
- package/build/mcp/types/definition.d.ts +727 -0
- package/build/mcp/types/definition.d.ts.map +1 -0
- package/build/mcp/types/definition.js +29 -0
- package/build/mcp/types/definition.js.map +1 -0
- package/build/mcp/types/handler.d.ts +58 -0
- package/build/mcp/types/handler.d.ts.map +1 -0
- package/build/mcp/types/handler.js +10 -0
- package/build/mcp/types/handler.js.map +1 -0
- package/build/mcp/types/index.d.ts +21 -0
- package/build/mcp/types/index.d.ts.map +1 -0
- package/build/mcp/types/index.js +18 -0
- package/build/mcp/types/index.js.map +1 -0
- package/build/mcp/types/response.d.ts +79 -0
- package/build/mcp/types/response.d.ts.map +1 -0
- package/build/mcp/types/response.js +10 -0
- package/build/mcp/types/response.js.map +1 -0
- package/build/server/auth/auth-context.d.ts +52 -0
- package/build/server/auth/auth-context.d.ts.map +1 -0
- package/build/server/auth/auth-context.js +45 -0
- package/build/server/auth/auth-context.js.map +1 -0
- package/build/server/auth/guards.d.ts +72 -0
- package/build/server/auth/guards.d.ts.map +1 -0
- package/build/server/auth/guards.js +103 -0
- package/build/server/auth/guards.js.map +1 -0
- package/build/server/auth/index.d.ts +21 -0
- package/build/server/auth/index.d.ts.map +1 -0
- package/build/server/auth/index.js +20 -0
- package/build/server/auth/index.js.map +1 -0
- package/build/server/auth/oidc-discovery.d.ts +68 -0
- package/build/server/auth/oidc-discovery.d.ts.map +1 -0
- package/build/server/auth/oidc-discovery.js +234 -0
- package/build/server/auth/oidc-discovery.js.map +1 -0
- package/build/server/auth/oidc-provider.d.ts +96 -0
- package/build/server/auth/oidc-provider.d.ts.map +1 -0
- package/build/server/auth/oidc-provider.js +126 -0
- package/build/server/auth/oidc-provider.js.map +1 -0
- package/build/server/auth/types.d.ts +204 -0
- package/build/server/auth/types.d.ts.map +1 -0
- package/build/server/auth/types.js +29 -0
- package/build/server/auth/types.js.map +1 -0
- package/build/server/auth/upstream-provider.d.ts +161 -0
- package/build/server/auth/upstream-provider.d.ts.map +1 -0
- package/build/server/auth/upstream-provider.js +411 -0
- package/build/server/auth/upstream-provider.js.map +1 -0
- package/build/server/builder/constants.d.ts +45 -0
- package/build/server/builder/constants.d.ts.map +1 -0
- package/build/server/builder/constants.js +54 -0
- package/build/server/builder/constants.js.map +1 -0
- package/build/server/builder/index.d.ts +24 -0
- package/build/server/builder/index.d.ts.map +1 -0
- package/build/server/builder/index.js +25 -0
- package/build/server/builder/index.js.map +1 -0
- package/build/server/builder/primitive-collector.d.ts +24 -0
- package/build/server/builder/primitive-collector.d.ts.map +1 -0
- package/build/server/builder/primitive-collector.js +89 -0
- package/build/server/builder/primitive-collector.js.map +1 -0
- package/build/server/builder/server-builder.d.ts +53 -0
- package/build/server/builder/server-builder.d.ts.map +1 -0
- package/build/server/builder/server-builder.js +132 -0
- package/build/server/builder/server-builder.js.map +1 -0
- package/build/server/builder/types.d.ts +93 -0
- package/build/server/builder/types.d.ts.map +1 -0
- package/build/server/builder/types.js +25 -0
- package/build/server/builder/types.js.map +1 -0
- package/build/server/builder/validation.d.ts +36 -0
- package/build/server/builder/validation.d.ts.map +1 -0
- package/build/server/builder/validation.js +44 -0
- package/build/server/builder/validation.js.map +1 -0
- package/build/server/create-server.d.ts +57 -0
- package/build/server/create-server.d.ts.map +1 -0
- package/build/server/create-server.js +104 -0
- package/build/server/create-server.js.map +1 -0
- package/build/server/http/express-app.d.ts +103 -0
- package/build/server/http/express-app.d.ts.map +1 -0
- package/build/server/http/express-app.js +391 -0
- package/build/server/http/express-app.js.map +1 -0
- package/build/server/http/http-server.d.ts +67 -0
- package/build/server/http/http-server.d.ts.map +1 -0
- package/build/server/http/http-server.js +188 -0
- package/build/server/http/http-server.js.map +1 -0
- package/build/server/http/http-transport.d.ts +33 -0
- package/build/server/http/http-transport.d.ts.map +1 -0
- package/build/server/http/http-transport.js +84 -0
- package/build/server/http/http-transport.js.map +1 -0
- package/build/server/http/index.d.ts +15 -0
- package/build/server/http/index.d.ts.map +1 -0
- package/build/server/http/index.js +11 -0
- package/build/server/http/index.js.map +1 -0
- package/build/server/index.d.ts +25 -0
- package/build/server/index.d.ts.map +1 -0
- package/build/server/index.js +41 -0
- package/build/server/index.js.map +1 -0
- package/build/server/lifecycle.d.ts +114 -0
- package/build/server/lifecycle.d.ts.map +1 -0
- package/build/server/lifecycle.js +30 -0
- package/build/server/lifecycle.js.map +1 -0
- package/build/server/middleware/bearer-auth.d.ts +43 -0
- package/build/server/middleware/bearer-auth.d.ts.map +1 -0
- package/build/server/middleware/bearer-auth.js +75 -0
- package/build/server/middleware/bearer-auth.js.map +1 -0
- package/build/server/middleware/custom-header-auth.d.ts +40 -0
- package/build/server/middleware/custom-header-auth.d.ts.map +1 -0
- package/build/server/middleware/custom-header-auth.js +90 -0
- package/build/server/middleware/custom-header-auth.js.map +1 -0
- package/build/server/middleware/dns-rebinding.d.ts +25 -0
- package/build/server/middleware/dns-rebinding.d.ts.map +1 -0
- package/build/server/middleware/dns-rebinding.js +94 -0
- package/build/server/middleware/dns-rebinding.js.map +1 -0
- package/build/server/middleware/index.d.ts +69 -0
- package/build/server/middleware/index.d.ts.map +1 -0
- package/build/server/middleware/index.js +68 -0
- package/build/server/middleware/index.js.map +1 -0
- package/build/server/middleware/logging.d.ts +21 -0
- package/build/server/middleware/logging.d.ts.map +1 -0
- package/build/server/middleware/logging.js +36 -0
- package/build/server/middleware/logging.js.map +1 -0
- package/build/server/middleware/oauth-router.d.ts +50 -0
- package/build/server/middleware/oauth-router.d.ts.map +1 -0
- package/build/server/middleware/oauth-router.js +53 -0
- package/build/server/middleware/oauth-router.js.map +1 -0
- package/build/server/middleware/protocol-version.d.ts +13 -0
- package/build/server/middleware/protocol-version.d.ts.map +1 -0
- package/build/server/middleware/protocol-version.js +48 -0
- package/build/server/middleware/protocol-version.js.map +1 -0
- package/build/server/middleware/rate-limit.d.ts +47 -0
- package/build/server/middleware/rate-limit.d.ts.map +1 -0
- package/build/server/middleware/rate-limit.js +109 -0
- package/build/server/middleware/rate-limit.js.map +1 -0
- package/build/server/middleware/trust-proxy.d.ts +37 -0
- package/build/server/middleware/trust-proxy.d.ts.map +1 -0
- package/build/server/middleware/trust-proxy.js +154 -0
- package/build/server/middleware/trust-proxy.js.map +1 -0
- package/build/server/option-overrides.d.ts +25 -0
- package/build/server/option-overrides.d.ts.map +1 -0
- package/build/server/option-overrides.js +85 -0
- package/build/server/option-overrides.js.map +1 -0
- package/build/server/routes/health.d.ts +87 -0
- package/build/server/routes/health.d.ts.map +1 -0
- package/build/server/routes/health.js +183 -0
- package/build/server/routes/health.js.map +1 -0
- package/build/server/routes/index.d.ts +16 -0
- package/build/server/routes/index.d.ts.map +1 -0
- package/build/server/routes/index.js +18 -0
- package/build/server/routes/index.js.map +1 -0
- package/build/server/routes/metrics.d.ts +40 -0
- package/build/server/routes/metrics.d.ts.map +1 -0
- package/build/server/routes/metrics.js +81 -0
- package/build/server/routes/metrics.js.map +1 -0
- package/build/server/routes/oauth-router.d.ts +50 -0
- package/build/server/routes/oauth-router.d.ts.map +1 -0
- package/build/server/routes/oauth-router.js +53 -0
- package/build/server/routes/oauth-router.js.map +1 -0
- package/build/server/routes/readiness-status.d.ts +25 -0
- package/build/server/routes/readiness-status.d.ts.map +1 -0
- package/build/server/routes/readiness-status.js +27 -0
- package/build/server/routes/readiness-status.js.map +1 -0
- package/build/server/routes/sse-router.d.ts +43 -0
- package/build/server/routes/sse-router.d.ts.map +1 -0
- package/build/server/routes/sse-router.js +92 -0
- package/build/server/routes/sse-router.js.map +1 -0
- package/build/server/routes/streamable-http-router.d.ts +36 -0
- package/build/server/routes/streamable-http-router.d.ts.map +1 -0
- package/build/server/routes/streamable-http-router.js +59 -0
- package/build/server/routes/streamable-http-router.js.map +1 -0
- package/build/server/server-instance.d.ts +185 -0
- package/build/server/server-instance.d.ts.map +1 -0
- package/build/server/server-instance.js +615 -0
- package/build/server/server-instance.js.map +1 -0
- package/build/server/server-options.d.ts +411 -0
- package/build/server/server-options.d.ts.map +1 -0
- package/build/server/server-options.js +17 -0
- package/build/server/server-options.js.map +1 -0
- package/build/server/session/in-memory-store.d.ts +128 -0
- package/build/server/session/in-memory-store.d.ts.map +1 -0
- package/build/server/session/in-memory-store.js +312 -0
- package/build/server/session/in-memory-store.js.map +1 -0
- package/build/server/session/index.d.ts +43 -0
- package/build/server/session/index.d.ts.map +1 -0
- package/build/server/session/index.js +47 -0
- package/build/server/session/index.js.map +1 -0
- package/build/server/session/mcp-session.d.ts +210 -0
- package/build/server/session/mcp-session.d.ts.map +1 -0
- package/build/server/session/mcp-session.js +428 -0
- package/build/server/session/mcp-session.js.map +1 -0
- package/build/server/session/session-factory.d.ts +119 -0
- package/build/server/session/session-factory.d.ts.map +1 -0
- package/build/server/session/session-factory.js +131 -0
- package/build/server/session/session-factory.js.map +1 -0
- package/build/server/session/session-housekeeper.d.ts +100 -0
- package/build/server/session/session-housekeeper.d.ts.map +1 -0
- package/build/server/session/session-housekeeper.js +217 -0
- package/build/server/session/session-housekeeper.js.map +1 -0
- package/build/server/session/session-manager.d.ts +227 -0
- package/build/server/session/session-manager.d.ts.map +1 -0
- package/build/server/session/session-manager.js +282 -0
- package/build/server/session/session-manager.js.map +1 -0
- package/build/server/session/session-store.d.ts +95 -0
- package/build/server/session/session-store.d.ts.map +1 -0
- package/build/server/session/session-store.js +13 -0
- package/build/server/session/session-store.js.map +1 -0
- package/build/server/session/session.d.ts +132 -0
- package/build/server/session/session.d.ts.map +1 -0
- package/build/server/session/session.js +61 -0
- package/build/server/session/session.js.map +1 -0
- package/build/server/transport/constants.d.ts +85 -0
- package/build/server/transport/constants.d.ts.map +1 -0
- package/build/server/transport/constants.js +103 -0
- package/build/server/transport/constants.js.map +1 -0
- package/build/server/transport/index.d.ts +21 -0
- package/build/server/transport/index.d.ts.map +1 -0
- package/build/server/transport/index.js +28 -0
- package/build/server/transport/index.js.map +1 -0
- package/build/server/transport/sse/handler.d.ts +46 -0
- package/build/server/transport/sse/handler.d.ts.map +1 -0
- package/build/server/transport/sse/handler.js +189 -0
- package/build/server/transport/sse/handler.js.map +1 -0
- package/build/server/transport/sse/index.d.ts +15 -0
- package/build/server/transport/sse/index.d.ts.map +1 -0
- package/build/server/transport/sse/index.js +14 -0
- package/build/server/transport/sse/index.js.map +1 -0
- package/build/server/transport/sse/transport.d.ts +94 -0
- package/build/server/transport/sse/transport.d.ts.map +1 -0
- package/build/server/transport/sse/transport.js +175 -0
- package/build/server/transport/sse/transport.js.map +1 -0
- package/build/server/transport/stdio-transport.d.ts +23 -0
- package/build/server/transport/stdio-transport.d.ts.map +1 -0
- package/build/server/transport/stdio-transport.js +59 -0
- package/build/server/transport/stdio-transport.js.map +1 -0
- package/build/server/transport/streamable-http/index.d.ts +9 -0
- package/build/server/transport/streamable-http/index.d.ts.map +1 -0
- package/build/server/transport/streamable-http/index.js +9 -0
- package/build/server/transport/streamable-http/index.js.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts +41 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.js +264 -0
- package/build/server/transport/streamable-http/stateful-handler.js.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts +28 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.js +81 -0
- package/build/server/transport/streamable-http/stateless-handler.js.map +1 -0
- package/build/server/transport/streamable-http/transport.d.ts +110 -0
- package/build/server/transport/streamable-http/transport.d.ts.map +1 -0
- package/build/server/transport/streamable-http/transport.js +118 -0
- package/build/server/transport/streamable-http/transport.js.map +1 -0
- package/build/server/transport/transport-context.d.ts +67 -0
- package/build/server/transport/transport-context.d.ts.map +1 -0
- package/build/server/transport/transport-context.js +38 -0
- package/build/server/transport/transport-context.js.map +1 -0
- package/build/server/transport/types.d.ts +56 -0
- package/build/server/transport/types.d.ts.map +1 -0
- package/build/server/transport/types.js +11 -0
- package/build/server/transport/types.js.map +1 -0
- package/build/server/transport-options.d.ts +248 -0
- package/build/server/transport-options.d.ts.map +1 -0
- package/build/server/transport-options.js +18 -0
- package/build/server/transport-options.js.map +1 -0
- package/build/server/types.d.ts +172 -0
- package/build/server/types.d.ts.map +1 -0
- package/build/server/types.js +9 -0
- package/build/server/types.js.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts +30 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.js +54 -0
- package/build/telemetry/connection-telemetry-bridge.js.map +1 -0
- package/build/telemetry/core/config.d.ts +38 -0
- package/build/telemetry/core/config.d.ts.map +1 -0
- package/build/telemetry/core/config.js +54 -0
- package/build/telemetry/core/config.js.map +1 -0
- package/build/telemetry/core/constants.d.ts +183 -0
- package/build/telemetry/core/constants.d.ts.map +1 -0
- package/build/telemetry/core/constants.js +207 -0
- package/build/telemetry/core/constants.js.map +1 -0
- package/build/telemetry/core/diag-logger.d.ts +35 -0
- package/build/telemetry/core/diag-logger.d.ts.map +1 -0
- package/build/telemetry/core/diag-logger.js +54 -0
- package/build/telemetry/core/diag-logger.js.map +1 -0
- package/build/telemetry/core/index.d.ts +12 -0
- package/build/telemetry/core/index.d.ts.map +1 -0
- package/build/telemetry/core/index.js +32 -0
- package/build/telemetry/core/index.js.map +1 -0
- package/build/telemetry/core/types.d.ts +106 -0
- package/build/telemetry/core/types.d.ts.map +1 -0
- package/build/telemetry/core/types.js +10 -0
- package/build/telemetry/core/types.js.map +1 -0
- package/build/telemetry/index.d.ts +59 -0
- package/build/telemetry/index.d.ts.map +1 -0
- package/build/telemetry/index.js +79 -0
- package/build/telemetry/index.js.map +1 -0
- package/build/telemetry/metrics.d.ts +127 -0
- package/build/telemetry/metrics.d.ts.map +1 -0
- package/build/telemetry/metrics.js +337 -0
- package/build/telemetry/metrics.js.map +1 -0
- package/build/telemetry/sdk.d.ts +110 -0
- package/build/telemetry/sdk.d.ts.map +1 -0
- package/build/telemetry/sdk.js +547 -0
- package/build/telemetry/sdk.js.map +1 -0
- package/build/telemetry/tracing.d.ts +78 -0
- package/build/telemetry/tracing.d.ts.map +1 -0
- package/build/telemetry/tracing.js +257 -0
- package/build/telemetry/tracing.js.map +1 -0
- package/build/utils/env-helpers.d.ts +46 -0
- package/build/utils/env-helpers.d.ts.map +1 -0
- package/build/utils/env-helpers.js +54 -0
- package/build/utils/env-helpers.js.map +1 -0
- package/build/utils/index.d.ts +14 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +19 -0
- package/build/utils/index.js.map +1 -0
- package/build/utils/sensitive-keys.d.ts +48 -0
- package/build/utils/sensitive-keys.d.ts.map +1 -0
- package/build/utils/sensitive-keys.js +131 -0
- package/build/utils/sensitive-keys.js.map +1 -0
- package/build/utils/string-helpers.d.ts +126 -0
- package/build/utils/string-helpers.d.ts.map +1 -0
- package/build/utils/string-helpers.js +189 -0
- package/build/utils/string-helpers.js.map +1 -0
- package/build/utils/validation.d.ts +84 -0
- package/build/utils/validation.d.ts.map +1 -0
- package/build/utils/validation.js +111 -0
- package/build/utils/validation.js.map +1 -0
- package/build/utils/zod-helpers.d.ts +92 -0
- package/build/utils/zod-helpers.d.ts.map +1 -0
- package/build/utils/zod-helpers.js +120 -0
- package/build/utils/zod-helpers.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Reset Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides a lifecycle function to reset all global registries.
|
|
5
|
+
* Keeps the barrel file (index.ts) free of implementation logic.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp/capabilities/registry/reset
|
|
8
|
+
*/
|
|
9
|
+
import { logger as baseLogger } from "../../../logger/index.js";
|
|
10
|
+
import { globalToolRegistry } from "./tool-registry.js";
|
|
11
|
+
import { globalResourceRegistry } from "./resource-registry.js";
|
|
12
|
+
import { globalPromptRegistry } from "./prompt-registry.js";
|
|
13
|
+
import { globalTaskToolRegistry } from "./task-tool-registry.js";
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Logger
|
|
16
|
+
// ============================================================================
|
|
17
|
+
const logger = baseLogger.child({ component: "registry" });
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Lifecycle Utilities
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Reset all global registries.
|
|
23
|
+
*
|
|
24
|
+
* Clears all registered tools, resources, resource templates, and prompts
|
|
25
|
+
* from the global singleton registries. After calling this, all `define*()`
|
|
26
|
+
* calls must be re-executed to repopulate the registries.
|
|
27
|
+
*
|
|
28
|
+
* **Use cases:**
|
|
29
|
+
* - Hot-reload during development
|
|
30
|
+
* - Server restart / lifecycle management
|
|
31
|
+
* - Isolated testing scenarios
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import { resetAllRegistries } from 'mcp-server-framework';
|
|
36
|
+
*
|
|
37
|
+
* // Before re-registering tools in a hot-reload scenario
|
|
38
|
+
* resetAllRegistries();
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function resetAllRegistries() {
|
|
42
|
+
globalToolRegistry.clear();
|
|
43
|
+
globalResourceRegistry.clear();
|
|
44
|
+
globalPromptRegistry.clear();
|
|
45
|
+
globalTaskToolRegistry.clear();
|
|
46
|
+
logger.debug("All registries reset");
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/reset.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAE3D,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB;IAChC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC/B,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP resources and resource templates that implements ResourceProvider.
|
|
5
|
+
* Uses composition with BaseRegistry for DRY CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for resource definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers resources with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @module mcp/capabilities/registry/resource-registry
|
|
12
|
+
*/
|
|
13
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import { type z } from "zod";
|
|
15
|
+
import type { ResourceStaticDefinition, ResourceTemplateDefinition, ResourceProvider } from "../../types/index.js";
|
|
16
|
+
import type { Logger } from "../../../logger/index.js";
|
|
17
|
+
/**
|
|
18
|
+
* Options for binding resources to an MCP SDK server.
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export interface ResourceBindOptions {
|
|
22
|
+
readonly logger: Logger;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Composite registry for MCP resources and templates.
|
|
26
|
+
*
|
|
27
|
+
* Uses two internal BaseRegistry instances to eliminate code duplication
|
|
28
|
+
* while maintaining separate namespaces for resources and templates.
|
|
29
|
+
*
|
|
30
|
+
* Implements ResourceProvider for direct use with McpServerBuilder.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { resourceRegistry, defineResource } from 'mcp-server-framework';
|
|
35
|
+
*
|
|
36
|
+
* // Resources are auto-registered via defineResource()
|
|
37
|
+
* defineResource({ name: 'config', uri: 'app://config', ... });
|
|
38
|
+
*
|
|
39
|
+
* // Registry can be used directly as a provider
|
|
40
|
+
* builder.withResourceProvider(resourceRegistry);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare class ResourceRegistry implements ResourceProvider {
|
|
44
|
+
/** Internal registry for static resources */
|
|
45
|
+
private readonly resourceRegistry;
|
|
46
|
+
/** Internal registry for resource templates */
|
|
47
|
+
private readonly templateRegistry;
|
|
48
|
+
/**
|
|
49
|
+
* Creates an isolated ResourceRegistry (no shared global state).
|
|
50
|
+
*
|
|
51
|
+
* Used for testing.
|
|
52
|
+
*/
|
|
53
|
+
static createIsolated(): ResourceRegistry;
|
|
54
|
+
/** Register a static resource. Throws if name exists. Warns on URI conflict. */
|
|
55
|
+
registerResource(resource: ResourceStaticDefinition): void;
|
|
56
|
+
/** Register a static resource, replacing any existing. Warns on URI conflict. */
|
|
57
|
+
registerOrReplaceResource(resource: ResourceStaticDefinition): void;
|
|
58
|
+
/** Unregister a resource by name. */
|
|
59
|
+
unregisterResource(name: string): boolean;
|
|
60
|
+
/** Get a resource by name. */
|
|
61
|
+
getResource(name: string): ResourceStaticDefinition | undefined;
|
|
62
|
+
/** Check if a resource exists. */
|
|
63
|
+
hasResource(name: string): boolean;
|
|
64
|
+
/** Register a resource template. Throws if name exists. */
|
|
65
|
+
registerTemplate(template: ResourceTemplateDefinition): void;
|
|
66
|
+
/** Register a template, replacing any existing. */
|
|
67
|
+
registerOrReplaceTemplate(template: ResourceTemplateDefinition): void;
|
|
68
|
+
/** Unregister a template by name. */
|
|
69
|
+
unregisterTemplate(name: string): boolean;
|
|
70
|
+
/** Get a template by name. */
|
|
71
|
+
getTemplate(name: string): ResourceTemplateDefinition | undefined;
|
|
72
|
+
/** Check if a template exists. */
|
|
73
|
+
hasTemplate(name: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Register a template from a generic factory function.
|
|
76
|
+
*
|
|
77
|
+
* Centralizes TypeScript generic variance handling. `ResourceTemplateDefinition<TInput>`
|
|
78
|
+
* is invariant — `TInput` appears in both covariant (input property) and
|
|
79
|
+
* contravariant (read parameter) positions via Zod's type mapping.
|
|
80
|
+
* TypeScript requires `as unknown as` because neither type sufficiently
|
|
81
|
+
* overlaps with the other (invariance).
|
|
82
|
+
*
|
|
83
|
+
* @internal Used by defineResourceTemplate() — prefer registerOrReplaceTemplate() for non-generic usage.
|
|
84
|
+
*/
|
|
85
|
+
registerTemplateFromFactory<TInput extends z.AnyZodObject>(template: ResourceTemplateDefinition<TInput>): void;
|
|
86
|
+
/**
|
|
87
|
+
* Warn when a new resource registers a URI already in use by another resource.
|
|
88
|
+
* Name-based dedup is handled by BaseRegistry; this checks for URI-level conflicts
|
|
89
|
+
* across the static resource registry.
|
|
90
|
+
*/
|
|
91
|
+
private warnOnDuplicateResourceUri;
|
|
92
|
+
/** Clear all resources. */
|
|
93
|
+
clearResources(): void;
|
|
94
|
+
/** Clear all templates. */
|
|
95
|
+
clearTemplates(): void;
|
|
96
|
+
/** Clear all resources and templates. */
|
|
97
|
+
clear(): void;
|
|
98
|
+
/** Number of registered resources. */
|
|
99
|
+
get resourceCount(): number;
|
|
100
|
+
/** Number of registered templates. */
|
|
101
|
+
get templateCount(): number;
|
|
102
|
+
/**
|
|
103
|
+
* Get all registered static resources.
|
|
104
|
+
*/
|
|
105
|
+
getResources(): ReadonlyArray<ResourceStaticDefinition>;
|
|
106
|
+
/**
|
|
107
|
+
* Get all registered templates.
|
|
108
|
+
*/
|
|
109
|
+
getTemplates(): ReadonlyArray<ResourceTemplateDefinition>;
|
|
110
|
+
/**
|
|
111
|
+
* Check if provider has any resources or templates.
|
|
112
|
+
*/
|
|
113
|
+
hasResources(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Registers all resources (static + templates) with an MCP SDK server instance.
|
|
116
|
+
*
|
|
117
|
+
* Each resource is registered with:
|
|
118
|
+
* - OpenTelemetry tracing spans for read operations
|
|
119
|
+
* - Structured error handling and logging
|
|
120
|
+
* - URI template variable extraction and completion callbacks
|
|
121
|
+
*
|
|
122
|
+
* @param sdk - The MCP SDK server instance
|
|
123
|
+
* @param resources - Static resource definitions
|
|
124
|
+
* @param templates - Resource template definitions
|
|
125
|
+
* @param options - Registration context (logger)
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
static bindToSdk(sdk: McpServer, resources: readonly ResourceStaticDefinition[], templates: readonly ResourceTemplateDefinition[], options: ResourceBindOptions): void;
|
|
129
|
+
/**
|
|
130
|
+
* Extracts variable names from a URI template string (RFC 6570).
|
|
131
|
+
*
|
|
132
|
+
* @param uriTemplate - URI template pattern (e.g., 'notes://note/{noteId}')
|
|
133
|
+
* @returns Array of variable names (e.g., ['noteId'])
|
|
134
|
+
*/
|
|
135
|
+
private static extractUriTemplateVariables;
|
|
136
|
+
/**
|
|
137
|
+
* Bridges framework's unified `complete(argName, argValue)` callback to SDK's
|
|
138
|
+
* per-variable `{ [variable]: (value) => string[] }` format.
|
|
139
|
+
*
|
|
140
|
+
* @sdk-constraint — SDK ResourceTemplate expects separate callbacks keyed by variable name.
|
|
141
|
+
* The framework provides a single callback to reduce boilerplate.
|
|
142
|
+
*/
|
|
143
|
+
private static buildResourceCompleteCallbacks;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Global resource registry singleton.
|
|
147
|
+
*
|
|
148
|
+
* This instance is used by defineResource() and defineResourceTemplate()
|
|
149
|
+
* for auto-registration and by createServer() to discover all resources.
|
|
150
|
+
*/
|
|
151
|
+
export declare const globalResourceRegistry: ResourceRegistry;
|
|
152
|
+
//# sourceMappingURL=resource-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/resource-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,CAAC,EAAY,MAAM,KAAK,CAAC;AAEvC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAiCvD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AA8BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IAEjE,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IAMnE;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,gBAAgB;IAQzC,gFAAgF;IAChF,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAK1D,iFAAiF;IACjF,yBAAyB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAKnE,qCAAqC;IACrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC,8BAA8B;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAI/D,kCAAkC;IAClC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC,2DAA2D;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAI5D,mDAAmD;IACnD,yBAAyB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAIrE,qCAAqC;IACrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC,8BAA8B;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS;IAIjE,kCAAkC;IAClC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;;;;;;;OAUG;IACH,2BAA2B,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAAG,IAAI;IAa9G;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAalC,2BAA2B;IAC3B,cAAc,IAAI,IAAI;IAItB,2BAA2B;IAC3B,cAAc,IAAI,IAAI;IAItB,yCAAyC;IACzC,KAAK,IAAI,IAAI;IASb,sCAAsC;IACtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,sCAAsC;IACtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAMD;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,wBAAwB,CAAC;IAIvD;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,0BAA0B,CAAC;IAIzD;;OAEG;IACH,YAAY,IAAI,OAAO;IAQvB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,SAAS,CACd,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,wBAAwB,EAAE,EAC9C,SAAS,EAAE,SAAS,0BAA0B,EAAE,EAChD,OAAO,EAAE,mBAAmB,GAC3B,IAAI;IA6KP;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAK1C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAyB9C;AAMD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP resources and resource templates that implements ResourceProvider.
|
|
5
|
+
* Uses composition with BaseRegistry for DRY CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for resource definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers resources with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @module mcp/capabilities/registry/resource-registry
|
|
12
|
+
*/
|
|
13
|
+
import { ResourceTemplate as SdkResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
15
|
+
import { ZodError } from "zod";
|
|
16
|
+
import { withSpan, MCP_ATTRIBUTES, SpanKind } from "../../../telemetry/index.js";
|
|
17
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
18
|
+
import { enforceScopeOrThrow } from "./scope-enforcement.js";
|
|
19
|
+
import { logger as baseLogger } from "../../../logger/index.js";
|
|
20
|
+
const logger = baseLogger.child({ component: "resource-registry" });
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Constants
|
|
23
|
+
// ============================================================================
|
|
24
|
+
const SdkBindingMessages = {
|
|
25
|
+
RESOURCES_REGISTERED: "Registered %d resources and %d templates with SDK",
|
|
26
|
+
RESOURCE_REGISTERED: "Registered resource: %s (%s)",
|
|
27
|
+
TEMPLATE_REGISTERED: "Registered resource template: %s (%s)",
|
|
28
|
+
TEMPLATE_LIST_FAILED: "Failed to list resources for template %s: %s",
|
|
29
|
+
NO_RESOURCES: "No resources to register",
|
|
30
|
+
RESOURCE_READ_ERROR: "Error reading resource %s: %s",
|
|
31
|
+
TEMPLATE_READ_ERROR: "Error reading resource template %s: %s",
|
|
32
|
+
RESOURCE_READING: "Reading resource: %s",
|
|
33
|
+
TEMPLATE_READING: "Reading resource template: %s with variables %j",
|
|
34
|
+
TEMPLATE_VALIDATION_FAILED: "Resource template %s: parameter validation failed: %s",
|
|
35
|
+
};
|
|
36
|
+
const RegistryLogMessages = {
|
|
37
|
+
DUPLICATE_URI: 'Resource URI conflict: "%s" registers URI "%s" which is already used by "%s"',
|
|
38
|
+
};
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Internal Registry Classes (extend BaseRegistry for CRUD)
|
|
41
|
+
// ============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Internal registry for static resources.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
class StaticResourceRegistry extends BaseRegistry {
|
|
47
|
+
get itemTypeName() {
|
|
48
|
+
return "Resource";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Internal registry for resource templates.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
class ResourceTemplateRegistry extends BaseRegistry {
|
|
56
|
+
get itemTypeName() {
|
|
57
|
+
return "Template";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Resource Registry Class
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Composite registry for MCP resources and templates.
|
|
65
|
+
*
|
|
66
|
+
* Uses two internal BaseRegistry instances to eliminate code duplication
|
|
67
|
+
* while maintaining separate namespaces for resources and templates.
|
|
68
|
+
*
|
|
69
|
+
* Implements ResourceProvider for direct use with McpServerBuilder.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* import { resourceRegistry, defineResource } from 'mcp-server-framework';
|
|
74
|
+
*
|
|
75
|
+
* // Resources are auto-registered via defineResource()
|
|
76
|
+
* defineResource({ name: 'config', uri: 'app://config', ... });
|
|
77
|
+
*
|
|
78
|
+
* // Registry can be used directly as a provider
|
|
79
|
+
* builder.withResourceProvider(resourceRegistry);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export class ResourceRegistry {
|
|
83
|
+
/** Internal registry for static resources */
|
|
84
|
+
resourceRegistry = new StaticResourceRegistry();
|
|
85
|
+
/** Internal registry for resource templates */
|
|
86
|
+
templateRegistry = new ResourceTemplateRegistry();
|
|
87
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
88
|
+
// Factory
|
|
89
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
90
|
+
/**
|
|
91
|
+
* Creates an isolated ResourceRegistry (no shared global state).
|
|
92
|
+
*
|
|
93
|
+
* Used for testing.
|
|
94
|
+
*/
|
|
95
|
+
static createIsolated() {
|
|
96
|
+
return new ResourceRegistry();
|
|
97
|
+
}
|
|
98
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
99
|
+
// Resource Registration Methods (delegated to internal registry)
|
|
100
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
101
|
+
/** Register a static resource. Throws if name exists. Warns on URI conflict. */
|
|
102
|
+
registerResource(resource) {
|
|
103
|
+
this.warnOnDuplicateResourceUri(resource.name, resource.uri);
|
|
104
|
+
this.resourceRegistry.register(resource);
|
|
105
|
+
}
|
|
106
|
+
/** Register a static resource, replacing any existing. Warns on URI conflict. */
|
|
107
|
+
registerOrReplaceResource(resource) {
|
|
108
|
+
this.warnOnDuplicateResourceUri(resource.name, resource.uri);
|
|
109
|
+
this.resourceRegistry.registerOrReplace(resource);
|
|
110
|
+
}
|
|
111
|
+
/** Unregister a resource by name. */
|
|
112
|
+
unregisterResource(name) {
|
|
113
|
+
return this.resourceRegistry.unregister(name);
|
|
114
|
+
}
|
|
115
|
+
/** Get a resource by name. */
|
|
116
|
+
getResource(name) {
|
|
117
|
+
return this.resourceRegistry.get(name);
|
|
118
|
+
}
|
|
119
|
+
/** Check if a resource exists. */
|
|
120
|
+
hasResource(name) {
|
|
121
|
+
return this.resourceRegistry.has(name);
|
|
122
|
+
}
|
|
123
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
124
|
+
// Template Registration Methods (delegated to internal registry)
|
|
125
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
126
|
+
/** Register a resource template. Throws if name exists. */
|
|
127
|
+
registerTemplate(template) {
|
|
128
|
+
this.templateRegistry.register(template);
|
|
129
|
+
}
|
|
130
|
+
/** Register a template, replacing any existing. */
|
|
131
|
+
registerOrReplaceTemplate(template) {
|
|
132
|
+
this.templateRegistry.registerOrReplace(template);
|
|
133
|
+
}
|
|
134
|
+
/** Unregister a template by name. */
|
|
135
|
+
unregisterTemplate(name) {
|
|
136
|
+
return this.templateRegistry.unregister(name);
|
|
137
|
+
}
|
|
138
|
+
/** Get a template by name. */
|
|
139
|
+
getTemplate(name) {
|
|
140
|
+
return this.templateRegistry.get(name);
|
|
141
|
+
}
|
|
142
|
+
/** Check if a template exists. */
|
|
143
|
+
hasTemplate(name) {
|
|
144
|
+
return this.templateRegistry.has(name);
|
|
145
|
+
}
|
|
146
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
147
|
+
// Generic Registration (Variance-Safe)
|
|
148
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
149
|
+
/**
|
|
150
|
+
* Register a template from a generic factory function.
|
|
151
|
+
*
|
|
152
|
+
* Centralizes TypeScript generic variance handling. `ResourceTemplateDefinition<TInput>`
|
|
153
|
+
* is invariant — `TInput` appears in both covariant (input property) and
|
|
154
|
+
* contravariant (read parameter) positions via Zod's type mapping.
|
|
155
|
+
* TypeScript requires `as unknown as` because neither type sufficiently
|
|
156
|
+
* overlaps with the other (invariance).
|
|
157
|
+
*
|
|
158
|
+
* @internal Used by defineResourceTemplate() — prefer registerOrReplaceTemplate() for non-generic usage.
|
|
159
|
+
*/
|
|
160
|
+
registerTemplateFromFactory(template) {
|
|
161
|
+
// @type-variance — Generic input erased for homogeneous storage; SDK validates at runtime
|
|
162
|
+
this.templateRegistry.registerOrReplace(template);
|
|
163
|
+
}
|
|
164
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
165
|
+
// Clear Methods
|
|
166
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
167
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
168
|
+
// URI Conflict Detection
|
|
169
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
170
|
+
/**
|
|
171
|
+
* Warn when a new resource registers a URI already in use by another resource.
|
|
172
|
+
* Name-based dedup is handled by BaseRegistry; this checks for URI-level conflicts
|
|
173
|
+
* across the static resource registry.
|
|
174
|
+
*/
|
|
175
|
+
warnOnDuplicateResourceUri(newName, uri) {
|
|
176
|
+
for (const existing of this.resourceRegistry.getAll()) {
|
|
177
|
+
if (existing.uri === uri && existing.name !== newName) {
|
|
178
|
+
logger.warn(RegistryLogMessages.DUPLICATE_URI, newName, uri, existing.name);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
184
|
+
// Clear Methods
|
|
185
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
186
|
+
/** Clear all resources. */
|
|
187
|
+
clearResources() {
|
|
188
|
+
this.resourceRegistry.clear();
|
|
189
|
+
}
|
|
190
|
+
/** Clear all templates. */
|
|
191
|
+
clearTemplates() {
|
|
192
|
+
this.templateRegistry.clear();
|
|
193
|
+
}
|
|
194
|
+
/** Clear all resources and templates. */
|
|
195
|
+
clear() {
|
|
196
|
+
this.resourceRegistry.clear();
|
|
197
|
+
this.templateRegistry.clear();
|
|
198
|
+
}
|
|
199
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
200
|
+
// Size Properties (computed from internal registries)
|
|
201
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
202
|
+
/** Number of registered resources. */
|
|
203
|
+
get resourceCount() {
|
|
204
|
+
return this.resourceRegistry.size;
|
|
205
|
+
}
|
|
206
|
+
/** Number of registered templates. */
|
|
207
|
+
get templateCount() {
|
|
208
|
+
return this.templateRegistry.size;
|
|
209
|
+
}
|
|
210
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
211
|
+
// ResourceProvider Implementation
|
|
212
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
213
|
+
/**
|
|
214
|
+
* Get all registered static resources.
|
|
215
|
+
*/
|
|
216
|
+
getResources() {
|
|
217
|
+
return this.resourceRegistry.getAll();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get all registered templates.
|
|
221
|
+
*/
|
|
222
|
+
getTemplates() {
|
|
223
|
+
return this.templateRegistry.getAll();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if provider has any resources or templates.
|
|
227
|
+
*/
|
|
228
|
+
hasResources() {
|
|
229
|
+
return this.resourceRegistry.size > 0 || this.templateRegistry.size > 0;
|
|
230
|
+
}
|
|
231
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
232
|
+
// SDK Binding
|
|
233
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
234
|
+
/**
|
|
235
|
+
* Registers all resources (static + templates) with an MCP SDK server instance.
|
|
236
|
+
*
|
|
237
|
+
* Each resource is registered with:
|
|
238
|
+
* - OpenTelemetry tracing spans for read operations
|
|
239
|
+
* - Structured error handling and logging
|
|
240
|
+
* - URI template variable extraction and completion callbacks
|
|
241
|
+
*
|
|
242
|
+
* @param sdk - The MCP SDK server instance
|
|
243
|
+
* @param resources - Static resource definitions
|
|
244
|
+
* @param templates - Resource template definitions
|
|
245
|
+
* @param options - Registration context (logger)
|
|
246
|
+
* @internal
|
|
247
|
+
*/
|
|
248
|
+
static bindToSdk(sdk, resources, templates, options) {
|
|
249
|
+
const { logger } = options;
|
|
250
|
+
if (resources.length === 0 && templates.length === 0) {
|
|
251
|
+
logger.trace(SdkBindingMessages.NO_RESOURCES);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
logger.trace(SdkBindingMessages.RESOURCES_REGISTERED, resources.length, templates.length);
|
|
255
|
+
// Register static resources
|
|
256
|
+
for (const resource of resources) {
|
|
257
|
+
sdk.registerResource(resource.name, resource.uri, { description: resource.description, mimeType: resource.mimeType }, async (_uri, extra) => {
|
|
258
|
+
// Scope enforcement (RBAC)
|
|
259
|
+
enforceScopeOrThrow(resource.requiredScopes, extra.authInfo, "Resource", resource.uri, logger);
|
|
260
|
+
return withSpan(`mcp.resource.read`, async (span) => {
|
|
261
|
+
span.setAttributes({
|
|
262
|
+
[MCP_ATTRIBUTES.RESOURCE_URI]: resource.uri,
|
|
263
|
+
[MCP_ATTRIBUTES.OPERATION]: "resource_read",
|
|
264
|
+
});
|
|
265
|
+
logger.trace(SdkBindingMessages.RESOURCE_READING, resource.uri);
|
|
266
|
+
try {
|
|
267
|
+
const content = await resource.read();
|
|
268
|
+
if (typeof content === "string") {
|
|
269
|
+
return {
|
|
270
|
+
contents: [
|
|
271
|
+
{
|
|
272
|
+
uri: resource.uri,
|
|
273
|
+
mimeType: resource.mimeType,
|
|
274
|
+
text: content,
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
const base64 = Buffer.from(content).toString("base64");
|
|
281
|
+
return {
|
|
282
|
+
contents: [
|
|
283
|
+
{
|
|
284
|
+
uri: resource.uri,
|
|
285
|
+
mimeType: resource.mimeType,
|
|
286
|
+
blob: base64,
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
294
|
+
logger.error(SdkBindingMessages.RESOURCE_READ_ERROR, resource.uri, msg);
|
|
295
|
+
throw error;
|
|
296
|
+
}
|
|
297
|
+
}, { kind: SpanKind.SERVER });
|
|
298
|
+
});
|
|
299
|
+
logger.trace(SdkBindingMessages.RESOURCE_REGISTERED, resource.name, resource.uri);
|
|
300
|
+
}
|
|
301
|
+
// Register templates
|
|
302
|
+
for (const template of templates) {
|
|
303
|
+
const completeCallbacks = template.complete
|
|
304
|
+
? ResourceRegistry.buildResourceCompleteCallbacks(template.uriTemplate, template.complete)
|
|
305
|
+
: undefined;
|
|
306
|
+
const sdkTemplate = new SdkResourceTemplate(template.uriTemplate, {
|
|
307
|
+
list: template.list
|
|
308
|
+
? async () => {
|
|
309
|
+
try {
|
|
310
|
+
const items = await template.list();
|
|
311
|
+
return {
|
|
312
|
+
resources: items.map((item) => ({
|
|
313
|
+
uri: item.uri,
|
|
314
|
+
name: item.name ?? template.name,
|
|
315
|
+
description: item.description ?? template.description,
|
|
316
|
+
mimeType: item.mimeType ?? template.mimeType,
|
|
317
|
+
})),
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
322
|
+
logger.error(SdkBindingMessages.TEMPLATE_LIST_FAILED, template.uriTemplate, msg);
|
|
323
|
+
return { resources: [] };
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
: undefined,
|
|
327
|
+
...(completeCallbacks && { complete: completeCallbacks }),
|
|
328
|
+
});
|
|
329
|
+
sdk.registerResource(template.name, sdkTemplate, { description: template.description, mimeType: template.mimeType }, async (_uri, variables, extra) => {
|
|
330
|
+
// Scope enforcement (RBAC)
|
|
331
|
+
enforceScopeOrThrow(template.requiredScopes, extra.authInfo, "Resource", template.uriTemplate, logger);
|
|
332
|
+
return withSpan(`mcp.resource.read`, async (span) => {
|
|
333
|
+
span.setAttributes({
|
|
334
|
+
[MCP_ATTRIBUTES.RESOURCE_TEMPLATE]: template.uriTemplate,
|
|
335
|
+
[MCP_ATTRIBUTES.OPERATION]: "resource_read",
|
|
336
|
+
});
|
|
337
|
+
logger.trace(SdkBindingMessages.TEMPLATE_READING, template.uriTemplate, variables);
|
|
338
|
+
// Convert string[] to string for simple templates
|
|
339
|
+
const params = {};
|
|
340
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
341
|
+
params[key] = Array.isArray(value) ? (value[0] ?? "") : value;
|
|
342
|
+
}
|
|
343
|
+
// Validate params against Zod schema if provided (DD JSDoc contract)
|
|
344
|
+
if (template.input) {
|
|
345
|
+
try {
|
|
346
|
+
await template.input.parseAsync(params);
|
|
347
|
+
}
|
|
348
|
+
catch (validationError) {
|
|
349
|
+
const msg = validationError instanceof ZodError
|
|
350
|
+
? validationError.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")
|
|
351
|
+
: String(validationError);
|
|
352
|
+
logger.warn(SdkBindingMessages.TEMPLATE_VALIDATION_FAILED, template.uriTemplate, msg);
|
|
353
|
+
throw new McpError(ErrorCode.InvalidParams, `Invalid resource template parameters: ${msg}`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
try {
|
|
357
|
+
const content = await template.read(params);
|
|
358
|
+
// Construct URI from template for the response
|
|
359
|
+
const uri = template.uriTemplate.replace(/\{(\w+)\}/g, (_, key) => params[key] ?? `{${key}}`);
|
|
360
|
+
if (typeof content === "string") {
|
|
361
|
+
return {
|
|
362
|
+
contents: [{ uri, mimeType: template.mimeType, text: content }],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
const base64 = Buffer.from(content).toString("base64");
|
|
367
|
+
return {
|
|
368
|
+
contents: [{ uri, mimeType: template.mimeType, blob: base64 }],
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
374
|
+
logger.error(SdkBindingMessages.TEMPLATE_READ_ERROR, template.uriTemplate, msg);
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}, { kind: SpanKind.SERVER });
|
|
378
|
+
});
|
|
379
|
+
logger.trace(SdkBindingMessages.TEMPLATE_REGISTERED, template.name, template.uriTemplate);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
383
|
+
// Private SDK Binding Helpers
|
|
384
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
385
|
+
/**
|
|
386
|
+
* Extracts variable names from a URI template string (RFC 6570).
|
|
387
|
+
*
|
|
388
|
+
* @param uriTemplate - URI template pattern (e.g., 'notes://note/{noteId}')
|
|
389
|
+
* @returns Array of variable names (e.g., ['noteId'])
|
|
390
|
+
*/
|
|
391
|
+
static extractUriTemplateVariables(uriTemplate) {
|
|
392
|
+
const matches = uriTemplate.matchAll(/\{(\w+)\}/g);
|
|
393
|
+
return [...matches].map((m) => m[1]);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Bridges framework's unified `complete(argName, argValue)` callback to SDK's
|
|
397
|
+
* per-variable `{ [variable]: (value) => string[] }` format.
|
|
398
|
+
*
|
|
399
|
+
* @sdk-constraint — SDK ResourceTemplate expects separate callbacks keyed by variable name.
|
|
400
|
+
* The framework provides a single callback to reduce boilerplate.
|
|
401
|
+
*/
|
|
402
|
+
static buildResourceCompleteCallbacks(uriTemplate, complete) {
|
|
403
|
+
const variables = ResourceRegistry.extractUriTemplateVariables(uriTemplate);
|
|
404
|
+
const callbacks = {};
|
|
405
|
+
for (const variable of variables) {
|
|
406
|
+
callbacks[variable] = async (value) => {
|
|
407
|
+
try {
|
|
408
|
+
const result = await complete(variable, value);
|
|
409
|
+
return result.values;
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
logger.warn("Completion callback failed for variable '%s': %s", variable, error instanceof Error ? error.message : String(error));
|
|
413
|
+
return [];
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
return callbacks;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
// ============================================================================
|
|
421
|
+
// Global Singleton Instance
|
|
422
|
+
// ============================================================================
|
|
423
|
+
/**
|
|
424
|
+
* Global resource registry singleton.
|
|
425
|
+
*
|
|
426
|
+
* This instance is used by defineResource() and defineResourceTemplate()
|
|
427
|
+
* for auto-registration and by createServer() to discover all resources.
|
|
428
|
+
*/
|
|
429
|
+
export const globalResourceRegistry = new ResourceRegistry();
|
|
430
|
+
//# sourceMappingURL=resource-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/resource-registry.ts"],"names":[],"mappings":"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"}
|