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
|
+
* Scope Enforcement for SDK Bindings
|
|
3
|
+
*
|
|
4
|
+
* Centralizes RBAC scope checking used by tool, resource, and prompt registries.
|
|
5
|
+
* This is the internal enforcement layer — for consumer-facing guards,
|
|
6
|
+
* see `server/auth/guards.ts` (requireAuth, requireScope, hasScope).
|
|
7
|
+
*
|
|
8
|
+
* @module mcp/capabilities/registry/scope-enforcement
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import type { Logger } from "../../../logger/index.js";
|
|
12
|
+
/**
|
|
13
|
+
* Minimal auth info shape from SDK's `extra.authInfo`.
|
|
14
|
+
* Kept intentionally loose to match all SDK callback signatures.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export interface SdkAuthInfo {
|
|
18
|
+
readonly scopes?: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Checks that all `requiredScopes` are present in the token's scopes.
|
|
22
|
+
* Throws {@link AuthorizationError} and logs a warning if scopes are insufficient.
|
|
23
|
+
*
|
|
24
|
+
* No-op when:
|
|
25
|
+
* - `requiredScopes` is undefined or empty
|
|
26
|
+
* - `authInfo` is undefined (no auth middleware active)
|
|
27
|
+
*
|
|
28
|
+
* @param requiredScopes - Scopes required by the definition (AND logic)
|
|
29
|
+
* @param authInfo - Auth info from SDK `extra.authInfo`
|
|
30
|
+
* @param capabilityType - Label for log messages (e.g. 'Tool', 'Resource', 'Prompt')
|
|
31
|
+
* @param capabilityName - Name/URI of the capability for log context
|
|
32
|
+
* @param logger - Logger instance for warning output
|
|
33
|
+
*
|
|
34
|
+
* @throws {@link AuthorizationError} when required scopes are not satisfied
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function enforceScopeOrThrow(requiredScopes: readonly string[] | undefined, authInfo: SdkAuthInfo | undefined, capabilityType: string, capabilityName: string, logger: Logger): void;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if all required scopes are present in the token's scopes.
|
|
40
|
+
* Used by scope-filtered list handlers to decide visibility.
|
|
41
|
+
*
|
|
42
|
+
* @param required - Scopes required by the definition (AND logic)
|
|
43
|
+
* @param tokenScopes - Scopes present on the token
|
|
44
|
+
* @returns `true` if all required scopes are present
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export declare function hasAllRequiredScopes(required: readonly string[], tokenScopes: readonly string[]): boolean;
|
|
48
|
+
//# sourceMappingURL=scope-enforcement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/scope-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMvD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAC7C,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,IAAI,CAYN;AAMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEzG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope Enforcement for SDK Bindings
|
|
3
|
+
*
|
|
4
|
+
* Centralizes RBAC scope checking used by tool, resource, and prompt registries.
|
|
5
|
+
* This is the internal enforcement layer — for consumer-facing guards,
|
|
6
|
+
* see `server/auth/guards.ts` (requireAuth, requireScope, hasScope).
|
|
7
|
+
*
|
|
8
|
+
* @module mcp/capabilities/registry/scope-enforcement
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import { AuthorizationError } from "../../../errors/index.js";
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Constants
|
|
14
|
+
// ============================================================================
|
|
15
|
+
const AUTH_SCOPE_DENIED = "%s [%s] requires scopes [%s] but token has [%s]";
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Enforcement
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Checks that all `requiredScopes` are present in the token's scopes.
|
|
21
|
+
* Throws {@link AuthorizationError} and logs a warning if scopes are insufficient.
|
|
22
|
+
*
|
|
23
|
+
* No-op when:
|
|
24
|
+
* - `requiredScopes` is undefined or empty
|
|
25
|
+
* - `authInfo` is undefined (no auth middleware active)
|
|
26
|
+
*
|
|
27
|
+
* @param requiredScopes - Scopes required by the definition (AND logic)
|
|
28
|
+
* @param authInfo - Auth info from SDK `extra.authInfo`
|
|
29
|
+
* @param capabilityType - Label for log messages (e.g. 'Tool', 'Resource', 'Prompt')
|
|
30
|
+
* @param capabilityName - Name/URI of the capability for log context
|
|
31
|
+
* @param logger - Logger instance for warning output
|
|
32
|
+
*
|
|
33
|
+
* @throws {@link AuthorizationError} when required scopes are not satisfied
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export function enforceScopeOrThrow(requiredScopes, authInfo, capabilityType, capabilityName, logger) {
|
|
37
|
+
if (!requiredScopes || requiredScopes.length === 0 || !authInfo) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const tokenScopes = authInfo.scopes ?? [];
|
|
41
|
+
const missing = requiredScopes.filter((s) => !tokenScopes.includes(s));
|
|
42
|
+
if (missing.length > 0) {
|
|
43
|
+
logger.warn(AUTH_SCOPE_DENIED, capabilityType, capabilityName, requiredScopes.join(","), tokenScopes.join(","));
|
|
44
|
+
throw AuthorizationError.insufficientScope(requiredScopes, tokenScopes);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// List Filtering
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Checks if all required scopes are present in the token's scopes.
|
|
52
|
+
* Used by scope-filtered list handlers to decide visibility.
|
|
53
|
+
*
|
|
54
|
+
* @param required - Scopes required by the definition (AND logic)
|
|
55
|
+
* @param tokenScopes - Scopes present on the token
|
|
56
|
+
* @returns `true` if all required scopes are present
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export function hasAllRequiredScopes(required, tokenScopes) {
|
|
60
|
+
return required.every((s) => tokenScopes.includes(s));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=scope-enforcement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-enforcement.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/scope-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAgB9D,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,iBAAiB,GAAG,iDAAiD,CAAC;AAE5E,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA6C,EAC7C,QAAiC,EACjC,cAAsB,EACtB,cAAsB,EACtB,MAAc;IAEd,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChH,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B,EAAE,WAA8B;IAC9F,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP task tools that implements TaskToolProvider interface.
|
|
5
|
+
* Extends BaseRegistry for common CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for task tool definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers task tools with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
12
|
+
* @module mcp/capabilities/registry/task-tool-registry
|
|
13
|
+
*/
|
|
14
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
|
+
import type { z } from "zod";
|
|
16
|
+
import type { TaskToolDefinition, TaskToolProvider } from "../../types/index.js";
|
|
17
|
+
import type { Logger } from "../../../logger/index.js";
|
|
18
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
19
|
+
/**
|
|
20
|
+
* Options for binding task tools to an MCP SDK server.
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export interface TaskToolBindOptions {
|
|
24
|
+
readonly logger: Logger;
|
|
25
|
+
readonly stateless: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Registry for MCP task tools that implements TaskToolProvider.
|
|
29
|
+
*
|
|
30
|
+
* Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
|
|
31
|
+
* and provides `bindToSdk()` for registering task tools with MCP SDK server instances.
|
|
32
|
+
*
|
|
33
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { globalTaskToolRegistry, defineTask } from 'mcp-server-framework';
|
|
38
|
+
*
|
|
39
|
+
* // Task tools are auto-registered via defineTask()
|
|
40
|
+
* defineTask({ name: 'long_job', ... });
|
|
41
|
+
*
|
|
42
|
+
* // Registry can be used directly as a provider
|
|
43
|
+
* builder.withTaskToolProvider(globalTaskToolRegistry);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare class TaskToolRegistry extends BaseRegistry<TaskToolDefinition> implements TaskToolProvider {
|
|
47
|
+
/**
|
|
48
|
+
* Creates an isolated TaskToolRegistry (no shared global state).
|
|
49
|
+
*
|
|
50
|
+
* Used for testing.
|
|
51
|
+
*/
|
|
52
|
+
static createIsolated(): TaskToolRegistry;
|
|
53
|
+
protected get itemTypeName(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Register a task tool from a generic factory function.
|
|
56
|
+
*
|
|
57
|
+
* Centralizes TypeScript generic variance handling. See ToolRegistry for
|
|
58
|
+
* detailed explanation of the variance pattern.
|
|
59
|
+
*
|
|
60
|
+
* @internal Used by defineTask() — prefer registerOrReplace() for non-generic usage.
|
|
61
|
+
*/
|
|
62
|
+
registerFromFactory<TInput extends z.ZodTypeAny>(taskTool: TaskToolDefinition<TInput>): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Get all registered task tools.
|
|
65
|
+
*
|
|
66
|
+
* @returns Readonly array of all task tools
|
|
67
|
+
*/
|
|
68
|
+
getTaskTools(): ReadonlyArray<TaskToolDefinition>;
|
|
69
|
+
/**
|
|
70
|
+
* Registers task tools with the MCP SDK's experimental tasks API.
|
|
71
|
+
*
|
|
72
|
+
* Each task tool is registered via `sdk.experimental.tasks.registerToolTask()`.
|
|
73
|
+
* The SDK handles the task lifecycle protocol (`tasks/list`, `tasks/get`,
|
|
74
|
+
* `tasks/result`, `tasks/cancel`) automatically when a `taskStore` is provided.
|
|
75
|
+
*
|
|
76
|
+
* @param sdk - The MCP SDK server instance
|
|
77
|
+
* @param taskTools - Task tool definitions to register
|
|
78
|
+
* @param options - Registration context (logger, stateless mode)
|
|
79
|
+
* @internal
|
|
80
|
+
* @experimental
|
|
81
|
+
*/
|
|
82
|
+
static bindToSdk(sdk: McpServer, taskTools: readonly TaskToolDefinition[], options: TaskToolBindOptions): void;
|
|
83
|
+
/**
|
|
84
|
+
* Builds the shared base context from SDK extra parameters.
|
|
85
|
+
* Common to all three task handler methods.
|
|
86
|
+
*/
|
|
87
|
+
private static buildBaseContext;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Global task tool registry singleton.
|
|
91
|
+
*
|
|
92
|
+
* This instance is used by defineTask() for auto-registration
|
|
93
|
+
* and by createServer() to discover all task tools.
|
|
94
|
+
*/
|
|
95
|
+
export declare const globalTaskToolRegistry: TaskToolRegistry;
|
|
96
|
+
//# sourceMappingURL=task-tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tool-registry.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/task-tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAIjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgBlD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAwBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,kBAAkB,CAAE,YAAW,gBAAgB;IAKhG;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,gBAAgB;IAQzC,cAAuB,YAAY,IAAI,MAAM,CAE5C;IAMD;;;;;;;OAOG;IACH,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO;IAS/F;;;;OAIG;IACH,YAAY,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAQjD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAiF9G;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAqBhC;AAMD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP task tools that implements TaskToolProvider interface.
|
|
5
|
+
* Extends BaseRegistry for common CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for task tool definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers task tools with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
12
|
+
* @module mcp/capabilities/registry/task-tool-registry
|
|
13
|
+
*/
|
|
14
|
+
import { createProgressReporter } from "../../handlers/index.js";
|
|
15
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Constants
|
|
18
|
+
// ============================================================================
|
|
19
|
+
const SdkBindingMessages = {
|
|
20
|
+
TASK_TOOLS_REGISTERED: "Registered %d task tools with SDK",
|
|
21
|
+
TASK_TOOL_REGISTERED: "Registered task tool: %s (taskSupport=%s)",
|
|
22
|
+
NO_TASK_TOOLS: "No task tools to register",
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Task Tool Registry Class
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Registry for MCP task tools that implements TaskToolProvider.
|
|
29
|
+
*
|
|
30
|
+
* Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
|
|
31
|
+
* and provides `bindToSdk()` for registering task tools with MCP SDK server instances.
|
|
32
|
+
*
|
|
33
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { globalTaskToolRegistry, defineTask } from 'mcp-server-framework';
|
|
38
|
+
*
|
|
39
|
+
* // Task tools are auto-registered via defineTask()
|
|
40
|
+
* defineTask({ name: 'long_job', ... });
|
|
41
|
+
*
|
|
42
|
+
* // Registry can be used directly as a provider
|
|
43
|
+
* builder.withTaskToolProvider(globalTaskToolRegistry);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export class TaskToolRegistry extends BaseRegistry {
|
|
47
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
48
|
+
// Factory
|
|
49
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
50
|
+
/**
|
|
51
|
+
* Creates an isolated TaskToolRegistry (no shared global state).
|
|
52
|
+
*
|
|
53
|
+
* Used for testing.
|
|
54
|
+
*/
|
|
55
|
+
static createIsolated() {
|
|
56
|
+
return new TaskToolRegistry();
|
|
57
|
+
}
|
|
58
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
59
|
+
// BaseRegistry Override
|
|
60
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
61
|
+
get itemTypeName() {
|
|
62
|
+
return "TaskTool";
|
|
63
|
+
}
|
|
64
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
65
|
+
// Generic Registration (Variance-Safe)
|
|
66
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Register a task tool from a generic factory function.
|
|
69
|
+
*
|
|
70
|
+
* Centralizes TypeScript generic variance handling. See ToolRegistry for
|
|
71
|
+
* detailed explanation of the variance pattern.
|
|
72
|
+
*
|
|
73
|
+
* @internal Used by defineTask() — prefer registerOrReplace() for non-generic usage.
|
|
74
|
+
*/
|
|
75
|
+
registerFromFactory(taskTool) {
|
|
76
|
+
// @type-variance — Generic input erased for homogeneous storage; SDK validates at runtime
|
|
77
|
+
return this.registerOrReplace(taskTool);
|
|
78
|
+
}
|
|
79
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
80
|
+
// TaskToolProvider Implementation
|
|
81
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Get all registered task tools.
|
|
84
|
+
*
|
|
85
|
+
* @returns Readonly array of all task tools
|
|
86
|
+
*/
|
|
87
|
+
getTaskTools() {
|
|
88
|
+
return this.getAll();
|
|
89
|
+
}
|
|
90
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
91
|
+
// SDK Binding
|
|
92
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* Registers task tools with the MCP SDK's experimental tasks API.
|
|
95
|
+
*
|
|
96
|
+
* Each task tool is registered via `sdk.experimental.tasks.registerToolTask()`.
|
|
97
|
+
* The SDK handles the task lifecycle protocol (`tasks/list`, `tasks/get`,
|
|
98
|
+
* `tasks/result`, `tasks/cancel`) automatically when a `taskStore` is provided.
|
|
99
|
+
*
|
|
100
|
+
* @param sdk - The MCP SDK server instance
|
|
101
|
+
* @param taskTools - Task tool definitions to register
|
|
102
|
+
* @param options - Registration context (logger, stateless mode)
|
|
103
|
+
* @internal
|
|
104
|
+
* @experimental
|
|
105
|
+
*/
|
|
106
|
+
static bindToSdk(sdk, taskTools, options) {
|
|
107
|
+
const { logger, stateless } = options;
|
|
108
|
+
if (taskTools.length === 0) {
|
|
109
|
+
logger.trace(SdkBindingMessages.NO_TASK_TOOLS);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
logger.trace(SdkBindingMessages.TASK_TOOLS_REGISTERED, taskTools.length);
|
|
113
|
+
for (const taskTool of taskTools) {
|
|
114
|
+
const taskSupport = taskTool.taskSupport ?? "required";
|
|
115
|
+
// @sdk-constraint — SDK registerToolTask has two overloads:
|
|
116
|
+
// Overload 1 (no input): config without inputSchema, ToolTaskHandler<undefined>
|
|
117
|
+
// Overload 2 (with input): config with inputSchema, ToolTaskHandler<InputArgs>
|
|
118
|
+
// We must cast to AnySchema to select overload 2
|
|
119
|
+
const sdkHandler = {
|
|
120
|
+
createTask: async (args, extra) => {
|
|
121
|
+
const base = TaskToolRegistry.buildBaseContext(extra, stateless);
|
|
122
|
+
const context = {
|
|
123
|
+
...base,
|
|
124
|
+
taskStore: extra.taskStore,
|
|
125
|
+
};
|
|
126
|
+
// @sdk-constraint — SDK registerToolTask erases input schema type; args validated at runtime
|
|
127
|
+
return taskTool.taskHandler.createTask(args, context);
|
|
128
|
+
},
|
|
129
|
+
getTask: async (args, extra) => {
|
|
130
|
+
const base = TaskToolRegistry.buildBaseContext(extra, stateless);
|
|
131
|
+
const context = {
|
|
132
|
+
...base,
|
|
133
|
+
taskId: extra.taskId,
|
|
134
|
+
taskStore: extra.taskStore,
|
|
135
|
+
};
|
|
136
|
+
// @sdk-constraint — SDK registerToolTask erases input schema type; args validated at runtime
|
|
137
|
+
return taskTool.taskHandler.getTask(args, context);
|
|
138
|
+
},
|
|
139
|
+
getTaskResult: async (args, extra) => {
|
|
140
|
+
const base = TaskToolRegistry.buildBaseContext(extra, stateless);
|
|
141
|
+
const context = {
|
|
142
|
+
...base,
|
|
143
|
+
taskId: extra.taskId,
|
|
144
|
+
taskStore: extra.taskStore,
|
|
145
|
+
};
|
|
146
|
+
// @sdk-constraint — SDK registerToolTask erases input schema type; args validated at runtime
|
|
147
|
+
return taskTool.taskHandler.getTaskResult(args, context);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
sdk.experimental.tasks.registerToolTask(taskTool.name, {
|
|
151
|
+
description: taskTool.description,
|
|
152
|
+
// @sdk-constraint — registerToolTask expects AnySchema; Zod input is compatible at runtime
|
|
153
|
+
inputSchema: taskTool.input,
|
|
154
|
+
execution: { taskSupport },
|
|
155
|
+
...(taskTool.annotations && { annotations: taskTool.annotations }),
|
|
156
|
+
...(taskTool._meta && { _meta: taskTool._meta }),
|
|
157
|
+
}, sdkHandler);
|
|
158
|
+
logger.trace(SdkBindingMessages.TASK_TOOL_REGISTERED, taskTool.name, taskSupport);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
162
|
+
// Private SDK Binding Helpers
|
|
163
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
164
|
+
/**
|
|
165
|
+
* Builds the shared base context from SDK extra parameters.
|
|
166
|
+
* Common to all three task handler methods.
|
|
167
|
+
*/
|
|
168
|
+
static buildBaseContext(extra, stateless) {
|
|
169
|
+
const progressToken = extra._meta?.progressToken;
|
|
170
|
+
const reportProgress = createProgressReporter(extra.sendNotification.bind(extra), progressToken);
|
|
171
|
+
return {
|
|
172
|
+
reportProgress,
|
|
173
|
+
abortSignal: extra.signal,
|
|
174
|
+
requestId: extra.requestId,
|
|
175
|
+
sessionId: extra.sessionId,
|
|
176
|
+
stateless,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// ============================================================================
|
|
181
|
+
// Global Singleton Instance
|
|
182
|
+
// ============================================================================
|
|
183
|
+
/**
|
|
184
|
+
* Global task tool registry singleton.
|
|
185
|
+
*
|
|
186
|
+
* This instance is used by defineTask() for auto-registration
|
|
187
|
+
* and by createServer() to discover all task tools.
|
|
188
|
+
*/
|
|
189
|
+
export const globalTaskToolRegistry = new TaskToolRegistry();
|
|
190
|
+
//# sourceMappingURL=task-tool-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tool-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/task-tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
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 type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import type { z } from "zod";
|
|
15
|
+
import type { ToolDefinition, ToolProvider } from "../../types/index.js";
|
|
16
|
+
import type { Logger } from "../../../logger/index.js";
|
|
17
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
18
|
+
/**
|
|
19
|
+
* Options for binding tools to an MCP SDK server.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export interface ToolBindOptions {
|
|
23
|
+
readonly logger: Logger;
|
|
24
|
+
readonly stateless: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registry for MCP tools that implements ToolProvider.
|
|
28
|
+
*
|
|
29
|
+
* Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
|
|
30
|
+
* and provides `bindToSdk()` for registering tools with MCP SDK server instances.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { toolRegistry, defineTool } from 'mcp-server-framework';
|
|
35
|
+
*
|
|
36
|
+
* // Tools are auto-registered via defineTool()
|
|
37
|
+
* defineTool({ name: 'greet', ... });
|
|
38
|
+
*
|
|
39
|
+
* // Registry can be used directly as a provider
|
|
40
|
+
* builder.withToolProvider(toolRegistry);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare class ToolRegistry extends BaseRegistry<ToolDefinition> implements ToolProvider {
|
|
44
|
+
/**
|
|
45
|
+
* Creates an isolated ToolRegistry (no shared global state).
|
|
46
|
+
*
|
|
47
|
+
* Used for testing.
|
|
48
|
+
*/
|
|
49
|
+
static createIsolated(): ToolRegistry;
|
|
50
|
+
protected get itemTypeName(): string;
|
|
51
|
+
/**
|
|
52
|
+
* Register a tool from a generic factory function.
|
|
53
|
+
*
|
|
54
|
+
* Centralizes TypeScript generic variance handling. `ToolDefinition<TInput>`
|
|
55
|
+
* is invariant — `TInput` appears in both covariant (input property) and
|
|
56
|
+
* contravariant (handler parameter) positions via Zod's type mapping.
|
|
57
|
+
* TypeScript requires `as unknown as` because neither `ToolDefinition<TInput>`
|
|
58
|
+
* nor `ToolDefinition<ZodTypeAny>` sufficiently overlaps with the other.
|
|
59
|
+
*
|
|
60
|
+
* This is safe because the MCP SDK validates input via the Zod schema
|
|
61
|
+
* at runtime before the handler is invoked.
|
|
62
|
+
*
|
|
63
|
+
* @internal Used by defineTool() — prefer registerOrReplace() for non-generic usage.
|
|
64
|
+
*/
|
|
65
|
+
registerFromFactory<TInput extends z.ZodTypeAny>(tool: ToolDefinition<TInput>): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get all registered tools.
|
|
68
|
+
*
|
|
69
|
+
* @returns Readonly array of all tools
|
|
70
|
+
*/
|
|
71
|
+
getTools(): ReadonlyArray<ToolDefinition>;
|
|
72
|
+
/**
|
|
73
|
+
* Registers tool definitions with an MCP SDK server instance.
|
|
74
|
+
*
|
|
75
|
+
* Each tool is registered with:
|
|
76
|
+
* - SDK-native cancellation via `extra.signal` (AbortSignal per request)
|
|
77
|
+
* - Rate-limited progress reporting via `extra.sendNotification`
|
|
78
|
+
* - Structured error handling with MCP error codes
|
|
79
|
+
* - OpenTelemetry tracing spans and metrics recording
|
|
80
|
+
* - Tool annotations passed through to the SDK
|
|
81
|
+
*
|
|
82
|
+
* @param sdk - The MCP SDK server instance
|
|
83
|
+
* @param tools - Tool definitions to register
|
|
84
|
+
* @param options - Registration context (logger, stateless mode)
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
static bindToSdk(sdk: McpServer, tools: readonly ToolDefinition[], options: ToolBindOptions): void;
|
|
88
|
+
/**
|
|
89
|
+
* Executes a tool handler with cancellation, progress, tracing, and error handling.
|
|
90
|
+
*/
|
|
91
|
+
private static executeToolCall;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Global tool registry singleton.
|
|
95
|
+
*
|
|
96
|
+
* This instance is used by defineTool() for auto-registration
|
|
97
|
+
* and by createServer() to discover all tools.
|
|
98
|
+
*/
|
|
99
|
+
export declare const globalToolRegistry: ToolRegistry;
|
|
100
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAuBlD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAa,SAAQ,YAAY,CAAC,cAAc,CAAE,YAAW,YAAY;IAKpF;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,YAAY;IAOrC,cAAuB,YAAY,IAAI,MAAM,CAE5C;IAKD;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,OAAO;IASvF;;;;OAIG;IACH,QAAQ,IAAI,aAAa,CAAC,cAAc,CAAC;IAQzC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IA8ElG;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAyE/B;AAMD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,cAAqB,CAAC"}
|