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