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,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic Option → Config Overrides
|
|
3
|
+
*
|
|
4
|
+
* Pure mapping function that bridges programmatic ServerOptions into
|
|
5
|
+
* FrameworkEnvConfig overrides. Extracted from McpServerInstance for
|
|
6
|
+
* testability and to reduce class complexity.
|
|
7
|
+
*
|
|
8
|
+
* @module server/option-overrides
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import { isHttpTransport } from "./server-options.js";
|
|
12
|
+
/**
|
|
13
|
+
* Maps programmatic server options to config override entries.
|
|
14
|
+
*
|
|
15
|
+
* This is a pure function — it reads `currentConfig` only to check
|
|
16
|
+
* whether OTEL_SERVICE_NAME is already set (avoiding accidental override).
|
|
17
|
+
*
|
|
18
|
+
* @param options - The server options from createServer() or McpServerBuilder
|
|
19
|
+
* @param currentConfig - The current resolved framework config
|
|
20
|
+
* @returns Partial config overrides to apply (empty object if none)
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export function mapServerOptionsToOverrides(options, currentConfig) {
|
|
24
|
+
const overrides = {};
|
|
25
|
+
// Always bridge version — createServer({ version }) is the canonical source
|
|
26
|
+
overrides.VERSION = options.version;
|
|
27
|
+
// Bridge server name as OTEL service name default.
|
|
28
|
+
// The MCP server name is the natural default — env var or config file
|
|
29
|
+
// can override it for deployment-specific naming (e.g. 'my-app-prod').
|
|
30
|
+
if (options.name && !currentConfig.OTEL_SERVICE_NAME) {
|
|
31
|
+
overrides.OTEL_SERVICE_NAME = options.name;
|
|
32
|
+
}
|
|
33
|
+
// Bridge transport HTTP options (discriminated union — narrowed by isHttpTransport)
|
|
34
|
+
const transport = options.transport;
|
|
35
|
+
if (isHttpTransport(transport)) {
|
|
36
|
+
if (transport.legacySseEnabled !== undefined) {
|
|
37
|
+
overrides.MCP_LEGACY_SSE_ENABLED = transport.legacySseEnabled;
|
|
38
|
+
}
|
|
39
|
+
if (transport.port !== undefined) {
|
|
40
|
+
overrides.MCP_PORT = transport.port;
|
|
41
|
+
}
|
|
42
|
+
if (transport.host !== undefined) {
|
|
43
|
+
overrides.MCP_BIND_HOST = transport.host;
|
|
44
|
+
}
|
|
45
|
+
if (transport.rateLimitMax !== undefined) {
|
|
46
|
+
overrides.MCP_RATE_LIMIT_MAX = transport.rateLimitMax;
|
|
47
|
+
}
|
|
48
|
+
if (transport.rateLimitWindowMs !== undefined) {
|
|
49
|
+
overrides.MCP_RATE_LIMIT_WINDOW_MS = transport.rateLimitWindowMs;
|
|
50
|
+
}
|
|
51
|
+
if (transport.trustProxy !== undefined) {
|
|
52
|
+
overrides.MCP_TRUST_PROXY = transport.trustProxy;
|
|
53
|
+
}
|
|
54
|
+
if (transport.stateless !== undefined) {
|
|
55
|
+
overrides.MCP_STATELESS = transport.stateless;
|
|
56
|
+
}
|
|
57
|
+
if (transport.enableJsonResponse !== undefined) {
|
|
58
|
+
overrides.MCP_JSON_RESPONSE = transport.enableJsonResponse;
|
|
59
|
+
}
|
|
60
|
+
if (transport.corsOrigin !== undefined) {
|
|
61
|
+
overrides.MCP_CORS_ORIGIN = transport.corsOrigin;
|
|
62
|
+
}
|
|
63
|
+
if (transport.corsCredentials !== undefined) {
|
|
64
|
+
overrides.MCP_CORS_CREDENTIALS = transport.corsCredentials;
|
|
65
|
+
}
|
|
66
|
+
if (transport.helmetHsts !== undefined) {
|
|
67
|
+
overrides.MCP_HELMET_HSTS = transport.helmetHsts;
|
|
68
|
+
}
|
|
69
|
+
if (transport.helmetCsp !== undefined) {
|
|
70
|
+
overrides.MCP_HELMET_CSP = transport.helmetCsp;
|
|
71
|
+
}
|
|
72
|
+
if (transport.helmetFrameOptions !== undefined) {
|
|
73
|
+
overrides.MCP_HELMET_FRAME_OPTIONS = transport.helmetFrameOptions;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Bridge programmatic session options → config cache (limits only)
|
|
77
|
+
const session = options.session;
|
|
78
|
+
if (session) {
|
|
79
|
+
if (session.maxSessions !== undefined) {
|
|
80
|
+
overrides.MCP_MAX_SESSIONS = session.maxSessions;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return overrides;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=option-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-overrides.js","sourceRoot":"","sources":["../../src/server/option-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health and Readiness check routes
|
|
3
|
+
*
|
|
4
|
+
* Provides endpoints for container orchestration (Kubernetes, Docker Swarm, Docker Compose):
|
|
5
|
+
*
|
|
6
|
+
* /health - Liveness probe (is the process alive?)
|
|
7
|
+
* - Always returns 200 if server is running
|
|
8
|
+
* - Use: Kubernetes livenessProbe, basic uptime monitoring
|
|
9
|
+
*
|
|
10
|
+
* /ready - Readiness probe (can the server handle requests?)
|
|
11
|
+
* - 200 OK: Server is ready for traffic
|
|
12
|
+
* - 503 Service Unavailable: API configured but not connected
|
|
13
|
+
* - 429 Too Many Requests: Session limit reached
|
|
14
|
+
* - Use: Kubernetes readinessProbe, Docker HEALTHCHECK, load balancer health checks
|
|
15
|
+
*
|
|
16
|
+
* For Docker containers, use /ready as the HEALTHCHECK endpoint to ensure
|
|
17
|
+
* the container only receives traffic when fully operational.
|
|
18
|
+
*
|
|
19
|
+
* @module server/routes/health
|
|
20
|
+
*/
|
|
21
|
+
import { Router } from "express";
|
|
22
|
+
import type { SessionManager } from "../session/index.js";
|
|
23
|
+
import type { ConnectionStateManager } from "../../connection/index.js";
|
|
24
|
+
import type { ServiceClient } from "../../connection/types.js";
|
|
25
|
+
export { ReadinessStatus, type ReadinessStatusValue } from "./readiness-status.js";
|
|
26
|
+
/**
|
|
27
|
+
* SSE transport information provider.
|
|
28
|
+
*
|
|
29
|
+
* Injected by the transport layer to decouple health checks
|
|
30
|
+
* from SSE implementation details.
|
|
31
|
+
*/
|
|
32
|
+
export interface SseInfoProvider {
|
|
33
|
+
/** Whether SSE transport is enabled */
|
|
34
|
+
readonly enabled: boolean;
|
|
35
|
+
/** Get the current count of active SSE sessions */
|
|
36
|
+
getSessionCount(sessionManager: SessionManager): number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for creating the health router.
|
|
40
|
+
*/
|
|
41
|
+
export interface HealthRouterOptions<TService extends ServiceClient = ServiceClient> {
|
|
42
|
+
/** Session manager for tracking active sessions */
|
|
43
|
+
sessionManager: SessionManager;
|
|
44
|
+
/**
|
|
45
|
+
* Optional connection manager for API health checks.
|
|
46
|
+
* If not provided, API connectivity checks are skipped.
|
|
47
|
+
*/
|
|
48
|
+
connectionManager?: ConnectionStateManager<TService> | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Function to check if API is configured.
|
|
51
|
+
* Reads from runtime environment to support Docker env_file.
|
|
52
|
+
* If not provided, defaults to checking for API_URL env var.
|
|
53
|
+
*/
|
|
54
|
+
isApiConfigured?: (() => boolean) | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Label for the API in health responses (e.g., 'my-api', 'docker', 'kubernetes')
|
|
57
|
+
* Defaults to 'api'
|
|
58
|
+
*/
|
|
59
|
+
apiLabel?: string | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Optional SSE transport information.
|
|
62
|
+
* If not provided, SSE-related information is omitted from health responses.
|
|
63
|
+
*/
|
|
64
|
+
sseInfo?: SseInfoProvider | undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates health check router with configurable API connection monitoring.
|
|
68
|
+
*
|
|
69
|
+
* @param options - Configuration options for the health router
|
|
70
|
+
* @returns Express router with /health and /ready endpoints
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* // Basic usage (no API monitoring)
|
|
75
|
+
* const router = createHealthRouter({ sessionManager });
|
|
76
|
+
*
|
|
77
|
+
* // With API connection monitoring
|
|
78
|
+
* const router = createHealthRouter({
|
|
79
|
+
* sessionManager,
|
|
80
|
+
* connectionManager: myConnectionManager,
|
|
81
|
+
* isApiConfigured: () => !!process.env.API_URL,
|
|
82
|
+
* apiLabel: 'api',
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function createHealthRouter<TService extends ServiceClient = ServiceClient>(options: HealthRouterOptions<TService>): Router;
|
|
87
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA2B/D,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,mDAAmD;IACnD,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa;IACjF,mDAAmD;IACnD,cAAc,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAEjE;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;IAE9C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACvC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa,EAC/E,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACrC,MAAM,CAuIR"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health and Readiness check routes
|
|
3
|
+
*
|
|
4
|
+
* Provides endpoints for container orchestration (Kubernetes, Docker Swarm, Docker Compose):
|
|
5
|
+
*
|
|
6
|
+
* /health - Liveness probe (is the process alive?)
|
|
7
|
+
* - Always returns 200 if server is running
|
|
8
|
+
* - Use: Kubernetes livenessProbe, basic uptime monitoring
|
|
9
|
+
*
|
|
10
|
+
* /ready - Readiness probe (can the server handle requests?)
|
|
11
|
+
* - 200 OK: Server is ready for traffic
|
|
12
|
+
* - 503 Service Unavailable: API configured but not connected
|
|
13
|
+
* - 429 Too Many Requests: Session limit reached
|
|
14
|
+
* - Use: Kubernetes readinessProbe, Docker HEALTHCHECK, load balancer health checks
|
|
15
|
+
*
|
|
16
|
+
* For Docker containers, use /ready as the HEALTHCHECK endpoint to ensure
|
|
17
|
+
* the container only receives traffic when fully operational.
|
|
18
|
+
*
|
|
19
|
+
* @module server/routes/health
|
|
20
|
+
*/
|
|
21
|
+
import { Router } from "express";
|
|
22
|
+
import { getFrameworkConfig } from "../../config/index.js";
|
|
23
|
+
import { logger as baseLogger } from "../../logger/index.js";
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Constants
|
|
26
|
+
// ============================================================================
|
|
27
|
+
const ROUTES = {
|
|
28
|
+
HEALTH: "/health",
|
|
29
|
+
READY: "/ready",
|
|
30
|
+
};
|
|
31
|
+
const LOG_COMPONENT = "health";
|
|
32
|
+
const LogMessages = {
|
|
33
|
+
NOT_READY: "Server not ready: %s",
|
|
34
|
+
READINESS_CHECK: "Readiness check: status=%d, reason=%s",
|
|
35
|
+
};
|
|
36
|
+
const logger = baseLogger.child({ component: LOG_COMPONENT });
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Types
|
|
39
|
+
// ============================================================================
|
|
40
|
+
import { ReadinessStatus } from "./readiness-status.js";
|
|
41
|
+
export { ReadinessStatus } from "./readiness-status.js";
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Health Router Factory
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Creates health check router with configurable API connection monitoring.
|
|
47
|
+
*
|
|
48
|
+
* @param options - Configuration options for the health router
|
|
49
|
+
* @returns Express router with /health and /ready endpoints
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Basic usage (no API monitoring)
|
|
54
|
+
* const router = createHealthRouter({ sessionManager });
|
|
55
|
+
*
|
|
56
|
+
* // With API connection monitoring
|
|
57
|
+
* const router = createHealthRouter({
|
|
58
|
+
* sessionManager,
|
|
59
|
+
* connectionManager: myConnectionManager,
|
|
60
|
+
* isApiConfigured: () => !!process.env.API_URL,
|
|
61
|
+
* apiLabel: 'api',
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export function createHealthRouter(options) {
|
|
66
|
+
const { sessionManager, connectionManager, isApiConfigured = () => !!process.env.API_URL?.trim(), apiLabel = "api", sseInfo, } = options;
|
|
67
|
+
const router = Router();
|
|
68
|
+
/**
|
|
69
|
+
* Liveness probe endpoint
|
|
70
|
+
* Returns 200 if the server process is running.
|
|
71
|
+
*/
|
|
72
|
+
router.get(ROUTES.HEALTH, (_req, res) => {
|
|
73
|
+
const config = getFrameworkConfig();
|
|
74
|
+
const { byTransportType } = sessionManager.stats;
|
|
75
|
+
const streamableHttpCount = byTransportType.http + byTransportType.https;
|
|
76
|
+
const response = {
|
|
77
|
+
status: "healthy",
|
|
78
|
+
version: config.VERSION,
|
|
79
|
+
uptime: process.uptime(),
|
|
80
|
+
sessions: {
|
|
81
|
+
active: sessionManager.size,
|
|
82
|
+
streamableHttp: streamableHttpCount,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
// Include SSE session count if enabled
|
|
86
|
+
if (sseInfo?.enabled) {
|
|
87
|
+
// @type-narrowing — response.sessions is narrower typed; SSE field added conditionally
|
|
88
|
+
response.sessions.sse = byTransportType.sse;
|
|
89
|
+
}
|
|
90
|
+
res.status(200).json(response);
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Readiness probe endpoint
|
|
94
|
+
* Returns appropriate status code based on server readiness.
|
|
95
|
+
*/
|
|
96
|
+
router.get(ROUTES.READY, (_req, res) => {
|
|
97
|
+
const config = getFrameworkConfig();
|
|
98
|
+
// Get API connection state (if connection manager is provided)
|
|
99
|
+
const connectionState = connectionManager?.getState() ?? "unknown";
|
|
100
|
+
const isApiConnected = connectionState === "connected";
|
|
101
|
+
// Read session limits from dynamic config
|
|
102
|
+
const maxSessions = config.MCP_MAX_SESSIONS;
|
|
103
|
+
const maxStreamableHttpSessions = config.MCP_MAX_STREAMABLE_HTTP_SESSIONS;
|
|
104
|
+
const maxSseSessions = config.MCP_MAX_SSE_SESSIONS;
|
|
105
|
+
// Check session limits using accurate per-transport-type counters
|
|
106
|
+
const { byTransportType } = sessionManager.stats;
|
|
107
|
+
const totalSessionCount = sessionManager.size;
|
|
108
|
+
const sseEnabled = sseInfo?.enabled ?? false;
|
|
109
|
+
const sseSessionCount = byTransportType.sse;
|
|
110
|
+
const streamableHttpSessionCount = byTransportType.http + byTransportType.https;
|
|
111
|
+
const totalAtLimit = totalSessionCount >= maxSessions;
|
|
112
|
+
const streamableHttpAtLimit = streamableHttpSessionCount >= maxStreamableHttpSessions;
|
|
113
|
+
const sseAtLimit = sseEnabled && sseSessionCount >= maxSseSessions;
|
|
114
|
+
const sessionsAtLimit = totalAtLimit || streamableHttpAtLimit || sseAtLimit;
|
|
115
|
+
// Determine readiness
|
|
116
|
+
const hasApiConfig = isApiConfigured();
|
|
117
|
+
const apiReady = !hasApiConfig || isApiConnected;
|
|
118
|
+
// Determine status code
|
|
119
|
+
let status;
|
|
120
|
+
let reason;
|
|
121
|
+
if (sessionsAtLimit) {
|
|
122
|
+
status = ReadinessStatus.TOO_MANY_REQUESTS;
|
|
123
|
+
if (totalAtLimit) {
|
|
124
|
+
reason = `Total session limit reached (${totalSessionCount}/${maxSessions})`;
|
|
125
|
+
}
|
|
126
|
+
else if (streamableHttpAtLimit) {
|
|
127
|
+
reason = `Streamable HTTP session limit reached (${streamableHttpSessionCount}/${maxStreamableHttpSessions})`;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
reason = `SSE session limit reached (${sseSessionCount}/${maxSseSessions})`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (!apiReady) {
|
|
134
|
+
status = ReadinessStatus.SERVICE_UNAVAILABLE;
|
|
135
|
+
reason = `${apiLabel} not connected (state: ${connectionState})`;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
status = ReadinessStatus.READY;
|
|
139
|
+
reason = "Server is ready";
|
|
140
|
+
}
|
|
141
|
+
const isReady = status === ReadinessStatus.READY;
|
|
142
|
+
// Log readiness state — warn on not-ready, debug on ready
|
|
143
|
+
if (!isReady) {
|
|
144
|
+
logger.warn(LogMessages.NOT_READY, reason);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
logger.debug(LogMessages.READINESS_CHECK, status, reason);
|
|
148
|
+
}
|
|
149
|
+
const response = {
|
|
150
|
+
ready: isReady,
|
|
151
|
+
status: reason,
|
|
152
|
+
version: config.VERSION,
|
|
153
|
+
uptime: process.uptime(),
|
|
154
|
+
[apiLabel]: {
|
|
155
|
+
configured: hasApiConfig,
|
|
156
|
+
state: connectionState,
|
|
157
|
+
connected: isApiConnected,
|
|
158
|
+
},
|
|
159
|
+
sessions: {
|
|
160
|
+
total: {
|
|
161
|
+
current: totalSessionCount,
|
|
162
|
+
max: maxSessions,
|
|
163
|
+
atLimit: totalAtLimit,
|
|
164
|
+
},
|
|
165
|
+
streamableHttp: {
|
|
166
|
+
current: streamableHttpSessionCount,
|
|
167
|
+
max: maxStreamableHttpSessions,
|
|
168
|
+
atLimit: streamableHttpAtLimit,
|
|
169
|
+
},
|
|
170
|
+
...(sseEnabled && {
|
|
171
|
+
sse: {
|
|
172
|
+
current: sseSessionCount,
|
|
173
|
+
max: maxSseSessions,
|
|
174
|
+
atLimit: sseAtLimit,
|
|
175
|
+
},
|
|
176
|
+
}),
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
res.status(status).json(response);
|
|
180
|
+
});
|
|
181
|
+
return router;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/server/routes/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Routes
|
|
3
|
+
*
|
|
4
|
+
* Express route handlers for server-level endpoints (health, readiness, metrics)
|
|
5
|
+
* and MCP transport routers (Streamable HTTP, legacy SSE).
|
|
6
|
+
*
|
|
7
|
+
* @module server/routes
|
|
8
|
+
*/
|
|
9
|
+
export { createHealthRouter, ReadinessStatus } from "./health.js";
|
|
10
|
+
export type { HealthRouterOptions, SseInfoProvider } from "./health.js";
|
|
11
|
+
export { createMetricsRouter } from "./metrics.js";
|
|
12
|
+
export { createStreamableHttpRouter } from "./streamable-http-router.js";
|
|
13
|
+
export { createSseRouter, isSseEnabled, getSseSessionCount } from "./sse-router.js";
|
|
14
|
+
export { createOAuthRouter } from "./oauth-router.js";
|
|
15
|
+
export type { OAuthRouterOptions } from "./oauth-router.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Routes
|
|
3
|
+
*
|
|
4
|
+
* Express route handlers for server-level endpoints (health, readiness, metrics)
|
|
5
|
+
* and MCP transport routers (Streamable HTTP, legacy SSE).
|
|
6
|
+
*
|
|
7
|
+
* @module server/routes
|
|
8
|
+
*/
|
|
9
|
+
// ===== Health & Readiness =====
|
|
10
|
+
export { createHealthRouter, ReadinessStatus } from "./health.js";
|
|
11
|
+
// ===== Prometheus Metrics =====
|
|
12
|
+
export { createMetricsRouter } from "./metrics.js";
|
|
13
|
+
// ===== MCP Transport Routers =====
|
|
14
|
+
export { createStreamableHttpRouter } from "./streamable-http-router.js";
|
|
15
|
+
export { createSseRouter, isSseEnabled, getSseSessionCount } from "./sse-router.js";
|
|
16
|
+
// ===== OAuth Router =====
|
|
17
|
+
export { createOAuthRouter } from "./oauth-router.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,iCAAiC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE,iCAAiC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,oCAAoC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,2BAA2B;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prometheus Metrics Route
|
|
3
|
+
*
|
|
4
|
+
* Exposes OpenTelemetry metrics in Prometheus text format at `/metrics`.
|
|
5
|
+
*
|
|
6
|
+
* The route delegates to the embedded PrometheusExporter registered as a
|
|
7
|
+
* MetricReader in the SDK. When telemetry is disabled or 'prometheus' is
|
|
8
|
+
* not in OTEL_METRICS_EXPORTER, the endpoint returns 503.
|
|
9
|
+
*
|
|
10
|
+
* All metrics are collected centrally by OpenTelemetry — no custom metric
|
|
11
|
+
* implementations. The Prometheus exporter serializes the same data that
|
|
12
|
+
* is also exported to OTLP backends.
|
|
13
|
+
*
|
|
14
|
+
* Exposed metrics include:
|
|
15
|
+
* - `mcp_server_*` — MCP server metrics (requests, sessions, errors, uptime, memory)
|
|
16
|
+
* - `http_server_*` — HTTP server metrics from auto-instrumentation
|
|
17
|
+
* - `target_info` — Service resource attributes
|
|
18
|
+
*
|
|
19
|
+
* @module server/routes/metrics
|
|
20
|
+
*/
|
|
21
|
+
import { Router } from "express";
|
|
22
|
+
/**
|
|
23
|
+
* Creates an Express router that serves Prometheus-formatted metrics.
|
|
24
|
+
*
|
|
25
|
+
* Delegates to the `PrometheusExporter` request handler registered as a
|
|
26
|
+
* MetricReader in the SDK ({@link initializeTelemetry}). Returns 503 when
|
|
27
|
+
* telemetry is disabled or 'prometheus' is not in OTEL_METRICS_EXPORTER.
|
|
28
|
+
*
|
|
29
|
+
* @returns Express Router with GET /metrics handler
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { createMetricsRouter } from './routes/metrics.js';
|
|
34
|
+
*
|
|
35
|
+
* const app = express();
|
|
36
|
+
* app.use(createMetricsRouter());
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function createMetricsRouter(): Router;
|
|
40
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/server/routes/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0BjC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA4B5C"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prometheus Metrics Route
|
|
3
|
+
*
|
|
4
|
+
* Exposes OpenTelemetry metrics in Prometheus text format at `/metrics`.
|
|
5
|
+
*
|
|
6
|
+
* The route delegates to the embedded PrometheusExporter registered as a
|
|
7
|
+
* MetricReader in the SDK. When telemetry is disabled or 'prometheus' is
|
|
8
|
+
* not in OTEL_METRICS_EXPORTER, the endpoint returns 503.
|
|
9
|
+
*
|
|
10
|
+
* All metrics are collected centrally by OpenTelemetry — no custom metric
|
|
11
|
+
* implementations. The Prometheus exporter serializes the same data that
|
|
12
|
+
* is also exported to OTLP backends.
|
|
13
|
+
*
|
|
14
|
+
* Exposed metrics include:
|
|
15
|
+
* - `mcp_server_*` — MCP server metrics (requests, sessions, errors, uptime, memory)
|
|
16
|
+
* - `http_server_*` — HTTP server metrics from auto-instrumentation
|
|
17
|
+
* - `target_info` — Service resource attributes
|
|
18
|
+
*
|
|
19
|
+
* @module server/routes/metrics
|
|
20
|
+
*/
|
|
21
|
+
import { Router } from "express";
|
|
22
|
+
import { getPrometheusExporter } from "../../telemetry/index.js";
|
|
23
|
+
import { logger as baseLogger } from "../../logger/index.js";
|
|
24
|
+
const COMPONENT = "MetricsRoute";
|
|
25
|
+
const logger = baseLogger.child({ component: COMPONENT });
|
|
26
|
+
/** @internal Log messages for the metrics route */
|
|
27
|
+
const LogMessages = {
|
|
28
|
+
TELEMETRY_DISABLED: "Metrics endpoint requested but Prometheus exporter is not available",
|
|
29
|
+
};
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Content Types
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Prometheus text exposition format content type.
|
|
35
|
+
* @see https://prometheus.io/docs/instrumenting/exposition_formats/
|
|
36
|
+
*/
|
|
37
|
+
const PROMETHEUS_CONTENT_TYPE = "text/plain; version=0.0.4; charset=utf-8";
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Metrics Router Factory
|
|
40
|
+
// ============================================================================
|
|
41
|
+
/**
|
|
42
|
+
* Creates an Express router that serves Prometheus-formatted metrics.
|
|
43
|
+
*
|
|
44
|
+
* Delegates to the `PrometheusExporter` request handler registered as a
|
|
45
|
+
* MetricReader in the SDK ({@link initializeTelemetry}). Returns 503 when
|
|
46
|
+
* telemetry is disabled or 'prometheus' is not in OTEL_METRICS_EXPORTER.
|
|
47
|
+
*
|
|
48
|
+
* @returns Express Router with GET /metrics handler
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { createMetricsRouter } from './routes/metrics.js';
|
|
53
|
+
*
|
|
54
|
+
* const app = express();
|
|
55
|
+
* app.use(createMetricsRouter());
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function createMetricsRouter() {
|
|
59
|
+
const router = Router();
|
|
60
|
+
router.get("/metrics", (req, res) => {
|
|
61
|
+
const exporter = getPrometheusExporter();
|
|
62
|
+
if (!exporter) {
|
|
63
|
+
logger.debug(LogMessages.TELEMETRY_DISABLED);
|
|
64
|
+
res.status(503).json({
|
|
65
|
+
error: "Prometheus metrics not available",
|
|
66
|
+
hint: 'Set OTEL_ENABLED=true and include "prometheus" in OTEL_METRICS_EXPORTER',
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// @express-api — PrometheusExporter.getMetricsRequestHandler expects
|
|
71
|
+
// Node.js IncomingMessage/ServerResponse, which Express req/res extend.
|
|
72
|
+
// @type-narrowing — getPrometheusExporter() returns `unknown` because the
|
|
73
|
+
// PrometheusExporter class is lazy-loaded (DD-020). The null check above
|
|
74
|
+
// guarantees the exporter exists, and its API is known.
|
|
75
|
+
res.setHeader("Content-Type", PROMETHEUS_CONTENT_TYPE);
|
|
76
|
+
const handler = exporter;
|
|
77
|
+
handler.getMetricsRequestHandler(req, res);
|
|
78
|
+
});
|
|
79
|
+
return router;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/server/routes/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,SAAS,GAAG,cAAc,CAAC;AACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAE1D,mDAAmD;AACnD,MAAM,WAAW,GAAG;IAClB,kBAAkB,EAAE,qEAAqE;CACjF,CAAC;AAEX,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;AAE3E,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,yEAAyE;aAChF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,wDAAwD;QACxD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,QAEf,CAAC;QACF,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Router Middleware
|
|
3
|
+
*
|
|
4
|
+
* Wraps the SDK's `mcpAuthRouter()` to mount OAuth 2.1 endpoints
|
|
5
|
+
* when a full OAuth provider is configured.
|
|
6
|
+
*
|
|
7
|
+
* Routes mounted:
|
|
8
|
+
* - `GET /authorize` — Authorization endpoint
|
|
9
|
+
* - `POST /token` — Token endpoint
|
|
10
|
+
* - `POST /register` — Dynamic client registration
|
|
11
|
+
* - `POST /revoke` — Token revocation
|
|
12
|
+
* - `GET /.well-known/oauth-authorization-server` — Authorization Server Metadata (RFC 8414)
|
|
13
|
+
* - `GET /.well-known/oauth-protected-resource` — Protected Resource Metadata (RFC 9728)
|
|
14
|
+
*
|
|
15
|
+
* Only created when the provider is a full `OAuthServerProvider`
|
|
16
|
+
* (detected via {@link isFullOAuthProvider}).
|
|
17
|
+
*
|
|
18
|
+
* @module server/routes/oauth-router
|
|
19
|
+
*/
|
|
20
|
+
import type { RequestHandler } from "express";
|
|
21
|
+
import type { OAuthServerProvider } from "@modelcontextprotocol/sdk/server/auth/provider.js";
|
|
22
|
+
/**
|
|
23
|
+
* Options for creating the OAuth router.
|
|
24
|
+
*/
|
|
25
|
+
export interface OAuthRouterOptions {
|
|
26
|
+
/** Full OAuth server provider (must have `clientsStore`) */
|
|
27
|
+
readonly provider: OAuthServerProvider;
|
|
28
|
+
/**
|
|
29
|
+
* OAuth issuer URL (Authorization Server identifier).
|
|
30
|
+
* Required by the MCP SDK for Authorization Server Metadata (RFC 8414).
|
|
31
|
+
*/
|
|
32
|
+
readonly issuerUrl: URL;
|
|
33
|
+
/**
|
|
34
|
+
* Scopes supported by this authorization server.
|
|
35
|
+
* Advertised in the Authorization Server Metadata document.
|
|
36
|
+
*/
|
|
37
|
+
readonly scopesSupported?: readonly string[] | undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Creates an Express router with OAuth 2.1 endpoints.
|
|
41
|
+
*
|
|
42
|
+
* Delegates to the SDK's `mcpAuthRouter()` for the actual endpoint
|
|
43
|
+
* implementation. The router handles authorization, token exchange,
|
|
44
|
+
* client registration, and discovery metadata.
|
|
45
|
+
*
|
|
46
|
+
* @param options - OAuth router configuration
|
|
47
|
+
* @returns Express request handler (router) with OAuth endpoints
|
|
48
|
+
*/
|
|
49
|
+
export declare function createOAuthRouter(options: OAuthRouterOptions): RequestHandler;
|
|
50
|
+
//# sourceMappingURL=oauth-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-router.d.ts","sourceRoot":"","sources":["../../../src/server/routes/oauth-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAqB7F;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC1D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,CAY7E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Router Middleware
|
|
3
|
+
*
|
|
4
|
+
* Wraps the SDK's `mcpAuthRouter()` to mount OAuth 2.1 endpoints
|
|
5
|
+
* when a full OAuth provider is configured.
|
|
6
|
+
*
|
|
7
|
+
* Routes mounted:
|
|
8
|
+
* - `GET /authorize` — Authorization endpoint
|
|
9
|
+
* - `POST /token` — Token endpoint
|
|
10
|
+
* - `POST /register` — Dynamic client registration
|
|
11
|
+
* - `POST /revoke` — Token revocation
|
|
12
|
+
* - `GET /.well-known/oauth-authorization-server` — Authorization Server Metadata (RFC 8414)
|
|
13
|
+
* - `GET /.well-known/oauth-protected-resource` — Protected Resource Metadata (RFC 9728)
|
|
14
|
+
*
|
|
15
|
+
* Only created when the provider is a full `OAuthServerProvider`
|
|
16
|
+
* (detected via {@link isFullOAuthProvider}).
|
|
17
|
+
*
|
|
18
|
+
* @module server/routes/oauth-router
|
|
19
|
+
*/
|
|
20
|
+
import { mcpAuthRouter } from "@modelcontextprotocol/sdk/server/auth/router.js";
|
|
21
|
+
import { logger as baseLogger } from "../../logger/index.js";
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Logger
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const LOG_COMPONENT = "oauth-router";
|
|
26
|
+
const LogMessages = {
|
|
27
|
+
MOUNTED: "OAuth router mounted (issuer: %s)",
|
|
28
|
+
};
|
|
29
|
+
const logger = baseLogger.child({ component: LOG_COMPONENT });
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Factory
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Creates an Express router with OAuth 2.1 endpoints.
|
|
35
|
+
*
|
|
36
|
+
* Delegates to the SDK's `mcpAuthRouter()` for the actual endpoint
|
|
37
|
+
* implementation. The router handles authorization, token exchange,
|
|
38
|
+
* client registration, and discovery metadata.
|
|
39
|
+
*
|
|
40
|
+
* @param options - OAuth router configuration
|
|
41
|
+
* @returns Express request handler (router) with OAuth endpoints
|
|
42
|
+
*/
|
|
43
|
+
export function createOAuthRouter(options) {
|
|
44
|
+
const { provider, issuerUrl, scopesSupported } = options;
|
|
45
|
+
const routerOptions = {
|
|
46
|
+
provider,
|
|
47
|
+
issuerUrl,
|
|
48
|
+
...(scopesSupported && { scopesSupported: [...scopesSupported] }),
|
|
49
|
+
};
|
|
50
|
+
logger.info(LogMessages.MOUNTED, issuerUrl.toString());
|
|
51
|
+
return mcpAuthRouter(routerOptions);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=oauth-router.js.map
|