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,615 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Instance
|
|
3
|
+
*
|
|
4
|
+
* The central framework object. Runtime implementation of the ServerInstance
|
|
5
|
+
* interface. Manages the MCP server lifecycle including transport selection,
|
|
6
|
+
* session management, signal handling, and graceful shutdown.
|
|
7
|
+
*
|
|
8
|
+
* Each connected client gets its own McpSession (1:1 per MCP SDK spec).
|
|
9
|
+
* Session creation is delegated to McpSessionFactory (SRP).
|
|
10
|
+
* Cancellation and progress are handled natively by the SDK.
|
|
11
|
+
*
|
|
12
|
+
* This class is created by McpServerBuilder and should not be
|
|
13
|
+
* instantiated directly by application code.
|
|
14
|
+
*
|
|
15
|
+
* @module server/server-instance
|
|
16
|
+
*/
|
|
17
|
+
import { isHttpTransport } from "./server-options.js";
|
|
18
|
+
import { mapServerOptionsToOverrides } from "./option-overrides.js";
|
|
19
|
+
import { startStdioTransport } from "./transport/stdio-transport.js";
|
|
20
|
+
import { SessionManagerImpl } from "./session/index.js";
|
|
21
|
+
import { Logger, logger as frameworkLogger, configureLogger } from "../logger/index.js";
|
|
22
|
+
import { initializeTelemetry, shutdownTelemetry } from "../telemetry/index.js";
|
|
23
|
+
import { DEFAULT_SHUTDOWN_CONFIG } from "./lifecycle.js";
|
|
24
|
+
import { applyConfigOverrides, getFrameworkConfig, flushStartupWarnings, setConfigLogger } from "../config/index.js";
|
|
25
|
+
import { isFullOAuthProvider } from "./auth/types.js";
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Constants
|
|
28
|
+
// ============================================================================
|
|
29
|
+
const LOG_COMPONENT = "server-runtime";
|
|
30
|
+
const DEFAULT_SIGNALS = ["SIGINT", "SIGTERM"];
|
|
31
|
+
const RuntimeLogMessages = {
|
|
32
|
+
SERVER_STARTING: "Server starting...",
|
|
33
|
+
SERVER_STARTED: "Server started: %s v%s (%s mode)",
|
|
34
|
+
SERVER_START_FAILED: "Server start failed: %s",
|
|
35
|
+
SERVER_STOPPING: "Server stopping...",
|
|
36
|
+
SERVER_STOPPED: "Server stopped",
|
|
37
|
+
SERVER_ALREADY_RUNNING: "Server is already running.",
|
|
38
|
+
SHUTDOWN_SIGNAL: "Received shutdown signal: %s",
|
|
39
|
+
SHUTDOWN_FORCED: "Forcing server shutdown after timeout",
|
|
40
|
+
SHUTDOWN_ALREADY: "Shutdown already in progress",
|
|
41
|
+
// State transitions
|
|
42
|
+
STATE_TRANSITION: "Server state: %s → %s",
|
|
43
|
+
// Telemetry
|
|
44
|
+
TELEMETRY_INIT: "OpenTelemetry initialized",
|
|
45
|
+
TELEMETRY_SKIPPED: "OpenTelemetry disabled — skipping initialization",
|
|
46
|
+
TELEMETRY_SHUTDOWN: "OpenTelemetry shut down",
|
|
47
|
+
// Lifecycle hooks
|
|
48
|
+
LIFECYCLE_HOOK_ERROR: "Lifecycle hook %s failed: %s",
|
|
49
|
+
// Transport
|
|
50
|
+
TRANSPORT_STARTING: "Starting %s transport...",
|
|
51
|
+
STATELESS_MODE: "Stateless mode active — sessions are per-request. Per-request features (progress, logging, abort) work normally. Cross-request features (cancellation, sampling, elicitation, roots, GET SSE) are unavailable by design.",
|
|
52
|
+
STATELESS_EVENT_STORE_IGNORED: "eventStore is set but has no effect in stateless mode — events are not persisted without sessions.",
|
|
53
|
+
STATELESS_SSE_IGNORED: "legacySseEnabled is set but has no effect in stateless mode — SSE requires persistent sessions.",
|
|
54
|
+
// Partial cleanup
|
|
55
|
+
PARTIAL_CLEANUP: "Cleaning up partially initialized resources after start failure",
|
|
56
|
+
// Auth
|
|
57
|
+
AUTH_OAUTH_ENABLED: "OAuth authentication enabled (issuer: %s)",
|
|
58
|
+
AUTH_BEARER_ENABLED: "Bearer token authentication enabled (custom verifier)",
|
|
59
|
+
AUTH_STDIO_WARNING: "Auth configuration ignored in stdio mode — stdio does not support authentication",
|
|
60
|
+
AUTH_NO_TRUST_PROXY: "Auth is enabled without trust proxy — client IP detection may be inaccurate behind a reverse proxy",
|
|
61
|
+
AUTH_PROVIDER_DISPOSED: "Auth provider disposed",
|
|
62
|
+
// Shutdown cleanup
|
|
63
|
+
SHUTDOWN_STEP_FAILED: "Shutdown step %s failed: %s",
|
|
64
|
+
// Process error handlers
|
|
65
|
+
UNHANDLED_REJECTION: "Unhandled promise rejection — initiating graceful shutdown: %s",
|
|
66
|
+
UNCAUGHT_EXCEPTION: "Uncaught exception — initiating graceful shutdown: %s",
|
|
67
|
+
SHUTDOWN_FAILED: "Graceful shutdown failed: %s",
|
|
68
|
+
};
|
|
69
|
+
const logger = frameworkLogger.child({ component: LOG_COMPONENT });
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Server Instance Implementation
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* The central MCP server framework object.
|
|
75
|
+
*
|
|
76
|
+
* Manages the MCP server lifecycle including:
|
|
77
|
+
* - Multi-session support (one McpSession per client in HTTP mode)
|
|
78
|
+
* - Transport selection (stdio/http/https)
|
|
79
|
+
* - Signal handling with graceful shutdown
|
|
80
|
+
*
|
|
81
|
+
* Session creation is delegated to {@link McpSessionFactory}.
|
|
82
|
+
*
|
|
83
|
+
* @internal Created by McpServerBuilder — do not instantiate directly.
|
|
84
|
+
*/
|
|
85
|
+
export class McpServerInstance {
|
|
86
|
+
options;
|
|
87
|
+
sessionFactory;
|
|
88
|
+
serverState = "created";
|
|
89
|
+
/** Whether telemetry has been initialized */
|
|
90
|
+
telemetryInitialized = false;
|
|
91
|
+
/** Resolved transport mode, cached at construction time */
|
|
92
|
+
transportMode;
|
|
93
|
+
/** Unified session manager — single source of truth for all sessions */
|
|
94
|
+
sessionManager;
|
|
95
|
+
/** Transport handle for shutdown and info queries */
|
|
96
|
+
transportHandle;
|
|
97
|
+
/** Stored signal handler references for cleanup on stop/restart */
|
|
98
|
+
signalHandlers = [];
|
|
99
|
+
/** Stored process error handler references for cleanup on stop/restart */
|
|
100
|
+
processErrorHandlers = [];
|
|
101
|
+
/** Guard against concurrent shutdown from multiple error sources */
|
|
102
|
+
shutdownInProgress = false;
|
|
103
|
+
constructor(options, sessionFactory) {
|
|
104
|
+
this.options = options;
|
|
105
|
+
this.sessionFactory = sessionFactory;
|
|
106
|
+
this.transportMode = options.transport.mode;
|
|
107
|
+
logger.debug(RuntimeLogMessages.STATE_TRANSITION, "(none)", "created");
|
|
108
|
+
}
|
|
109
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
110
|
+
// ServerInstance Interface
|
|
111
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
112
|
+
get name() {
|
|
113
|
+
return this.options.name;
|
|
114
|
+
}
|
|
115
|
+
get version() {
|
|
116
|
+
return this.options.version;
|
|
117
|
+
}
|
|
118
|
+
get isRunning() {
|
|
119
|
+
return this.serverState === "running";
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Notify all connected MCP clients that the tool list has changed.
|
|
123
|
+
*
|
|
124
|
+
* Call this when external connection state changes affect tool availability.
|
|
125
|
+
* Delegates to the unified SessionManager which handles all transport types.
|
|
126
|
+
*/
|
|
127
|
+
notifyToolListChanged() {
|
|
128
|
+
this.sessionManager?.broadcastToolListChanged();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Notify all connected MCP clients that the resource list has changed.
|
|
132
|
+
*/
|
|
133
|
+
notifyResourceListChanged() {
|
|
134
|
+
this.sessionManager?.broadcastResourceListChanged();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Notify all connected MCP clients that the prompt list has changed.
|
|
138
|
+
*/
|
|
139
|
+
notifyPromptListChanged() {
|
|
140
|
+
this.sessionManager?.broadcastPromptListChanged();
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Notify subscribed MCP clients that a specific resource has been updated.
|
|
144
|
+
* Only sessions that subscribed to the given URI receive the notification.
|
|
145
|
+
*/
|
|
146
|
+
notifyResourceUpdated(uri) {
|
|
147
|
+
this.sessionManager?.broadcastResourceUpdated(uri);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Initialize OpenTelemetry before starting the server.
|
|
151
|
+
*
|
|
152
|
+
* OTEL auto-instrumentation must be initialized before any HTTP/Express
|
|
153
|
+
* modules are loaded to properly instrument them. Call this as early
|
|
154
|
+
* as possible. No-op if telemetry is disabled or already initialized.
|
|
155
|
+
*/
|
|
156
|
+
async initTelemetry() {
|
|
157
|
+
if (this.telemetryInitialized) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (!this.options.telemetryEnabled) {
|
|
161
|
+
logger.debug(RuntimeLogMessages.TELEMETRY_SKIPPED);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await initializeTelemetry(this.options.onBeforeTelemetryInit);
|
|
165
|
+
this.telemetryInitialized = true;
|
|
166
|
+
logger.debug(RuntimeLogMessages.TELEMETRY_INIT);
|
|
167
|
+
}
|
|
168
|
+
async start() {
|
|
169
|
+
if (this.serverState === "running" || this.serverState === "starting") {
|
|
170
|
+
logger.warn(RuntimeLogMessages.SERVER_ALREADY_RUNNING);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this.transitionState("starting");
|
|
174
|
+
logger.info(RuntimeLogMessages.SERVER_STARTING);
|
|
175
|
+
// Register signal handlers FIRST so that SIGINT/SIGTERM during any
|
|
176
|
+
// async startup step (telemetry init, transport bind) triggers
|
|
177
|
+
// graceful shutdown instead of a hard process exit.
|
|
178
|
+
this.setupSignalHandlers();
|
|
179
|
+
try {
|
|
180
|
+
// Bridge programmatic options → framework config cache
|
|
181
|
+
// Must happen FIRST so onStarting() hooks can use the final config
|
|
182
|
+
// (e.g., API credentials from config file).
|
|
183
|
+
this.applyProgrammaticOverrides();
|
|
184
|
+
// Bridge config file values → logger (must run after config resolution)
|
|
185
|
+
this.applyLoggerConfig();
|
|
186
|
+
// Inject logger into config module (breaks config→logger dependency)
|
|
187
|
+
setConfigLogger(frameworkLogger.child({ component: "config" }));
|
|
188
|
+
// Replay startup warnings through the now-configured logger
|
|
189
|
+
flushStartupWarnings((msg) => logger.warn(msg));
|
|
190
|
+
// Initialize telemetry BEFORE lifecycle hooks so that consumer
|
|
191
|
+
// API calls in onStarting() are already instrumented (DD-018).
|
|
192
|
+
await this.initTelemetry();
|
|
193
|
+
await this.invokeLifecycleHook("onStarting", () => this.options.lifecycle?.onStarting?.());
|
|
194
|
+
logger.debug(RuntimeLogMessages.TRANSPORT_STARTING, this.transportMode);
|
|
195
|
+
const sessionFactory = () => this.sessionFactory.create();
|
|
196
|
+
this.sessionManager = this.createSessionManager();
|
|
197
|
+
this.transportHandle = await this.startTransport(sessionFactory, this.sessionManager);
|
|
198
|
+
// Log stateless mode warning after transport is started
|
|
199
|
+
if (isHttpTransport(this.options.transport) && this.options.transport.stateless) {
|
|
200
|
+
logger.warn(RuntimeLogMessages.STATELESS_MODE);
|
|
201
|
+
// Warn about ineffective config combinations
|
|
202
|
+
if (this.options.transport.eventStore) {
|
|
203
|
+
logger.warn(RuntimeLogMessages.STATELESS_EVENT_STORE_IGNORED);
|
|
204
|
+
}
|
|
205
|
+
if (this.options.transport.legacySseEnabled) {
|
|
206
|
+
logger.warn(RuntimeLogMessages.STATELESS_SSE_IGNORED);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Log auth configuration
|
|
210
|
+
this.logAuthConfiguration();
|
|
211
|
+
this.transitionState("running");
|
|
212
|
+
await this.invokeLifecycleHook("onStarted", () => this.options.lifecycle?.onStarted?.());
|
|
213
|
+
logger.debug(RuntimeLogMessages.SERVER_STARTED, this.options.name, this.options.version, this.transportMode);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
this.transitionState("error");
|
|
217
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
218
|
+
logger.error(RuntimeLogMessages.SERVER_START_FAILED, err.message);
|
|
219
|
+
// Remove signal handlers so they don't trigger on a failed server
|
|
220
|
+
this.removeSignalHandlers();
|
|
221
|
+
// Cleanup partially initialized resources — each step individually
|
|
222
|
+
// guarded (error isolation), mirroring the pattern used in stop().
|
|
223
|
+
if (this.sessionManager || this.transportHandle || this.telemetryInitialized) {
|
|
224
|
+
logger.debug(RuntimeLogMessages.PARTIAL_CLEANUP);
|
|
225
|
+
}
|
|
226
|
+
if (this.sessionManager) {
|
|
227
|
+
this.sessionManager.dispose();
|
|
228
|
+
this.sessionManager = undefined;
|
|
229
|
+
}
|
|
230
|
+
if (this.transportHandle) {
|
|
231
|
+
await this.transportHandle.shutdown();
|
|
232
|
+
this.transportHandle = undefined;
|
|
233
|
+
}
|
|
234
|
+
if (this.telemetryInitialized) {
|
|
235
|
+
await shutdownTelemetry();
|
|
236
|
+
this.telemetryInitialized = false;
|
|
237
|
+
}
|
|
238
|
+
await this.invokeLifecycleHook("onError", () => this.options.lifecycle?.onError?.(err));
|
|
239
|
+
throw err;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Gracefully stop the server.
|
|
244
|
+
*
|
|
245
|
+
* Performs cleanup in order: sessions → transport → auth → logger → telemetry.
|
|
246
|
+
* Each step is individually guarded (error isolation) so that a failure
|
|
247
|
+
* in one step does not prevent the remaining steps from running.
|
|
248
|
+
* Idempotent — calling `stop()` on an already stopped server is a no-op.
|
|
249
|
+
*/
|
|
250
|
+
async stop() {
|
|
251
|
+
if (this.serverState === "stopping" || this.serverState === "stopped") {
|
|
252
|
+
logger.debug(RuntimeLogMessages.SHUTDOWN_ALREADY);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.transitionState("stopping");
|
|
256
|
+
logger.info(RuntimeLogMessages.SERVER_STOPPING);
|
|
257
|
+
this.removeSignalHandlers();
|
|
258
|
+
await this.invokeLifecycleHook("onStopping", () => this.options.lifecycle?.onStopping?.());
|
|
259
|
+
// Each cleanup step is individually guarded so that a failure in one
|
|
260
|
+
// step does not prevent the remaining steps from running (error isolation).
|
|
261
|
+
try {
|
|
262
|
+
if (this.sessionManager) {
|
|
263
|
+
await this.sessionManager.closeAll();
|
|
264
|
+
this.sessionManager.dispose();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
logger.warn(RuntimeLogMessages.SHUTDOWN_STEP_FAILED, "sessions", error instanceof Error ? error.message : String(error));
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
if (this.transportHandle) {
|
|
272
|
+
await this.transportHandle.shutdown();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
logger.warn(RuntimeLogMessages.SHUTDOWN_STEP_FAILED, "transport", error instanceof Error ? error.message : String(error));
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
await this.disposeAuthProvider();
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
logger.warn(RuntimeLogMessages.SHUTDOWN_STEP_FAILED, "auth-provider", error instanceof Error ? error.message : String(error));
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
if (this.options.telemetryEnabled) {
|
|
286
|
+
await shutdownTelemetry();
|
|
287
|
+
logger.debug(RuntimeLogMessages.TELEMETRY_SHUTDOWN);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
logger.warn(RuntimeLogMessages.SHUTDOWN_STEP_FAILED, "telemetry", error instanceof Error ? error.message : String(error));
|
|
292
|
+
}
|
|
293
|
+
try {
|
|
294
|
+
await Logger.closeStreams();
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
logger.warn(RuntimeLogMessages.SHUTDOWN_STEP_FAILED, "logger", error instanceof Error ? error.message : String(error));
|
|
298
|
+
}
|
|
299
|
+
this.transitionState("stopped");
|
|
300
|
+
await this.invokeLifecycleHook("onStopped", () => this.options.lifecycle?.onStopped?.());
|
|
301
|
+
logger.info(RuntimeLogMessages.SERVER_STOPPED);
|
|
302
|
+
}
|
|
303
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
304
|
+
// Initialization Helpers
|
|
305
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
306
|
+
/**
|
|
307
|
+
* Create the unified SessionManager.
|
|
308
|
+
*
|
|
309
|
+
* For stdio mode: single session, no cleanup/keepalive cycles.
|
|
310
|
+
* For HTTP modes: default config from environment/constants.
|
|
311
|
+
*/
|
|
312
|
+
createSessionManager() {
|
|
313
|
+
const lifecycle = this.options.lifecycle;
|
|
314
|
+
const sessionLifecycle = lifecycle?.onClientConnected || lifecycle?.onClientDisconnected
|
|
315
|
+
? {
|
|
316
|
+
onClientConnected: lifecycle.onClientConnected,
|
|
317
|
+
onClientDisconnected: lifecycle.onClientDisconnected,
|
|
318
|
+
}
|
|
319
|
+
: undefined;
|
|
320
|
+
// Stdio: single session, no background tasks.
|
|
321
|
+
// HTTP: merge programmatic session options with lifecycle hooks.
|
|
322
|
+
if (this.transportMode === "stdio") {
|
|
323
|
+
return new SessionManagerImpl({
|
|
324
|
+
cleanupIntervalMs: 0,
|
|
325
|
+
keepAliveIntervalMs: 0,
|
|
326
|
+
maxSessions: 1,
|
|
327
|
+
lifecycle: sessionLifecycle,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
const sessionConfig = this.options.session;
|
|
331
|
+
return new SessionManagerImpl({
|
|
332
|
+
...sessionConfig,
|
|
333
|
+
lifecycle: sessionLifecycle,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Bridges config file / env values into the logger configuration.
|
|
338
|
+
*
|
|
339
|
+
* The logger has its own `globalLoggerConfig` (default: info) which is
|
|
340
|
+
* intentionally decoupled from the framework config (DD-006). This method
|
|
341
|
+
* acts as the explicit bridge — reading resolved config values and
|
|
342
|
+
* forwarding them to `configureLogger()`.
|
|
343
|
+
*/
|
|
344
|
+
applyLoggerConfig() {
|
|
345
|
+
const config = getFrameworkConfig();
|
|
346
|
+
configureLogger({
|
|
347
|
+
LOG_LEVEL: config.LOG_LEVEL,
|
|
348
|
+
LOG_FORMAT: config.LOG_FORMAT,
|
|
349
|
+
LOG_DIR: config.LOG_DIR,
|
|
350
|
+
LOG_MAX_FILE_SIZE: config.LOG_MAX_FILE_SIZE,
|
|
351
|
+
LOG_MAX_FILES: config.LOG_MAX_FILES,
|
|
352
|
+
LOG_RETENTION_DAYS: config.LOG_RETENTION_DAYS,
|
|
353
|
+
LOG_TIMESTAMP: config.LOG_TIMESTAMP,
|
|
354
|
+
LOG_COMPONENT: config.LOG_COMPONENT,
|
|
355
|
+
MCP_TRANSPORT: config.MCP_TRANSPORT,
|
|
356
|
+
SERVER_NAME: this.options.name,
|
|
357
|
+
SERVER_VERSION: this.options.version,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Bridges programmatic `createServer()` options into the framework
|
|
362
|
+
* config cache so that all downstream modules (telemetry, SSE router,
|
|
363
|
+
* rate limiter, health endpoint, etc.) see consistent configuration.
|
|
364
|
+
*
|
|
365
|
+
* Bridges:
|
|
366
|
+
* - `options.version` → `config.VERSION` (fixes `service_version="unknown"`)
|
|
367
|
+
* - `options.name` → `config.OTEL_SERVICE_NAME` (default, unless env/config file overrides)
|
|
368
|
+
* - Transport HTTP options → corresponding config keys
|
|
369
|
+
*
|
|
370
|
+
* Environment variables remain the default — programmatic options override them.
|
|
371
|
+
*/
|
|
372
|
+
applyProgrammaticOverrides() {
|
|
373
|
+
const overrides = mapServerOptionsToOverrides(this.options, getFrameworkConfig());
|
|
374
|
+
if (Object.keys(overrides).length > 0) {
|
|
375
|
+
applyConfigOverrides(overrides);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Start the appropriate transport for the configured mode.
|
|
380
|
+
*
|
|
381
|
+
* For HTTP/HTTPS: dynamically loads Express modules (after OTEL init),
|
|
382
|
+
* creates Express app with full middleware stack, then starts the HTTP server.
|
|
383
|
+
* For stdio: creates a single session connected to stdin/stdout.
|
|
384
|
+
*
|
|
385
|
+
* @lazy-transport Express/HTTP modules are loaded via dynamic `import()` so
|
|
386
|
+
* that OTEL instrumentation initializes before Express is imported.
|
|
387
|
+
* See DD-006 for the established lazy-import pattern and DD-018 for
|
|
388
|
+
* the Express lazy-loading rationale.
|
|
389
|
+
*/
|
|
390
|
+
async startTransport(sessionFactory, sessionManager) {
|
|
391
|
+
const transport = this.options.transport;
|
|
392
|
+
if (isHttpTransport(transport)) {
|
|
393
|
+
// @lazy-transport — Express loaded after OTEL init (see method JSDoc)
|
|
394
|
+
const [{ createExpressApp }, { startHttpTransport }, { resolveTrustProxy }] = await Promise.all([
|
|
395
|
+
import("./http/index.js"),
|
|
396
|
+
import("./http/http-transport.js"),
|
|
397
|
+
import("./middleware/trust-proxy.js"),
|
|
398
|
+
]);
|
|
399
|
+
// Resolve trust proxy from config (merges env, config file, programmatic)
|
|
400
|
+
const resolvedConfig = getFrameworkConfig();
|
|
401
|
+
const trustProxy = await resolveTrustProxy(resolvedConfig.MCP_TRUST_PROXY);
|
|
402
|
+
const resolvedJsonResponse = resolvedConfig.MCP_JSON_RESPONSE;
|
|
403
|
+
const app = createExpressApp(sessionFactory, sessionManager, {
|
|
404
|
+
stateless: transport.stateless,
|
|
405
|
+
eventStore: transport.eventStore,
|
|
406
|
+
enableJsonResponse: resolvedJsonResponse,
|
|
407
|
+
health: this.options.health,
|
|
408
|
+
auth: this.options.auth,
|
|
409
|
+
trustProxy,
|
|
410
|
+
corsOrigin: resolvedConfig.MCP_CORS_ORIGIN,
|
|
411
|
+
corsCredentials: resolvedConfig.MCP_CORS_CREDENTIALS,
|
|
412
|
+
helmetHsts: resolvedConfig.MCP_HELMET_HSTS,
|
|
413
|
+
helmetCsp: resolvedConfig.MCP_HELMET_CSP,
|
|
414
|
+
helmetFrameOptions: resolvedConfig.MCP_HELMET_FRAME_OPTIONS,
|
|
415
|
+
bodyLimit: resolvedConfig.MCP_BODY_SIZE_LIMIT,
|
|
416
|
+
});
|
|
417
|
+
return startHttpTransport(app, { transport });
|
|
418
|
+
}
|
|
419
|
+
return startStdioTransport(sessionFactory, sessionManager);
|
|
420
|
+
}
|
|
421
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
422
|
+
// Signal Handling
|
|
423
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
424
|
+
/**
|
|
425
|
+
* Register process signal handlers for graceful shutdown.
|
|
426
|
+
*
|
|
427
|
+
* Uses `process.once()` for each signal. Handler references are stored
|
|
428
|
+
* so they can be removed in `stop()` to prevent accumulation when the
|
|
429
|
+
* server is restarted within the same process.
|
|
430
|
+
*/
|
|
431
|
+
setupSignalHandlers() {
|
|
432
|
+
// Clean up any leftover handlers from a previous start() cycle
|
|
433
|
+
this.removeSignalHandlers();
|
|
434
|
+
const shutdownConfig = {
|
|
435
|
+
...DEFAULT_SHUTDOWN_CONFIG,
|
|
436
|
+
...this.options.shutdown,
|
|
437
|
+
};
|
|
438
|
+
const signals = shutdownConfig.signals ?? DEFAULT_SIGNALS;
|
|
439
|
+
for (const signal of signals) {
|
|
440
|
+
const handler = () => {
|
|
441
|
+
logger.info(RuntimeLogMessages.SHUTDOWN_SIGNAL, signal);
|
|
442
|
+
void this.gracefulStop(shutdownConfig)
|
|
443
|
+
.then(() => {
|
|
444
|
+
process.exit(0);
|
|
445
|
+
})
|
|
446
|
+
.catch((err) => {
|
|
447
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
448
|
+
logger.error(RuntimeLogMessages.SHUTDOWN_FAILED, reason);
|
|
449
|
+
process.exit(1);
|
|
450
|
+
});
|
|
451
|
+
};
|
|
452
|
+
this.signalHandlers.push({ signal, handler });
|
|
453
|
+
process.once(signal, handler);
|
|
454
|
+
}
|
|
455
|
+
// Register process error handlers for unhandled rejections and exceptions.
|
|
456
|
+
// These ensure a graceful shutdown instead of a hard crash.
|
|
457
|
+
this.setupProcessErrorHandlers(shutdownConfig);
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Register handlers for unhandled promise rejections and uncaught exceptions.
|
|
461
|
+
*
|
|
462
|
+
* Both trigger a graceful shutdown followed by `process.exit(1)`. A guard
|
|
463
|
+
* prevents concurrent shutdown attempts when multiple errors arrive or
|
|
464
|
+
* a signal arrives simultaneously.
|
|
465
|
+
*/
|
|
466
|
+
setupProcessErrorHandlers(shutdownConfig) {
|
|
467
|
+
const shutdownOnError = (logMessage, error) => {
|
|
468
|
+
if (this.shutdownInProgress)
|
|
469
|
+
return;
|
|
470
|
+
this.shutdownInProgress = true;
|
|
471
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
472
|
+
logger.error(logMessage, reason);
|
|
473
|
+
void this.gracefulStop(shutdownConfig).finally(() => {
|
|
474
|
+
process.exit(1);
|
|
475
|
+
});
|
|
476
|
+
};
|
|
477
|
+
const rejectionHandler = (reason) => {
|
|
478
|
+
shutdownOnError(RuntimeLogMessages.UNHANDLED_REJECTION, reason);
|
|
479
|
+
};
|
|
480
|
+
const exceptionHandler = (error) => {
|
|
481
|
+
shutdownOnError(RuntimeLogMessages.UNCAUGHT_EXCEPTION, error);
|
|
482
|
+
};
|
|
483
|
+
process.on("unhandledRejection", rejectionHandler);
|
|
484
|
+
process.on("uncaughtException", exceptionHandler);
|
|
485
|
+
this.processErrorHandlers.push({ event: "unhandledRejection", handler: rejectionHandler }, { event: "uncaughtException", handler: exceptionHandler });
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Remove previously registered signal handlers.
|
|
489
|
+
*
|
|
490
|
+
* Prevents handler accumulation when `start()` is called multiple times
|
|
491
|
+
* (e.g., after `stop()` → `start()` restart).
|
|
492
|
+
*/
|
|
493
|
+
removeSignalHandlers() {
|
|
494
|
+
for (const { signal, handler } of this.signalHandlers) {
|
|
495
|
+
process.removeListener(signal, handler);
|
|
496
|
+
}
|
|
497
|
+
this.signalHandlers = [];
|
|
498
|
+
for (const { event, handler } of this.processErrorHandlers) {
|
|
499
|
+
process.removeListener(event, handler);
|
|
500
|
+
}
|
|
501
|
+
this.processErrorHandlers = [];
|
|
502
|
+
this.shutdownInProgress = false;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Perform graceful shutdown with optional timeout enforcement.
|
|
506
|
+
*
|
|
507
|
+
* If `forceExitOnTimeout` is enabled, forces `process.exit(1)` when
|
|
508
|
+
* the shutdown exceeds the configured timeout. The timeout is unref'd
|
|
509
|
+
* to avoid keeping the event loop alive if shutdown completes in time.
|
|
510
|
+
*/
|
|
511
|
+
async gracefulStop(config) {
|
|
512
|
+
if (!config.forceExitOnTimeout) {
|
|
513
|
+
await this.stop();
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
// Race stop() against a timeout. If stop() completes in time, the timeout
|
|
517
|
+
// is cleared. If the timeout fires first, force-exit with a short drain
|
|
518
|
+
// period for pending I/O (logger flush, OTEL export).
|
|
519
|
+
let timedOut = false;
|
|
520
|
+
const timeout = setTimeout(() => {
|
|
521
|
+
timedOut = true;
|
|
522
|
+
logger.error(RuntimeLogMessages.SHUTDOWN_FORCED);
|
|
523
|
+
// Give pending log writes a brief window to flush before hard exit.
|
|
524
|
+
// setImmediate ensures current I/O callbacks can complete.
|
|
525
|
+
setImmediate(() => process.exit(1));
|
|
526
|
+
}, config.timeoutMs).unref();
|
|
527
|
+
let stopError;
|
|
528
|
+
try {
|
|
529
|
+
await this.stop();
|
|
530
|
+
}
|
|
531
|
+
catch (error) {
|
|
532
|
+
stopError = error;
|
|
533
|
+
}
|
|
534
|
+
finally {
|
|
535
|
+
if (!timedOut) {
|
|
536
|
+
clearTimeout(timeout);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// Check timeout BEFORE re-throwing stop errors — if the timeout already
|
|
540
|
+
// scheduled setImmediate(exit(1)), the promise resolution (microtask)
|
|
541
|
+
// can race ahead and trigger .then(exit(0)) first. Throwing here
|
|
542
|
+
// ensures the caller's .catch(exit(1)) wins.
|
|
543
|
+
if (timedOut) {
|
|
544
|
+
throw new Error("Shutdown completed after timeout — forcing exit(1)");
|
|
545
|
+
}
|
|
546
|
+
if (stopError instanceof Error) {
|
|
547
|
+
throw stopError;
|
|
548
|
+
}
|
|
549
|
+
else if (stopError !== undefined) {
|
|
550
|
+
throw new Error(typeof stopError === "string" ? stopError : "Shutdown failed");
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
554
|
+
// Internal Helpers
|
|
555
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
556
|
+
/**
|
|
557
|
+
* Transitions the server state and logs the change.
|
|
558
|
+
*/
|
|
559
|
+
transitionState(newState) {
|
|
560
|
+
const previous = this.serverState;
|
|
561
|
+
this.serverState = newState;
|
|
562
|
+
logger.debug(RuntimeLogMessages.STATE_TRANSITION, previous, newState);
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Invokes a lifecycle hook with error logging.
|
|
566
|
+
* Hook errors are logged as warnings but do not abort the lifecycle.
|
|
567
|
+
*/
|
|
568
|
+
async invokeLifecycleHook(name, fn) {
|
|
569
|
+
try {
|
|
570
|
+
await fn();
|
|
571
|
+
}
|
|
572
|
+
catch (error) {
|
|
573
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
574
|
+
logger.warn(RuntimeLogMessages.LIFECYCLE_HOOK_ERROR, name, msg);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Log the auth configuration at startup.
|
|
579
|
+
*
|
|
580
|
+
* Warns when auth is configured with stdio (unsupported)
|
|
581
|
+
* or when auth is used without trust proxy behind a reverse proxy.
|
|
582
|
+
*/
|
|
583
|
+
logAuthConfiguration() {
|
|
584
|
+
const auth = this.options.auth;
|
|
585
|
+
if (!auth)
|
|
586
|
+
return;
|
|
587
|
+
if (this.transportMode === "stdio") {
|
|
588
|
+
logger.warn(RuntimeLogMessages.AUTH_STDIO_WARNING);
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
if (isFullOAuthProvider(auth.provider)) {
|
|
592
|
+
logger.info(RuntimeLogMessages.AUTH_OAUTH_ENABLED, auth.issuerUrl?.toString() ?? "not set");
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
logger.info(RuntimeLogMessages.AUTH_BEARER_ENABLED);
|
|
596
|
+
}
|
|
597
|
+
// Warn about missing trust proxy when auth is enabled
|
|
598
|
+
const config = getFrameworkConfig();
|
|
599
|
+
if (!config.MCP_TRUST_PROXY) {
|
|
600
|
+
logger.warn(RuntimeLogMessages.AUTH_NO_TRUST_PROXY);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* Dispose the auth provider if it has a `dispose()` method.
|
|
605
|
+
*/
|
|
606
|
+
async disposeAuthProvider() {
|
|
607
|
+
const provider = this.options.auth?.provider;
|
|
608
|
+
if (provider && "dispose" in provider && typeof provider.dispose === "function") {
|
|
609
|
+
// Support both sync and async dispose() implementations
|
|
610
|
+
await provider.dispose();
|
|
611
|
+
logger.debug(RuntimeLogMessages.AUTH_PROVIDER_DISPOSED);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
//# sourceMappingURL=server-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-instance.js","sourceRoot":"","sources":["../../src/server/server-instance.ts"],"names":[],"mappings":"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"}
|