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,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streamable HTTP Transport
|
|
3
|
+
*
|
|
4
|
+
* Facade that delegates HTTP requests to the appropriate strategy handler
|
|
5
|
+
* based on the configured mode (stateful or stateless).
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* Express Route → StreamableHttpTransport → Strategy Handler → SDK Transport → McpServer
|
|
9
|
+
*
|
|
10
|
+
* The SDK transport handles all MCP protocol concerns:
|
|
11
|
+
* - JSON-RPC 2.0 parsing and validation
|
|
12
|
+
* - Content-Type and Accept header validation
|
|
13
|
+
* - Session ID management (header setting/checking)
|
|
14
|
+
* - SSE stream setup for server-to-client notifications
|
|
15
|
+
* - Session termination
|
|
16
|
+
*
|
|
17
|
+
* This transport manages:
|
|
18
|
+
* - Strategy selection (stateful vs stateless)
|
|
19
|
+
* - HTTP method routing (POST, GET, DELETE)
|
|
20
|
+
* - Error responses for unsupported methods
|
|
21
|
+
*
|
|
22
|
+
* @see https://modelcontextprotocol.io/specification/2025-03-26/basic/transports
|
|
23
|
+
* @module server/transport/streamable-http/transport
|
|
24
|
+
*/
|
|
25
|
+
import { HttpStatus, TransportErrorMessage, JsonRpcErrorCode, createJsonRpcError } from "../../../errors/index.js";
|
|
26
|
+
import { logger as baseLogger } from "../../../logger/index.js";
|
|
27
|
+
import { TRANSPORT_LOG_COMPONENTS, SESSION_ID_DISPLAY_LENGTH } from "../constants.js";
|
|
28
|
+
import { StatefulHandler } from "./stateful-handler.js";
|
|
29
|
+
import { StatelessHandler } from "./stateless-handler.js";
|
|
30
|
+
const logger = baseLogger.child({
|
|
31
|
+
component: TRANSPORT_LOG_COMPONENTS.STREAMABLE_HTTP,
|
|
32
|
+
});
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Shared Utilities
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Sends a JSON-RPC error response if headers haven't been sent.
|
|
38
|
+
*/
|
|
39
|
+
export function sendError(res, status, code, message) {
|
|
40
|
+
if (!res.headersSent) {
|
|
41
|
+
res.status(status).json(createJsonRpcError(code, message));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Shortens a session ID for log display.
|
|
46
|
+
*/
|
|
47
|
+
export function shortId(sessionId) {
|
|
48
|
+
return sessionId.substring(0, SESSION_ID_DISPLAY_LENGTH);
|
|
49
|
+
}
|
|
50
|
+
/** @internal Log messages for transport router */
|
|
51
|
+
const LogMessages = {
|
|
52
|
+
METHOD_NOT_ALLOWED: "%s /mcp rejected: method not allowed",
|
|
53
|
+
UNHANDLED_ERROR: "Unhandled error in request handler: %s",
|
|
54
|
+
};
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Transport Facade
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/**
|
|
59
|
+
* Routes HTTP requests to the appropriate strategy handler.
|
|
60
|
+
*
|
|
61
|
+
* In stateful mode (default): delegates to {@link StatefulHandler}
|
|
62
|
+
* In stateless mode: delegates to {@link StatelessHandler}
|
|
63
|
+
*
|
|
64
|
+
* All MCP protocol handling is delegated through the handler chain
|
|
65
|
+
* to the SDK's StreamableHTTPServerTransport.
|
|
66
|
+
*/
|
|
67
|
+
export class StreamableHttpTransport {
|
|
68
|
+
handler;
|
|
69
|
+
sessionManager;
|
|
70
|
+
constructor(sessionFactory, sessionManager, options = {}) {
|
|
71
|
+
this.sessionManager = sessionManager;
|
|
72
|
+
const enableJsonResponse = options.enableJsonResponse ?? true;
|
|
73
|
+
this.handler = options.stateless
|
|
74
|
+
? new StatelessHandler(sessionFactory, enableJsonResponse)
|
|
75
|
+
: new StatefulHandler(sessionFactory, sessionManager, enableJsonResponse, options.eventStore);
|
|
76
|
+
}
|
|
77
|
+
// ==========================================================================
|
|
78
|
+
// Public API
|
|
79
|
+
// ==========================================================================
|
|
80
|
+
/**
|
|
81
|
+
* Handle an incoming HTTP request by delegating to the appropriate
|
|
82
|
+
* strategy handler.
|
|
83
|
+
*
|
|
84
|
+
* This is the single entry point called by Express route handlers.
|
|
85
|
+
* Security middleware (DNS rebinding, rate limiting, protocol version)
|
|
86
|
+
* runs BEFORE this method is called.
|
|
87
|
+
*/
|
|
88
|
+
async handleRequest(req, res) {
|
|
89
|
+
try {
|
|
90
|
+
switch (req.method) {
|
|
91
|
+
case "POST":
|
|
92
|
+
await this.handler.handlePost(req, res);
|
|
93
|
+
break;
|
|
94
|
+
case "GET":
|
|
95
|
+
await this.handler.handleGet(req, res);
|
|
96
|
+
break;
|
|
97
|
+
case "DELETE":
|
|
98
|
+
await this.handler.handleDelete(req, res);
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
logger.warn(LogMessages.METHOD_NOT_ALLOWED, req.method);
|
|
102
|
+
sendError(res, HttpStatus.METHOD_NOT_ALLOWED, JsonRpcErrorCode.METHOD_NOT_FOUND, `Method ${req.method} not allowed`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logger.error(LogMessages.UNHANDLED_ERROR, error);
|
|
107
|
+
sendError(res, HttpStatus.INTERNAL_SERVER_ERROR, JsonRpcErrorCode.INTERNAL_ERROR, TransportErrorMessage.INTERNAL_ERROR);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Number of active stateful sessions.
|
|
112
|
+
* Returns 0 in stateless mode (no session tracking).
|
|
113
|
+
*/
|
|
114
|
+
get activeSessionCount() {
|
|
115
|
+
return this.sessionManager.size;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/server/transport/streamable-http/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;IAC9B,SAAS,EAAE,wBAAwB,CAAC,eAAe;CACpD,CAAC,CAAC;AAmBH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAa,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe;IACpF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAED,kDAAkD;AAClD,MAAM,WAAW,GAAG;IAClB,kBAAkB,EAAE,sCAAsC;IAC1D,eAAe,EAAE,wCAAwC;CACjD,CAAC;AA0CX,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAuB;IACjB,OAAO,CAA0B;IACjC,cAAc,CAAiB;IAEhD,YACE,cAA8B,EAC9B,cAA8B,EAC9B,UAA0C,EAAE;QAE5C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC;QAE9D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS;YAC9B,CAAC,CAAC,IAAI,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;YAC1D,CAAC,CAAC,IAAI,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClG,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAC,GAAY,EAAE,GAAa;QAC7C,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACxC,MAAM;gBACR,KAAK,KAAK;oBACR,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM;gBACR;oBACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBACxD,SAAS,CACP,GAAG,EACH,UAAU,CAAC,kBAAkB,EAC7B,gBAAgB,CAAC,gBAAgB,EACjC,UAAU,GAAG,CAAC,MAAM,cAAc,CACnC,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACjD,SAAS,CACP,GAAG,EACH,UAAU,CAAC,qBAAqB,EAChC,gBAAgB,CAAC,cAAc,EAC/B,qBAAqB,CAAC,cAAc,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Context Types
|
|
3
|
+
*
|
|
4
|
+
* Transport-layer concerns for MCP sessions including connection details,
|
|
5
|
+
* transport type discrimination, and heartbeat tracking.
|
|
6
|
+
*
|
|
7
|
+
* @module server/transport/transport-context
|
|
8
|
+
*/
|
|
9
|
+
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
10
|
+
/**
|
|
11
|
+
* Supported transport types in the framework.
|
|
12
|
+
*/
|
|
13
|
+
export type TransportType = "http" | "https" | "sse" | "stdio";
|
|
14
|
+
/**
|
|
15
|
+
* Transport that optionally supports heartbeat (keep-alive).
|
|
16
|
+
*
|
|
17
|
+
* Some transports (like StreamableHTTPServerTransport) support sendHeartbeat
|
|
18
|
+
* but it's not in the public SDK types.
|
|
19
|
+
*/
|
|
20
|
+
export interface HeartbeatCapableTransport extends Transport {
|
|
21
|
+
/**
|
|
22
|
+
* Sends a heartbeat to check if the connection is still alive.
|
|
23
|
+
* @returns true if heartbeat was sent successfully
|
|
24
|
+
*/
|
|
25
|
+
sendHeartbeat: () => boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Heartbeat tracking state.
|
|
29
|
+
*
|
|
30
|
+
* Immutable — create new objects via spread to update.
|
|
31
|
+
*/
|
|
32
|
+
export interface HeartbeatState {
|
|
33
|
+
/** Number of consecutive missed heartbeats */
|
|
34
|
+
readonly missedCount: number;
|
|
35
|
+
/** Last successful heartbeat timestamp */
|
|
36
|
+
readonly lastSuccessAt?: Date;
|
|
37
|
+
/** Whether this transport supports heartbeats */
|
|
38
|
+
readonly supportsHeartbeat: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Transport-specific context containing connection details.
|
|
42
|
+
*
|
|
43
|
+
* Encapsulates all transport-layer concerns:
|
|
44
|
+
* - The actual MCP transport instance
|
|
45
|
+
* - Transport type for runtime discrimination
|
|
46
|
+
* - Heartbeat tracking for connection health
|
|
47
|
+
*/
|
|
48
|
+
export interface TransportContext {
|
|
49
|
+
/** Discriminator for transport type */
|
|
50
|
+
readonly type: TransportType;
|
|
51
|
+
/** MCP SDK transport instance */
|
|
52
|
+
readonly instance: Transport;
|
|
53
|
+
/** Heartbeat tracking (only for HTTP-based transports) */
|
|
54
|
+
heartbeat: HeartbeatState;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Type guard for heartbeat-capable transports.
|
|
58
|
+
*
|
|
59
|
+
* Checks if the transport has a `sendHeartbeat` method.
|
|
60
|
+
* Used to safely narrow `Transport` without unchecked casts.
|
|
61
|
+
*/
|
|
62
|
+
export declare function isHeartbeatCapable(transport: Transport): transport is HeartbeatCapableTransport;
|
|
63
|
+
/**
|
|
64
|
+
* Factory to create transport context from transport instance.
|
|
65
|
+
*/
|
|
66
|
+
export declare function createTransportContext(type: TransportType, transport: Transport): TransportContext;
|
|
67
|
+
//# sourceMappingURL=transport-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-context.d.ts","sourceRoot":"","sources":["../../../src/server/transport/transport-context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAM/E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAM/D;;;;;GAKG;AACH,MAAM,WAAW,yBAA0B,SAAQ,SAAS;IAC1D;;;OAGG;IACH,aAAa,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,0CAA0C;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;IAE9B,iDAAiD;IACjD,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE7B,0DAA0D;IAC1D,SAAS,EAAE,cAAc,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,IAAI,yBAAyB,CAG/F;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,gBAAgB,CASlG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Context Types
|
|
3
|
+
*
|
|
4
|
+
* Transport-layer concerns for MCP sessions including connection details,
|
|
5
|
+
* transport type discrimination, and heartbeat tracking.
|
|
6
|
+
*
|
|
7
|
+
* @module server/transport/transport-context
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Type Guard
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Type guard for heartbeat-capable transports.
|
|
14
|
+
*
|
|
15
|
+
* Checks if the transport has a `sendHeartbeat` method.
|
|
16
|
+
* Used to safely narrow `Transport` without unchecked casts.
|
|
17
|
+
*/
|
|
18
|
+
export function isHeartbeatCapable(transport) {
|
|
19
|
+
// @type-guard — Standard TS pattern: cast to target type for property access within type predicate
|
|
20
|
+
return typeof transport.sendHeartbeat === "function";
|
|
21
|
+
}
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Factory
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Factory to create transport context from transport instance.
|
|
27
|
+
*/
|
|
28
|
+
export function createTransportContext(type, transport) {
|
|
29
|
+
return {
|
|
30
|
+
type,
|
|
31
|
+
instance: transport,
|
|
32
|
+
heartbeat: {
|
|
33
|
+
missedCount: 0,
|
|
34
|
+
supportsHeartbeat: isHeartbeatCapable(transport),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=transport-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-context.js","sourceRoot":"","sources":["../../../src/server/transport/transport-context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsEH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,mGAAmG;IACnG,OAAO,OAAQ,SAAuC,CAAC,aAAa,KAAK,UAAU,CAAC;AACtF,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAmB,EAAE,SAAoB;IAC9E,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE;YACT,WAAW,EAAE,CAAC;YACd,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAAC;SACjD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Types
|
|
3
|
+
*
|
|
4
|
+
* Cross-module type definitions for the transport layer.
|
|
5
|
+
* Only types used by multiple transport sub-modules are defined here.
|
|
6
|
+
* Internal types are co-located with their consuming modules.
|
|
7
|
+
*
|
|
8
|
+
* @module server/transport/types
|
|
9
|
+
*/
|
|
10
|
+
import type { McpSession } from "../session/index.js";
|
|
11
|
+
export type { TransportType, HeartbeatCapableTransport, HeartbeatState, TransportContext, } from "./transport-context.js";
|
|
12
|
+
export { createTransportContext, isHeartbeatCapable } from "./transport-context.js";
|
|
13
|
+
/**
|
|
14
|
+
* Transport state values for lifecycle tracking.
|
|
15
|
+
*/
|
|
16
|
+
export type TransportState = "created" | "starting" | "running" | "stopping" | "stopped" | "error";
|
|
17
|
+
/**
|
|
18
|
+
* Factory function type for creating McpSession instances.
|
|
19
|
+
*
|
|
20
|
+
* Used by the transport layer where each connected client
|
|
21
|
+
* gets an McpSession with protocol handlers and SDK-native
|
|
22
|
+
* cancellation/progress support.
|
|
23
|
+
*
|
|
24
|
+
* @returns A new McpSession instance for the client
|
|
25
|
+
*/
|
|
26
|
+
export type SessionFactory = () => McpSession;
|
|
27
|
+
/**
|
|
28
|
+
* Lightweight handle returned by transport start functions.
|
|
29
|
+
*
|
|
30
|
+
* Replaces the former TransportManager class hierarchy with a simple
|
|
31
|
+
* functional interface: start returns a handle, call shutdown to stop.
|
|
32
|
+
*/
|
|
33
|
+
export interface TransportHandle {
|
|
34
|
+
/** Graceful shutdown of the transport */
|
|
35
|
+
shutdown(): Promise<void>;
|
|
36
|
+
/** Get runtime transport information */
|
|
37
|
+
info(): TransportInfo;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Runtime information about the active transport.
|
|
41
|
+
*/
|
|
42
|
+
export interface TransportInfo {
|
|
43
|
+
/** Current transport state */
|
|
44
|
+
readonly state: TransportState;
|
|
45
|
+
/** When the transport was started */
|
|
46
|
+
readonly startedAt?: Date | undefined;
|
|
47
|
+
/** Transport mode identifier (e.g., 'stdio', 'http', 'https') */
|
|
48
|
+
readonly mode?: string | undefined;
|
|
49
|
+
/** Host address (HTTP/HTTPS only) */
|
|
50
|
+
readonly host?: string | undefined;
|
|
51
|
+
/** Port number (HTTP/HTTPS only) */
|
|
52
|
+
readonly port?: number | undefined;
|
|
53
|
+
/** Full URL (HTTP/HTTPS only) */
|
|
54
|
+
readonly url?: string | undefined;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/transport/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAMpF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAMnG;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC;AAM9C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,wCAAwC;IACxC,IAAI,IAAI,aAAa,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,qCAAqC;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oCAAoC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,iCAAiC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Types
|
|
3
|
+
*
|
|
4
|
+
* Cross-module type definitions for the transport layer.
|
|
5
|
+
* Only types used by multiple transport sub-modules are defined here.
|
|
6
|
+
* Internal types are co-located with their consuming modules.
|
|
7
|
+
*
|
|
8
|
+
* @module server/transport/types
|
|
9
|
+
*/
|
|
10
|
+
export { createTransportContext, isHeartbeatCapable } from "./transport-context.js";
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/transport/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* User-facing transport configuration types for the MCP server.
|
|
5
|
+
* These types define how consumers configure transport mode, TLS, HTTP options, etc.
|
|
6
|
+
*
|
|
7
|
+
* @module server/transport-options
|
|
8
|
+
*/
|
|
9
|
+
import type { EventStore } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
10
|
+
/**
|
|
11
|
+
* Transport modes supported by the MCP framework.
|
|
12
|
+
*
|
|
13
|
+
* - `stdio` — Single-client CLI mode
|
|
14
|
+
* - `http` — Multi-client HTTP mode
|
|
15
|
+
* - `https` — Multi-client HTTPS mode with TLS
|
|
16
|
+
*/
|
|
17
|
+
export type TransportMode = "stdio" | "http" | "https";
|
|
18
|
+
/**
|
|
19
|
+
* TLS configuration for HTTPS transport.
|
|
20
|
+
*
|
|
21
|
+
* Certificate files are read from the filesystem at server startup.
|
|
22
|
+
* Required when transport mode is 'https'.
|
|
23
|
+
*/
|
|
24
|
+
export interface TlsConfig {
|
|
25
|
+
/** Path to the TLS certificate file (PEM format) */
|
|
26
|
+
readonly certPath: string;
|
|
27
|
+
/** Path to the TLS private key file (PEM format) */
|
|
28
|
+
readonly keyPath: string;
|
|
29
|
+
/** Optional path to the CA certificate file (PEM format) */
|
|
30
|
+
readonly caPath?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Shared HTTP/HTTPS transport options.
|
|
34
|
+
*
|
|
35
|
+
* Contains all configuration common to both `http` and `https` modes.
|
|
36
|
+
* Used as the base for the discriminated union members.
|
|
37
|
+
*/
|
|
38
|
+
export interface BaseHttpTransportOptions {
|
|
39
|
+
/** Port to listen on (default: 8000 or MCP_PORT env) */
|
|
40
|
+
port?: number;
|
|
41
|
+
/** Host to bind to (default: '127.0.0.1' or MCP_BIND_HOST env) */
|
|
42
|
+
host?: string;
|
|
43
|
+
/** Enable legacy SSE transport for backwards compatibility */
|
|
44
|
+
legacySseEnabled?: boolean;
|
|
45
|
+
/** Rate limiting: max requests per window */
|
|
46
|
+
rateLimitMax?: number;
|
|
47
|
+
/** Rate limiting: window duration in ms */
|
|
48
|
+
rateLimitWindowMs?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Trust proxy setting for Express.
|
|
51
|
+
*
|
|
52
|
+
* Required when running behind a reverse proxy (nginx, Traefik, cloud LB)
|
|
53
|
+
* to correctly resolve client IPs, protocol, and host from proxy headers
|
|
54
|
+
* (`X-Forwarded-For`, `X-Forwarded-Proto`, `X-Forwarded-Host`).
|
|
55
|
+
*
|
|
56
|
+
* Values:
|
|
57
|
+
* - Hop count (`'1'`, `'2'`) — Trust N hops from the front-facing proxy
|
|
58
|
+
* - Express keyword (`'loopback'`, `'linklocal'`, `'uniquelocal'`)
|
|
59
|
+
* - IP/CIDR (`'10.0.0.1'`, `'10.0.0.0/8'`)
|
|
60
|
+
* - DNS hostname (`'proxy.example.com'`) — resolved at startup
|
|
61
|
+
* - Comma-separated list (`'loopback, 10.0.0.1'`)
|
|
62
|
+
*
|
|
63
|
+
* Can also be configured via `MCP_TRUST_PROXY` env var or config file.
|
|
64
|
+
* Omit to disable trust proxy.
|
|
65
|
+
*
|
|
66
|
+
* @see https://expressjs.com/en/guide/behind-proxies.html
|
|
67
|
+
*/
|
|
68
|
+
trustProxy?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Operate in stateless mode (no session IDs).
|
|
71
|
+
*
|
|
72
|
+
* When enabled, each request gets a fresh McpSession and SDK transport.
|
|
73
|
+
* No Mcp-Session-Id headers are set. Per MCP specification, stateless
|
|
74
|
+
* servers do not track individual client sessions.
|
|
75
|
+
*
|
|
76
|
+
* In stateless mode, GET and DELETE return 405 Method Not Allowed.
|
|
77
|
+
*
|
|
78
|
+
* Use cases:
|
|
79
|
+
* - Simple tool servers that don't need per-client state
|
|
80
|
+
* - Serverless/edge deployments where session persistence is impractical
|
|
81
|
+
* - Horizontal scaling behind round-robin load balancers
|
|
82
|
+
*
|
|
83
|
+
* @default false
|
|
84
|
+
*/
|
|
85
|
+
stateless?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Prefer JSON responses over SSE streams for simple request-response.
|
|
88
|
+
*
|
|
89
|
+
* When enabled, the SDK returns `application/json` for non-streaming
|
|
90
|
+
* responses (e.g. tools/list, resources/list) instead of wrapping them
|
|
91
|
+
* in a `text/event-stream` SSE envelope.
|
|
92
|
+
*
|
|
93
|
+
* The MCP specification recommends: "If the server is only sending one
|
|
94
|
+
* response with no notifications, it SHOULD prefer application/json."
|
|
95
|
+
*
|
|
96
|
+
* Streaming responses (progress, notifications) always use SSE regardless.
|
|
97
|
+
*
|
|
98
|
+
* Can also be configured via `MCP_JSON_RESPONSE` env var or config file.
|
|
99
|
+
*
|
|
100
|
+
* @default true (spec-compliant JSON responses)
|
|
101
|
+
*/
|
|
102
|
+
enableJsonResponse?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Event store for stream resumability.
|
|
105
|
+
*
|
|
106
|
+
* When provided, the SDK transport stores events and supports
|
|
107
|
+
* client reconnection via the `Last-Event-ID` header. Only meaningful
|
|
108
|
+
* in stateful mode — stateless requests have no persistent streams.
|
|
109
|
+
*
|
|
110
|
+
* The SDK provides `InMemoryEventStore` as a reference implementation.
|
|
111
|
+
* For production horizontal scaling, implement the `EventStore` interface
|
|
112
|
+
* with Redis, PostgreSQL, or another shared backend.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* import { InMemoryEventStore } from '@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js';
|
|
117
|
+
*
|
|
118
|
+
* createServer({
|
|
119
|
+
* name: 'my-server',
|
|
120
|
+
* version: '1.0.0',
|
|
121
|
+
* transport: { mode: 'http', eventStore: new InMemoryEventStore() },
|
|
122
|
+
* });
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
eventStore?: EventStore;
|
|
126
|
+
/**
|
|
127
|
+
* CORS allowed origins.
|
|
128
|
+
*
|
|
129
|
+
* When set, CORS middleware is mounted globally and allows requests
|
|
130
|
+
* from the listed origins. When omitted, CORS is disabled.
|
|
131
|
+
*
|
|
132
|
+
* Use `['*']` to allow all origins (not recommended for production).
|
|
133
|
+
*
|
|
134
|
+
* Can also be configured via `MCP_CORS_ORIGIN` env var (comma-separated)
|
|
135
|
+
* or `[security] cors_origin` in the config file.
|
|
136
|
+
*
|
|
137
|
+
* @example ['https://app.example.com', 'https://admin.example.com']
|
|
138
|
+
*/
|
|
139
|
+
corsOrigin?: string[];
|
|
140
|
+
/**
|
|
141
|
+
* Allow credentials in CORS requests (cookies, auth headers).
|
|
142
|
+
*
|
|
143
|
+
* Only effective when `corsOrigin` is set.
|
|
144
|
+
* Cannot be used with `corsOrigin: ['*']`.
|
|
145
|
+
*
|
|
146
|
+
* Can also be configured via `MCP_CORS_CREDENTIALS` env var.
|
|
147
|
+
*
|
|
148
|
+
* @default false
|
|
149
|
+
*/
|
|
150
|
+
corsCredentials?: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Enable HTTP Strict Transport Security (HSTS) header.
|
|
153
|
+
*
|
|
154
|
+
* When true, Helmet sets `Strict-Transport-Security` with `max-age=15552000`
|
|
155
|
+
* (180 days) and `includeSubDomains`. Only enable when serving over HTTPS.
|
|
156
|
+
*
|
|
157
|
+
* Can also be configured via `MCP_HELMET_HSTS` env var.
|
|
158
|
+
*
|
|
159
|
+
* @default false
|
|
160
|
+
*/
|
|
161
|
+
helmetHsts?: boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Content Security Policy configuration.
|
|
164
|
+
*
|
|
165
|
+
* - Omit: Helmet default CSP applies
|
|
166
|
+
* - `'false'`: Disable CSP entirely
|
|
167
|
+
* - Custom string: CSP directives (e.g. `"default-src 'self'; script-src 'none'"`)
|
|
168
|
+
*
|
|
169
|
+
* Can also be configured via `MCP_HELMET_CSP` env var.
|
|
170
|
+
*/
|
|
171
|
+
helmetCsp?: string;
|
|
172
|
+
/**
|
|
173
|
+
* X-Frame-Options header value.
|
|
174
|
+
*
|
|
175
|
+
* - `'DENY'` — Never allow framing (most secure)
|
|
176
|
+
* - `'SAMEORIGIN'` — Allow from same origin
|
|
177
|
+
* - `'false'` — Disable X-Frame-Options header
|
|
178
|
+
*
|
|
179
|
+
* Can also be configured via `MCP_HELMET_FRAME_OPTIONS` env var.
|
|
180
|
+
*
|
|
181
|
+
* @default 'DENY'
|
|
182
|
+
*/
|
|
183
|
+
helmetFrameOptions?: "DENY" | "SAMEORIGIN" | "false";
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Stdio transport — single-client CLI mode.
|
|
187
|
+
*
|
|
188
|
+
* No HTTP options are available. Uses stdin/stdout for MCP protocol data.
|
|
189
|
+
*/
|
|
190
|
+
export interface StdioTransportOptions {
|
|
191
|
+
mode: "stdio";
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* HTTP transport — multi-client mode without TLS.
|
|
195
|
+
*
|
|
196
|
+
* Use behind a reverse proxy that handles TLS termination,
|
|
197
|
+
* or for local development.
|
|
198
|
+
*/
|
|
199
|
+
export interface HttpTransportOptions extends BaseHttpTransportOptions {
|
|
200
|
+
mode: "http";
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* HTTPS transport — multi-client mode with TLS.
|
|
204
|
+
*
|
|
205
|
+
* Requires TLS certificate configuration. Use for direct TLS termination
|
|
206
|
+
* without a reverse proxy.
|
|
207
|
+
*/
|
|
208
|
+
export interface HttpsTransportOptions extends BaseHttpTransportOptions {
|
|
209
|
+
mode: "https";
|
|
210
|
+
/**
|
|
211
|
+
* TLS configuration (required for HTTPS mode).
|
|
212
|
+
*
|
|
213
|
+
* Can also be configured via environment variables:
|
|
214
|
+
* - MCP_TLS_CERT_PATH
|
|
215
|
+
* - MCP_TLS_KEY_PATH
|
|
216
|
+
* - MCP_TLS_CA_PATH (optional)
|
|
217
|
+
*/
|
|
218
|
+
tls: TlsConfig;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Transport configuration — discriminated union by `mode`.
|
|
222
|
+
*
|
|
223
|
+
* TypeScript narrows the available options based on the selected mode:
|
|
224
|
+
* - `{ mode: 'stdio' }` — no additional options
|
|
225
|
+
* - `{ mode: 'http', port: 8000, ... }` — flat HTTP options
|
|
226
|
+
* - `{ mode: 'https', port: 8443, tls: { ... }, ... }` — flat HTTPS options with required TLS
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* // Stdio
|
|
231
|
+
* transport: { mode: 'stdio' }
|
|
232
|
+
*
|
|
233
|
+
* // HTTP
|
|
234
|
+
* transport: { mode: 'http', port: 8000, host: '0.0.0.0' }
|
|
235
|
+
*
|
|
236
|
+
* // HTTPS
|
|
237
|
+
* transport: { mode: 'https', port: 8443, tls: { certPath: '/certs/cert.pem', keyPath: '/certs/key.pem' } }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
export type TransportOptions = StdioTransportOptions | HttpTransportOptions | HttpsTransportOptions;
|
|
241
|
+
/**
|
|
242
|
+
* Type guard: checks whether the transport is an HTTP-based mode (http or https).
|
|
243
|
+
*
|
|
244
|
+
* After this guard, TypeScript narrows to `HttpTransportOptions | HttpsTransportOptions`,
|
|
245
|
+
* allowing direct access to `port`, `host`, `stateless`, etc.
|
|
246
|
+
*/
|
|
247
|
+
export declare function isHttpTransport(transport: TransportOptions): transport is HttpTransportOptions | HttpsTransportOptions;
|
|
248
|
+
//# sourceMappingURL=transport-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-options.d.ts","sourceRoot":"","sources":["../../src/server/transport-options.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAMrF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAIxB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAI1B;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;CACtD;AAID;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IACpE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,IAAI,EAAE,OAAO,CAAC;IAEd;;;;;;;OAOG;IACH,GAAG,EAAE,SAAS,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAEpG;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,gBAAgB,GAC1B,SAAS,IAAI,oBAAoB,GAAG,qBAAqB,CAE3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* User-facing transport configuration types for the MCP server.
|
|
5
|
+
* These types define how consumers configure transport mode, TLS, HTTP options, etc.
|
|
6
|
+
*
|
|
7
|
+
* @module server/transport-options
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Type guard: checks whether the transport is an HTTP-based mode (http or https).
|
|
11
|
+
*
|
|
12
|
+
* After this guard, TypeScript narrows to `HttpTransportOptions | HttpsTransportOptions`,
|
|
13
|
+
* allowing direct access to `port`, `host`, `stateless`, etc.
|
|
14
|
+
*/
|
|
15
|
+
export function isHttpTransport(transport) {
|
|
16
|
+
return transport.mode === "http" || transport.mode === "https";
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=transport-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-options.js","sourceRoot":"","sources":["../../src/server/transport-options.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0QH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,SAA2B;IAE3B,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC;AACjE,CAAC"}
|