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,727 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Definition Types
|
|
3
|
+
*
|
|
4
|
+
* Unified type definitions for MCP tools, resources, and prompts.
|
|
5
|
+
* These are the canonical types used throughout the framework.
|
|
6
|
+
*
|
|
7
|
+
* DESIGN PRINCIPLES:
|
|
8
|
+
* - User-friendly naming (no I-prefix, 'input' instead of 'schema')
|
|
9
|
+
* - Single source of truth for each concept
|
|
10
|
+
* - Compatible with MCP SDK types
|
|
11
|
+
*
|
|
12
|
+
* @module mcp/types/definition
|
|
13
|
+
*/
|
|
14
|
+
import type { CallToolResult, GetTaskResult } from "@modelcontextprotocol/sdk/types.js";
|
|
15
|
+
import type { z } from "zod";
|
|
16
|
+
import type { ToolContext, TaskCreateContext, TaskOperationContext } from "./context.js";
|
|
17
|
+
import type { CreateTaskResult } from "@modelcontextprotocol/sdk/experimental/tasks/types.js";
|
|
18
|
+
/**
|
|
19
|
+
* Result of an autocompletion callback.
|
|
20
|
+
*
|
|
21
|
+
* @see https://modelcontextprotocol.io/specification/2025-03-26/server/utilities/completion
|
|
22
|
+
*/
|
|
23
|
+
export interface CompletionResult {
|
|
24
|
+
/** Suggested completion values */
|
|
25
|
+
readonly values: string[];
|
|
26
|
+
/** Total number of available completions (for pagination hints) */
|
|
27
|
+
readonly total?: number;
|
|
28
|
+
/** Whether more completions are available beyond the returned values */
|
|
29
|
+
readonly hasMore?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Callback for providing autocompletion suggestions.
|
|
33
|
+
*
|
|
34
|
+
* Used on resource templates (for URI template variables) and prompts
|
|
35
|
+
* (for prompt arguments). The callback is invoked when a client sends
|
|
36
|
+
* a `completion/complete` request.
|
|
37
|
+
*
|
|
38
|
+
* @param argName - Name of the argument/variable being completed
|
|
39
|
+
* @param argValue - Current partial value typed by the user
|
|
40
|
+
* @returns Completion suggestions
|
|
41
|
+
*/
|
|
42
|
+
export type CompletionCallback = (argName: string, argValue: string) => CompletionResult | Promise<CompletionResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Tool annotations providing behavioral hints per MCP specification.
|
|
45
|
+
*
|
|
46
|
+
* These help clients understand tool characteristics without parsing descriptions.
|
|
47
|
+
* All properties are optional and represent hints — not guarantees.
|
|
48
|
+
*
|
|
49
|
+
* @see https://modelcontextprotocol.io/specification/2025-03-26/server/tools#annotations
|
|
50
|
+
*/
|
|
51
|
+
export interface ToolAnnotations {
|
|
52
|
+
/** Human-readable title for display purposes */
|
|
53
|
+
readonly title?: string;
|
|
54
|
+
/** If true, the tool does not modify any external state (default assumption: false) */
|
|
55
|
+
readonly readOnlyHint?: boolean;
|
|
56
|
+
/** If true, the tool may perform destructive operations (default assumption: true) */
|
|
57
|
+
readonly destructiveHint?: boolean;
|
|
58
|
+
/** If true, calling the tool repeatedly with the same args has no additional effect */
|
|
59
|
+
readonly idempotentHint?: boolean;
|
|
60
|
+
/** If true, the tool interacts with external entities beyond its own system */
|
|
61
|
+
readonly openWorldHint?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Tool definition - the canonical type for MCP tools.
|
|
65
|
+
*
|
|
66
|
+
* This is the ONLY type needed for defining and registering tools.
|
|
67
|
+
* Used by `defineTool()`, `ToolRegistry`, and `McpServerBuilder`.
|
|
68
|
+
*
|
|
69
|
+
* @typeParam TInput - Zod schema type for input validation (default: any Zod type)
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const greetTool = defineTool({
|
|
74
|
+
* name: 'greet',
|
|
75
|
+
* description: 'Greet a user by name',
|
|
76
|
+
* input: z.object({ name: z.string() }),
|
|
77
|
+
* handler: async ({ name }, ctx) => text(`Hello, ${name}!`),
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export interface ToolDefinition<TInput extends z.ZodTypeAny = z.ZodTypeAny> {
|
|
82
|
+
/** Unique tool name (e.g., 'greet', 'list_servers') */
|
|
83
|
+
readonly name: string;
|
|
84
|
+
/** Human-readable description shown to LLM */
|
|
85
|
+
readonly description: string;
|
|
86
|
+
/** Zod schema for input validation */
|
|
87
|
+
readonly input: TInput;
|
|
88
|
+
/**
|
|
89
|
+
* Optional annotations providing hints about tool behavior.
|
|
90
|
+
*
|
|
91
|
+
* Per MCP specification, annotations help clients understand tool characteristics
|
|
92
|
+
* without needing to parse the description. These are hints, not guarantees.
|
|
93
|
+
*
|
|
94
|
+
* @see https://modelcontextprotocol.io/specification/2025-03-26/server/tools#annotations
|
|
95
|
+
*/
|
|
96
|
+
readonly annotations?: ToolAnnotations;
|
|
97
|
+
/**
|
|
98
|
+
* Optional metadata passed through to the MCP SDK tool registration.
|
|
99
|
+
*
|
|
100
|
+
* This is a generic passthrough for protocol-level metadata like
|
|
101
|
+
* `{ ui: { resourceUri: 'app://my-app' } }` used by MCP Apps.
|
|
102
|
+
* The framework does not interpret `_meta` — it is forwarded as-is.
|
|
103
|
+
*/
|
|
104
|
+
readonly _meta?: Record<string, unknown>;
|
|
105
|
+
/**
|
|
106
|
+
* Scopes required to execute this tool (RBAC).
|
|
107
|
+
*
|
|
108
|
+
* When set, the framework checks `authInfo.scopes` BEFORE
|
|
109
|
+
* the handler executes. All listed scopes must be present (AND logic).
|
|
110
|
+
* If the check fails, a 403 Forbidden error is returned.
|
|
111
|
+
*
|
|
112
|
+
* Omit or set to `undefined` for tools accessible to any authenticated user.
|
|
113
|
+
*/
|
|
114
|
+
readonly requiredScopes?: readonly string[];
|
|
115
|
+
/**
|
|
116
|
+
* Tool handler function.
|
|
117
|
+
*
|
|
118
|
+
* @param args - Validated input (typed from Zod schema)
|
|
119
|
+
* @param context - Execution context with progress reporter, abort signal
|
|
120
|
+
* @returns MCP CallToolResult (use response helpers: text(), json(), error())
|
|
121
|
+
*/
|
|
122
|
+
handler: (args: z.infer<TInput>, context: ToolContext) => Promise<CallToolResult>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Tool provider interface for registries and plugins.
|
|
126
|
+
*
|
|
127
|
+
* Provides access to all registered tools.
|
|
128
|
+
*/
|
|
129
|
+
export interface ToolProvider {
|
|
130
|
+
/** Get all registered tools */
|
|
131
|
+
getTools(): ReadonlyArray<ToolDefinition>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Base resource definition - shared properties for all resources.
|
|
135
|
+
*
|
|
136
|
+
* This is the common base for both static resources and resource templates.
|
|
137
|
+
* Provides consistent naming, description, and MIME type handling.
|
|
138
|
+
*/
|
|
139
|
+
export interface BaseResourceDefinition {
|
|
140
|
+
/** Unique resource name for identification */
|
|
141
|
+
readonly name: string;
|
|
142
|
+
/** Human-readable description shown to LLM */
|
|
143
|
+
readonly description: string;
|
|
144
|
+
/** MIME type of the content (optional) */
|
|
145
|
+
readonly mimeType?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Static resource definition - for fixed URI resources.
|
|
149
|
+
*
|
|
150
|
+
* Use this for resources with a fixed URI that don't require parameters.
|
|
151
|
+
* For dynamic URIs with parameters, use `ResourceTemplateDefinition`.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* const configResource = defineResource({
|
|
156
|
+
* name: 'app-config',
|
|
157
|
+
* description: 'Application configuration',
|
|
158
|
+
* uri: 'myapp://config/main',
|
|
159
|
+
* mimeType: 'application/json',
|
|
160
|
+
* read: async () => JSON.stringify({ version: '1.0.0' }),
|
|
161
|
+
* });
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export interface ResourceStaticDefinition extends BaseResourceDefinition {
|
|
165
|
+
/** Resource URI (e.g., 'myapp://config/main') */
|
|
166
|
+
readonly uri: string;
|
|
167
|
+
/**
|
|
168
|
+
* Scopes required to read this resource (RBAC).
|
|
169
|
+
*
|
|
170
|
+
* When set, the framework checks `authInfo.scopes` BEFORE
|
|
171
|
+
* the read handler executes. All listed scopes must be present (AND logic).
|
|
172
|
+
* If the check fails, a 403 Forbidden error is returned.
|
|
173
|
+
*
|
|
174
|
+
* Omit or set to `undefined` for resources accessible to any authenticated user.
|
|
175
|
+
*/
|
|
176
|
+
readonly requiredScopes?: readonly string[];
|
|
177
|
+
/**
|
|
178
|
+
* Content provider function.
|
|
179
|
+
*
|
|
180
|
+
* @returns String content or Uint8Array for binary data
|
|
181
|
+
*/
|
|
182
|
+
read: () => Promise<string | Uint8Array>;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Resource template definition - for dynamic URIs (RFC 6570).
|
|
186
|
+
*
|
|
187
|
+
* Templates allow LLMs to access content with variable parameters.
|
|
188
|
+
* Use Zod schemas for type-safe parameter handling.
|
|
189
|
+
*
|
|
190
|
+
* @typeParam TInput - Zod object schema for parameter validation (default: z.AnyZodObject)
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* // With typed parameters
|
|
195
|
+
* const logResource = defineResourceTemplate({
|
|
196
|
+
* name: 'log-viewer',
|
|
197
|
+
* description: 'View logs by ID',
|
|
198
|
+
* uriTemplate: 'myapp://logs/{logId}',
|
|
199
|
+
* mimeType: 'text/plain',
|
|
200
|
+
* input: z.object({
|
|
201
|
+
* logId: z.string().describe('Log identifier'),
|
|
202
|
+
* }),
|
|
203
|
+
* read: async ({ logId }) => fetchLog(logId),
|
|
204
|
+
* list: async () => [
|
|
205
|
+
* { uri: 'myapp://logs/1', name: 'Log 1' },
|
|
206
|
+
* ],
|
|
207
|
+
* });
|
|
208
|
+
*
|
|
209
|
+
* // Without schema (params are Record<string, string>)
|
|
210
|
+
* const simpleResource = defineResourceTemplate({
|
|
211
|
+
* name: 'simple',
|
|
212
|
+
* description: 'Simple item lookup',
|
|
213
|
+
* uriTemplate: 'myapp://item/{id}',
|
|
214
|
+
* read: async (params) => getItem(params.id),
|
|
215
|
+
* });
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export interface ResourceTemplateDefinition<TInput extends z.AnyZodObject = z.AnyZodObject> extends BaseResourceDefinition {
|
|
219
|
+
/** URI template pattern using RFC 6570 (e.g., 'myapp://logs/{logId}') */
|
|
220
|
+
readonly uriTemplate: string;
|
|
221
|
+
/**
|
|
222
|
+
* Zod object schema for parameter validation.
|
|
223
|
+
*
|
|
224
|
+
* When provided, parameters extracted from the URI are validated
|
|
225
|
+
* against this schema before being passed to `read()`.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* input: z.object({
|
|
230
|
+
* logId: z.string().describe('Log identifier'),
|
|
231
|
+
* format: z.enum(['json', 'text']).optional(),
|
|
232
|
+
* })
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
readonly input?: TInput;
|
|
236
|
+
/**
|
|
237
|
+
* Content provider function with template parameters.
|
|
238
|
+
*
|
|
239
|
+
* @param params - Parameters extracted from URI template (typed if input schema provided)
|
|
240
|
+
* @returns String content or Uint8Array for binary data
|
|
241
|
+
*/
|
|
242
|
+
read: (params: z.infer<TInput>) => Promise<string | Uint8Array>;
|
|
243
|
+
/**
|
|
244
|
+
* Optional function to enumerate available resources.
|
|
245
|
+
*
|
|
246
|
+
* When provided, this enables LLMs to discover what resources are available
|
|
247
|
+
* for this template. Useful for dynamic resource discovery.
|
|
248
|
+
*/
|
|
249
|
+
list?: () => Promise<Array<{
|
|
250
|
+
uri: string;
|
|
251
|
+
name?: string;
|
|
252
|
+
description?: string;
|
|
253
|
+
mimeType?: string;
|
|
254
|
+
}>>;
|
|
255
|
+
/**
|
|
256
|
+
* Optional callback for argument autocompletion.
|
|
257
|
+
*
|
|
258
|
+
* When provided, enables clients to request autocompletion suggestions
|
|
259
|
+
* for URI template variables. The callback receives the variable name
|
|
260
|
+
* and current partial value, and returns matching suggestions.
|
|
261
|
+
*
|
|
262
|
+
* The SDK automatically registers the `completions` capability when
|
|
263
|
+
* any resource template provides a `complete` callback.
|
|
264
|
+
*
|
|
265
|
+
* @param argName - The URI template variable name being completed
|
|
266
|
+
* @param argValue - The current partial value typed by the user
|
|
267
|
+
* @returns Completion suggestions
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* defineResourceTemplate({
|
|
272
|
+
* name: 'note',
|
|
273
|
+
* uriTemplate: 'notes://note/{noteId}',
|
|
274
|
+
* read: async ({ noteId }) => fetchNote(noteId),
|
|
275
|
+
* complete: async (argName, argValue) => ({
|
|
276
|
+
* values: allNoteIds.filter(id => id.startsWith(argValue)),
|
|
277
|
+
* }),
|
|
278
|
+
* });
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
complete?: CompletionCallback;
|
|
282
|
+
/**
|
|
283
|
+
* Scopes required to read this resource template (RBAC).
|
|
284
|
+
*
|
|
285
|
+
* When set, the framework checks `authInfo.scopes` BEFORE
|
|
286
|
+
* the read handler executes. All listed scopes must be present (AND logic).
|
|
287
|
+
* If the check fails, a 403 Forbidden error is returned.
|
|
288
|
+
*
|
|
289
|
+
* Omit or set to `undefined` for resources accessible to any authenticated user.
|
|
290
|
+
*/
|
|
291
|
+
readonly requiredScopes?: readonly string[];
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Union type for any resource definition.
|
|
295
|
+
*
|
|
296
|
+
* Use this when accepting either static resources or templates.
|
|
297
|
+
* Use type guards `isStaticResource()` / `isResourceTemplate()` to narrow.
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* ```typescript
|
|
301
|
+
* function processResource(resource: ResourceDefinition) {
|
|
302
|
+
* if (isStaticResource(resource)) {
|
|
303
|
+
* // TypeScript knows: resource.uri, resource.read()
|
|
304
|
+
* } else {
|
|
305
|
+
* // TypeScript knows: resource.uriTemplate, resource.read(params)
|
|
306
|
+
* }
|
|
307
|
+
* }
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
export type ResourceDefinition<TInput extends z.AnyZodObject = z.AnyZodObject> = ResourceStaticDefinition | ResourceTemplateDefinition<TInput>;
|
|
311
|
+
/**
|
|
312
|
+
* Type guard for static resources.
|
|
313
|
+
*/
|
|
314
|
+
export declare function isStaticResource(resource: ResourceDefinition): resource is ResourceStaticDefinition;
|
|
315
|
+
/**
|
|
316
|
+
* Type guard for resource templates.
|
|
317
|
+
*/
|
|
318
|
+
export declare function isResourceTemplate<TInput extends z.AnyZodObject = z.AnyZodObject>(resource: ResourceDefinition<TInput>): resource is ResourceTemplateDefinition<TInput>;
|
|
319
|
+
/**
|
|
320
|
+
* Resource content types for MCP protocol response.
|
|
321
|
+
*/
|
|
322
|
+
export interface TextResourceContent {
|
|
323
|
+
readonly uri: string;
|
|
324
|
+
readonly mimeType?: string;
|
|
325
|
+
readonly text: string;
|
|
326
|
+
}
|
|
327
|
+
export interface BlobResourceContent {
|
|
328
|
+
readonly uri: string;
|
|
329
|
+
readonly mimeType?: string;
|
|
330
|
+
/** Base64 encoded binary content */
|
|
331
|
+
readonly blob: string;
|
|
332
|
+
}
|
|
333
|
+
export type ResourceContent = TextResourceContent | BlobResourceContent;
|
|
334
|
+
/**
|
|
335
|
+
* Resource provider interface for registries and plugins.
|
|
336
|
+
*
|
|
337
|
+
* Provides access to static resources and resource templates
|
|
338
|
+
* for MCP `resources/list` and `resources/read` requests.
|
|
339
|
+
*
|
|
340
|
+
* This combined provider handles both resource types for convenience.
|
|
341
|
+
* Use `isStaticResource()` / `isResourceTemplate()` type guards when needed.
|
|
342
|
+
*/
|
|
343
|
+
export interface ResourceProvider {
|
|
344
|
+
/** Get all static resources */
|
|
345
|
+
getResources(): ReadonlyArray<ResourceStaticDefinition>;
|
|
346
|
+
/** Get all resource templates */
|
|
347
|
+
getTemplates(): ReadonlyArray<ResourceTemplateDefinition>;
|
|
348
|
+
/** Check if provider has any resources (static or templates) */
|
|
349
|
+
hasResources(): boolean;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Prompt message role.
|
|
353
|
+
*/
|
|
354
|
+
export type PromptRole = "user" | "assistant";
|
|
355
|
+
/**
|
|
356
|
+
* Prompt message in generated prompt output.
|
|
357
|
+
*/
|
|
358
|
+
export interface PromptMessage {
|
|
359
|
+
/** Message role */
|
|
360
|
+
readonly role: PromptRole;
|
|
361
|
+
/** Message content */
|
|
362
|
+
readonly content: string;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Prompt definition - the canonical type for MCP prompts.
|
|
366
|
+
*
|
|
367
|
+
* Prompts generate pre-defined message sequences that guide LLM behavior.
|
|
368
|
+
* Use Zod schemas for type-safe argument handling.
|
|
369
|
+
*
|
|
370
|
+
* @typeParam TInput - Zod object schema for input validation (default: z.ZodObject<{}>)
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ```typescript
|
|
374
|
+
* // With typed arguments
|
|
375
|
+
* const explainPrompt = definePrompt({
|
|
376
|
+
* name: 'explain-concept',
|
|
377
|
+
* description: 'Explain a technical concept',
|
|
378
|
+
* input: z.object({
|
|
379
|
+
* topic: z.string().describe('Topic to explain'),
|
|
380
|
+
* level: z.enum(['beginner', 'expert']).default('beginner'),
|
|
381
|
+
* }),
|
|
382
|
+
* generate: async ({ topic, level }) => [
|
|
383
|
+
* { role: 'user', content: `Explain ${topic} at ${level} level.` },
|
|
384
|
+
* ],
|
|
385
|
+
* });
|
|
386
|
+
*
|
|
387
|
+
* // Without arguments
|
|
388
|
+
* const greetingPrompt = definePrompt({
|
|
389
|
+
* name: 'greeting',
|
|
390
|
+
* description: 'Standard greeting',
|
|
391
|
+
* generate: async () => [
|
|
392
|
+
* { role: 'user', content: 'Hello!' },
|
|
393
|
+
* ],
|
|
394
|
+
* });
|
|
395
|
+
* ```
|
|
396
|
+
*/
|
|
397
|
+
export interface PromptDefinition<TInput extends z.AnyZodObject = z.AnyZodObject> {
|
|
398
|
+
/** Unique prompt name */
|
|
399
|
+
readonly name: string;
|
|
400
|
+
/** Human-readable description shown to LLM */
|
|
401
|
+
readonly description: string;
|
|
402
|
+
/**
|
|
403
|
+
* Zod object schema for argument validation.
|
|
404
|
+
*
|
|
405
|
+
* The SDK automatically extracts argument names, descriptions, and
|
|
406
|
+
* required status from the Zod schema. Use `.describe()` on fields
|
|
407
|
+
* to provide human-readable descriptions.
|
|
408
|
+
*
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* input: z.object({
|
|
412
|
+
* topic: z.string().describe('The topic to explain'),
|
|
413
|
+
* depth: z.enum(['brief', 'detailed']).optional().describe('Level of detail'),
|
|
414
|
+
* })
|
|
415
|
+
* ```
|
|
416
|
+
*/
|
|
417
|
+
readonly input?: TInput;
|
|
418
|
+
/**
|
|
419
|
+
* Generate prompt messages.
|
|
420
|
+
*
|
|
421
|
+
* @param args - Validated arguments (typed from Zod schema)
|
|
422
|
+
* @returns Array of messages
|
|
423
|
+
*/
|
|
424
|
+
generate: (args: z.infer<TInput>) => Promise<ReadonlyArray<PromptMessage>>;
|
|
425
|
+
/**
|
|
426
|
+
* Optional callback for argument autocompletion.
|
|
427
|
+
*
|
|
428
|
+
* When provided, enables clients to request autocompletion suggestions
|
|
429
|
+
* for prompt arguments. The callback receives the argument name
|
|
430
|
+
* and current partial value, and returns matching suggestions.
|
|
431
|
+
*
|
|
432
|
+
* Requires `input` schema to be defined — prompt arguments are derived
|
|
433
|
+
* from the Zod schema fields. The SDK wraps each schema field with
|
|
434
|
+
* `completable()` internally.
|
|
435
|
+
*
|
|
436
|
+
* @param argName - The prompt argument name being completed
|
|
437
|
+
* @param argValue - The current partial value typed by the user
|
|
438
|
+
* @returns Completion suggestions
|
|
439
|
+
*
|
|
440
|
+
* @example
|
|
441
|
+
* ```typescript
|
|
442
|
+
* definePrompt({
|
|
443
|
+
* name: 'summarize',
|
|
444
|
+
* input: z.object({ style: z.string() }),
|
|
445
|
+
* generate: async ({ style }) => [{ role: 'user', content: `Summarize in ${style}` }],
|
|
446
|
+
* complete: async (argName, argValue) => ({
|
|
447
|
+
* values: ['bullet-points', 'paragraph', 'tldr'].filter(s => s.startsWith(argValue)),
|
|
448
|
+
* }),
|
|
449
|
+
* });
|
|
450
|
+
* ```
|
|
451
|
+
*/
|
|
452
|
+
complete?: CompletionCallback;
|
|
453
|
+
/**
|
|
454
|
+
* Scopes required to get this prompt (RBAC).
|
|
455
|
+
*
|
|
456
|
+
* When set, the framework checks `authInfo.scopes` BEFORE
|
|
457
|
+
* the generate handler executes. All listed scopes must be present (AND logic).
|
|
458
|
+
* If the check fails, a 403 Forbidden error is returned.
|
|
459
|
+
*
|
|
460
|
+
* Omit or set to `undefined` for prompts accessible to any authenticated user.
|
|
461
|
+
*/
|
|
462
|
+
readonly requiredScopes?: readonly string[];
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Prompt provider interface for registries and plugins.
|
|
466
|
+
*
|
|
467
|
+
* Provides access to prompts for MCP `prompts/list`
|
|
468
|
+
* and `prompts/get` requests.
|
|
469
|
+
*/
|
|
470
|
+
export interface PromptProvider {
|
|
471
|
+
/** Get all prompts */
|
|
472
|
+
getPrompts(): ReadonlyArray<PromptDefinition>;
|
|
473
|
+
/** Check if provider has any prompts */
|
|
474
|
+
hasPrompts(): boolean;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Resource definition embedded within an {@link AppDefinition}.
|
|
478
|
+
*
|
|
479
|
+
* Declares the UI resource that backs the MCP App. The resource is
|
|
480
|
+
* registered automatically when `defineApp()` is called.
|
|
481
|
+
*/
|
|
482
|
+
export interface AppResourceDefinition {
|
|
483
|
+
/** Static resource URI — must use `ui://` scheme (e.g., 'ui://calculator') */
|
|
484
|
+
readonly uri: string;
|
|
485
|
+
/** Optional resource name (defaults to app name) */
|
|
486
|
+
readonly name?: string;
|
|
487
|
+
/** Optional resource description (defaults to app description) */
|
|
488
|
+
readonly description?: string;
|
|
489
|
+
/** MIME type of the resource content (default: 'text/html;profile=mcp-app') */
|
|
490
|
+
readonly mimeType?: string;
|
|
491
|
+
/**
|
|
492
|
+
* Read the resource content.
|
|
493
|
+
*
|
|
494
|
+
* @returns Resource content as string (text) or Uint8Array (binary)
|
|
495
|
+
*/
|
|
496
|
+
read: () => string | Uint8Array | Promise<string | Uint8Array>;
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Definition for an MCP App — a tool linked to a UI resource.
|
|
500
|
+
*
|
|
501
|
+
* MCP Apps combine a tool with a resource to create interactive
|
|
502
|
+
* experiences. The tool's `_meta.ui.resourceUri` links to the
|
|
503
|
+
* resource, and MCP clients use this to render the UI.
|
|
504
|
+
*
|
|
505
|
+
* `defineApp()` internally creates both a `defineTool()` and a
|
|
506
|
+
* `defineResource()`, auto-registering them in the global registries.
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```typescript
|
|
510
|
+
* import { defineApp, text, z } from 'mcp-server-framework';
|
|
511
|
+
*
|
|
512
|
+
* const calculator = defineApp({
|
|
513
|
+
* name: 'calculator',
|
|
514
|
+
* description: 'An interactive calculator app',
|
|
515
|
+
* resource: {
|
|
516
|
+
* uri: 'ui://calculator',
|
|
517
|
+
* mimeType: 'text/html',
|
|
518
|
+
* read: async () => '<html>...calculator UI...</html>',
|
|
519
|
+
* },
|
|
520
|
+
* input: z.object({ expression: z.string() }),
|
|
521
|
+
* handler: async ({ expression }) => text(String(eval(expression))),
|
|
522
|
+
* });
|
|
523
|
+
* ```
|
|
524
|
+
*/
|
|
525
|
+
export interface AppDefinition<TInput extends z.ZodTypeAny = z.ZodTypeAny> {
|
|
526
|
+
/** Unique app/tool name */
|
|
527
|
+
readonly name: string;
|
|
528
|
+
/** Human-readable description */
|
|
529
|
+
readonly description: string;
|
|
530
|
+
/** Resource definition for the app's UI */
|
|
531
|
+
readonly resource: AppResourceDefinition;
|
|
532
|
+
/** Zod schema for tool input validation */
|
|
533
|
+
readonly input: TInput;
|
|
534
|
+
/**
|
|
535
|
+
* Tool handler function.
|
|
536
|
+
*
|
|
537
|
+
* @param args - Validated input (typed from Zod schema)
|
|
538
|
+
* @param context - Execution context with progress reporter, abort signal
|
|
539
|
+
* @returns MCP CallToolResult (use response helpers: text(), json(), error())
|
|
540
|
+
*/
|
|
541
|
+
handler: (args: z.infer<TInput>, context: ToolContext) => Promise<CallToolResult>;
|
|
542
|
+
/** Optional tool annotations */
|
|
543
|
+
readonly annotations?: ToolAnnotations;
|
|
544
|
+
/**
|
|
545
|
+
* Additional `_meta` merged with the auto-generated `ui.resourceUri`.
|
|
546
|
+
* The `ui.resourceUri` key is always set automatically from the resource URI.
|
|
547
|
+
*/
|
|
548
|
+
readonly _meta?: Record<string, unknown>;
|
|
549
|
+
/**
|
|
550
|
+
* Scopes required to execute this app's tool (RBAC).
|
|
551
|
+
*
|
|
552
|
+
* Passed through to the internal `defineTool()` call.
|
|
553
|
+
* All listed scopes must be present (AND logic).
|
|
554
|
+
*/
|
|
555
|
+
readonly requiredScopes?: readonly string[];
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Task support level for a task-enabled tool.
|
|
559
|
+
*
|
|
560
|
+
* - `'optional'` — Tool can be called normally or as a task
|
|
561
|
+
* - `'required'` — Tool MUST be called as a task (async execution only)
|
|
562
|
+
*
|
|
563
|
+
* Note: `'forbidden'` is not valid for task tools — use a regular
|
|
564
|
+
* `defineTool()` for tools that never support task execution.
|
|
565
|
+
*
|
|
566
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
567
|
+
*/
|
|
568
|
+
export type TaskSupport = "optional" | "required";
|
|
569
|
+
/**
|
|
570
|
+
* Handler interface for task-based tool execution.
|
|
571
|
+
*
|
|
572
|
+
* Task tools use a three-method handler instead of a single callback,
|
|
573
|
+
* enabling long-running operations with a create → poll → result lifecycle:
|
|
574
|
+
*
|
|
575
|
+
* 1. **`createTask`** — Initiate the task, return immediately with a task ID
|
|
576
|
+
* 2. **`getTask`** — Return current task status (clients poll this)
|
|
577
|
+
* 3. **`getTaskResult`** — Return the final result when the task completes
|
|
578
|
+
*
|
|
579
|
+
* @typeParam TInput - Zod schema type for input validation (inferred)
|
|
580
|
+
*
|
|
581
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
582
|
+
*
|
|
583
|
+
* @example
|
|
584
|
+
* ```typescript
|
|
585
|
+
* const handler: TaskToolHandler<typeof inputSchema> = {
|
|
586
|
+
* createTask: async (args, ctx) => {
|
|
587
|
+
* const task = await ctx.taskStore.createTask({});
|
|
588
|
+
* startBackgroundWork(task.taskId, args);
|
|
589
|
+
* return { task };
|
|
590
|
+
* },
|
|
591
|
+
* getTask: async (_args, ctx) => {
|
|
592
|
+
* return ctx.taskStore.getTask(ctx.taskId);
|
|
593
|
+
* },
|
|
594
|
+
* getTaskResult: async (_args, ctx) => {
|
|
595
|
+
* return ctx.taskStore.getTaskResult(ctx.taskId);
|
|
596
|
+
* },
|
|
597
|
+
* };
|
|
598
|
+
* ```
|
|
599
|
+
*/
|
|
600
|
+
export interface TaskToolHandler<TInput extends z.ZodTypeAny = z.ZodTypeAny> {
|
|
601
|
+
/**
|
|
602
|
+
* Create and start a new task.
|
|
603
|
+
*
|
|
604
|
+
* Called when the client issues a `tools/call` with task parameters.
|
|
605
|
+
* Should initiate the background work and return immediately.
|
|
606
|
+
*
|
|
607
|
+
* @param args - Validated input (typed from Zod schema)
|
|
608
|
+
* @param context - Task creation context with `taskStore`
|
|
609
|
+
* @returns Object containing the created task
|
|
610
|
+
*/
|
|
611
|
+
createTask: (args: z.infer<TInput>, context: TaskCreateContext) => Promise<CreateTaskResult>;
|
|
612
|
+
/**
|
|
613
|
+
* Get the current status of a task.
|
|
614
|
+
*
|
|
615
|
+
* Called when the client polls via `tasks/get`.
|
|
616
|
+
* Return the task with its current status.
|
|
617
|
+
*
|
|
618
|
+
* @param args - Original tool input args
|
|
619
|
+
* @param context - Task operation context with `taskId` and `taskStore`
|
|
620
|
+
* @returns Task status result
|
|
621
|
+
*/
|
|
622
|
+
getTask: (args: z.infer<TInput>, context: TaskOperationContext) => Promise<GetTaskResult>;
|
|
623
|
+
/**
|
|
624
|
+
* Get the final result of a completed task.
|
|
625
|
+
*
|
|
626
|
+
* Called when the client requests the result via `tasks/result`.
|
|
627
|
+
* Should return the tool's final output.
|
|
628
|
+
*
|
|
629
|
+
* @param args - Original tool input args
|
|
630
|
+
* @param context - Task operation context with `taskId` and `taskStore`
|
|
631
|
+
* @returns MCP CallToolResult (use response helpers: text(), json(), error())
|
|
632
|
+
*/
|
|
633
|
+
getTaskResult: (args: z.infer<TInput>, context: TaskOperationContext) => Promise<CallToolResult>;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* Task tool definition — a tool with asynchronous task execution support.
|
|
637
|
+
*
|
|
638
|
+
* Task tools enable long-running operations that report progress asynchronously.
|
|
639
|
+
* Instead of blocking the tool call until completion, the client receives a task ID
|
|
640
|
+
* and can poll for status updates and results.
|
|
641
|
+
*
|
|
642
|
+
* Registered via `defineTask()` which auto-registers in `globalTaskToolRegistry`.
|
|
643
|
+
* The framework uses the SDK's `experimental.tasks.registerToolTask()` internally.
|
|
644
|
+
*
|
|
645
|
+
* @typeParam TInput - Zod schema type for input validation (default: any Zod type)
|
|
646
|
+
*
|
|
647
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
648
|
+
*
|
|
649
|
+
* @example
|
|
650
|
+
* ```typescript
|
|
651
|
+
* import { defineTask, text, z } from 'mcp-server-framework';
|
|
652
|
+
*
|
|
653
|
+
* export const longRunningTool = defineTask({
|
|
654
|
+
* name: 'long_computation',
|
|
655
|
+
* description: 'Perform a long computation',
|
|
656
|
+
* input: z.object({ data: z.string() }),
|
|
657
|
+
* taskSupport: 'required',
|
|
658
|
+
* taskHandler: {
|
|
659
|
+
* createTask: async (args, ctx) => {
|
|
660
|
+
* const task = await ctx.taskStore.createTask({ ttl: 300_000 });
|
|
661
|
+
* startBackgroundWork(task.taskId, args);
|
|
662
|
+
* return { task };
|
|
663
|
+
* },
|
|
664
|
+
* getTask: async (_args, ctx) => ctx.taskStore.getTask(ctx.taskId),
|
|
665
|
+
* getTaskResult: async (_args, ctx) => ctx.taskStore.getTaskResult(ctx.taskId),
|
|
666
|
+
* },
|
|
667
|
+
* });
|
|
668
|
+
* ```
|
|
669
|
+
*/
|
|
670
|
+
export interface TaskToolDefinition<TInput extends z.ZodTypeAny = z.ZodTypeAny> {
|
|
671
|
+
/** Unique tool name (e.g., 'long_computation') */
|
|
672
|
+
readonly name: string;
|
|
673
|
+
/** Human-readable description shown to LLM */
|
|
674
|
+
readonly description: string;
|
|
675
|
+
/** Zod schema for input validation */
|
|
676
|
+
readonly input: TInput;
|
|
677
|
+
/**
|
|
678
|
+
* Task support level.
|
|
679
|
+
*
|
|
680
|
+
* - `'optional'` — Tool can be called normally or as a task
|
|
681
|
+
* - `'required'` — Tool MUST be called as a task
|
|
682
|
+
*
|
|
683
|
+
* @default 'required'
|
|
684
|
+
*/
|
|
685
|
+
readonly taskSupport?: TaskSupport;
|
|
686
|
+
/**
|
|
687
|
+
* Task handler with create/get/getResult methods.
|
|
688
|
+
*
|
|
689
|
+
* These three methods implement the task lifecycle:
|
|
690
|
+
* 1. `createTask` — Start the background work
|
|
691
|
+
* 2. `getTask` — Report current status
|
|
692
|
+
* 3. `getTaskResult` — Return the final result
|
|
693
|
+
*/
|
|
694
|
+
readonly taskHandler: TaskToolHandler<TInput>;
|
|
695
|
+
/**
|
|
696
|
+
* Optional annotations providing hints about tool behavior.
|
|
697
|
+
*
|
|
698
|
+
* @see ToolAnnotations
|
|
699
|
+
*/
|
|
700
|
+
readonly annotations?: ToolAnnotations;
|
|
701
|
+
/**
|
|
702
|
+
* Optional metadata passed through to the MCP SDK.
|
|
703
|
+
*/
|
|
704
|
+
readonly _meta?: Record<string, unknown>;
|
|
705
|
+
/**
|
|
706
|
+
* Scopes required to execute this task tool (RBAC).
|
|
707
|
+
*
|
|
708
|
+
* When set, the framework checks `authInfo.scopes` BEFORE
|
|
709
|
+
* the task handler executes. All listed scopes must be present (AND logic).
|
|
710
|
+
* If the check fails, a 403 Forbidden error is returned.
|
|
711
|
+
*
|
|
712
|
+
* Omit or set to `undefined` for task tools accessible to any authenticated user.
|
|
713
|
+
*/
|
|
714
|
+
readonly requiredScopes?: readonly string[];
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* Task tool provider interface for registries and plugins.
|
|
718
|
+
*
|
|
719
|
+
* Provides access to all registered task tools.
|
|
720
|
+
*
|
|
721
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
722
|
+
*/
|
|
723
|
+
export interface TaskToolProvider {
|
|
724
|
+
/** Get all registered task tools */
|
|
725
|
+
getTaskTools(): ReadonlyArray<TaskToolDefinition>;
|
|
726
|
+
}
|
|
727
|
+
//# sourceMappingURL=definition.d.ts.map
|