@cyanheads/mcp-ts-core 0.11.4 → 0.12.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/AGENTS.md +28 -24
- package/CLAUDE.md +28 -24
- package/README.md +10 -10
- package/biome.json +1 -1
- package/changelog/0.11.x/0.11.5.md +28 -0
- package/changelog/0.12.x/0.12.0.md +96 -0
- package/changelog/template.md +55 -16
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/config/index.d.ts +0 -18
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +0 -25
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +5 -7
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +18 -27
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts +90 -57
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +32 -33
- package/dist/core/context.js.map +1 -1
- package/dist/core/gcPressure.d.ts.map +1 -1
- package/dist/core/gcPressure.js +3 -4
- package/dist/core/gcPressure.js.map +1 -1
- package/dist/core/index.d.ts +6 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +10 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/serverManifest.d.ts +1 -3
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +9 -4
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +32 -35
- package/dist/core/worker.js.map +1 -1
- package/dist/logs/combined.log +10 -0
- package/dist/logs/error.log +6 -0
- package/dist/logs/interactions.log +0 -0
- package/dist/mcp-server/inputRequired.d.ts +52 -0
- package/dist/mcp-server/inputRequired.d.ts.map +1 -0
- package/dist/mcp-server/inputRequired.js +76 -0
- package/dist/mcp-server/inputRequired.js.map +1 -0
- package/dist/mcp-server/notifications.d.ts +33 -31
- package/dist/mcp-server/notifications.d.ts.map +1 -1
- package/dist/mcp-server/notifications.js +34 -26
- package/dist/mcp-server/notifications.js.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.d.ts +2 -2
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +15 -5
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts +3 -3
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +8 -15
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/resourceSubscriptions.d.ts +45 -0
- package/dist/mcp-server/resources/resourceSubscriptions.d.ts.map +1 -0
- package/dist/mcp-server/resources/resourceSubscriptions.js +51 -0
- package/dist/mcp-server/resources/resourceSubscriptions.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +3 -5
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +8 -15
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +21 -22
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts +12 -21
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +38 -28
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +11 -33
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +17 -243
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +1 -3
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js +48 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +46 -20
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +131 -25
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/ITransport.d.ts +2 -2
- package/dist/mcp-server/transports/ITransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/authFactory.js +1 -1
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +1 -1
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +5 -13
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +5 -11
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +9 -22
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -1
- package/dist/mcp-server/transports/heartbeat.d.ts.map +1 -1
- package/dist/mcp-server/transports/heartbeat.js +4 -8
- package/dist/mcp-server/transports/heartbeat.js.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js +6 -24
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.d.ts +3 -3
- package/dist/mcp-server/transports/http/httpServer.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.js +15 -32
- package/dist/mcp-server/transports/http/httpServer.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts +25 -8
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +156 -310
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js +0 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.js +4 -8
- package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js +0 -2
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -6
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
- package/dist/mcp-server/transports/http/robotsTxt.js +2 -2
- package/dist/mcp-server/transports/http/robotsTxt.js.map +1 -1
- package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/serverCard.js +2 -6
- package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.d.ts +48 -45
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +141 -185
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
- package/dist/mcp-server/transports/manager.d.ts +12 -4
- package/dist/mcp-server/transports/manager.d.ts.map +1 -1
- package/dist/mcp-server/transports/manager.js +35 -33
- package/dist/mcp-server/transports/manager.js.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +24 -31
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.js +23 -38
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -1
- package/dist/mcp-server/types.d.ts +25 -0
- package/dist/mcp-server/types.d.ts.map +1 -0
- package/dist/mcp-server/types.js +10 -0
- package/dist/mcp-server/types.js.map +1 -0
- package/dist/services/canvas/core/CanvasInstance.d.ts +2 -2
- package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +4 -4
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +8 -18
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts +5 -5
- package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
- package/dist/services/canvas/core/DataCanvas.js +2 -3
- package/dist/services/canvas/core/DataCanvas.js.map +1 -1
- package/dist/services/canvas/core/IDataCanvasProvider.d.ts +11 -11
- package/dist/services/canvas/core/IDataCanvasProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +11 -11
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +4 -10
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.js +2 -5
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
- package/dist/services/mirror/core/defineMirror.js +1 -1
- package/dist/services/mirror/core/defineMirror.js.map +1 -1
- package/dist/services/mirror/types.d.ts +5 -5
- package/dist/services/mirror/types.d.ts.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
- package/dist/services/speech/providers/whisper.provider.js +1 -1
- package/dist/services/speech/providers/whisper.provider.js.map +1 -1
- package/dist/storage/core/StorageService.d.ts +1 -1
- package/dist/storage/core/StorageService.d.ts.map +1 -1
- package/dist/storage/core/StorageService.js +12 -20
- package/dist/storage/core/StorageService.js.map +1 -1
- package/dist/storage/core/storageFactory.d.ts.map +1 -1
- package/dist/storage/core/storageFactory.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +1 -1
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +2 -2
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +4 -12
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +3 -8
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +3 -8
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +2 -4
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/testing/index.d.ts +35 -12
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +53 -38
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/vitest.d.ts +1 -1
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/types-global/errors.d.ts +28 -15
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js +8 -1
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/formatting/diffFormatter.d.ts +5 -5
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/diffFormatter.js +7 -20
- package/dist/utils/formatting/diffFormatter.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts +3 -3
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/tableFormatter.js +6 -17
- package/dist/utils/formatting/tableFormatter.js.map +1 -1
- package/dist/utils/formatting/treeFormatter.d.ts +3 -3
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/treeFormatter.js +5 -18
- package/dist/utils/formatting/treeFormatter.js.map +1 -1
- package/dist/utils/index.d.ts +4 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +23 -11
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +10 -13
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logger.d.ts +3 -3
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +11 -5
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +1 -1
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +57 -13
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/internal/requestContext.d.ts +79 -55
- package/dist/utils/internal/requestContext.d.ts.map +1 -1
- package/dist/utils/internal/requestContext.js +77 -32
- package/dist/utils/internal/requestContext.js.map +1 -1
- package/dist/utils/metrics/tokenCounter.d.ts +3 -3
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -1
- package/dist/utils/metrics/tokenCounter.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +2 -2
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +8 -24
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/retry.d.ts +2 -2
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.d.ts +3 -3
- package/dist/utils/pagination/pagination.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.js +3 -3
- package/dist/utils/pagination/pagination.js.map +1 -1
- package/dist/utils/parsing/csvParser.d.ts +2 -2
- package/dist/utils/parsing/csvParser.d.ts.map +1 -1
- package/dist/utils/parsing/csvParser.js +4 -8
- package/dist/utils/parsing/csvParser.js.map +1 -1
- package/dist/utils/parsing/dateParser.d.ts +3 -3
- package/dist/utils/parsing/dateParser.d.ts.map +1 -1
- package/dist/utils/parsing/dateParser.js +3 -2
- package/dist/utils/parsing/dateParser.js.map +1 -1
- package/dist/utils/parsing/frontmatterParser.d.ts +2 -2
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -1
- package/dist/utils/parsing/frontmatterParser.js +7 -10
- package/dist/utils/parsing/frontmatterParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.d.ts +2 -2
- package/dist/utils/parsing/htmlExtractor.d.ts.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +6 -11
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/jsonParser.d.ts +2 -2
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +4 -8
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/pdfParser.d.ts +10 -10
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -1
- package/dist/utils/parsing/pdfParser.js +26 -89
- package/dist/utils/parsing/pdfParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts +2 -2
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +4 -8
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts +2 -2
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +4 -8
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -1
- package/dist/utils/scheduling/scheduler.js +5 -6
- package/dist/utils/scheduling/scheduler.js.map +1 -1
- package/dist/utils/security/rateLimiter.d.ts +2 -2
- package/dist/utils/security/rateLimiter.d.ts.map +1 -1
- package/dist/utils/security/rateLimiter.js +1 -1
- package/dist/utils/security/rateLimiter.js.map +1 -1
- package/dist/utils/telemetry/attributes.d.ts +23 -7
- package/dist/utils/telemetry/attributes.d.ts.map +1 -1
- package/dist/utils/telemetry/attributes.js +23 -10
- package/dist/utils/telemetry/attributes.js.map +1 -1
- package/dist/utils/telemetry/trace.d.ts +3 -3
- package/dist/utils/telemetry/trace.d.ts.map +1 -1
- package/dist/utils/telemetry/trace.js +4 -2
- package/dist/utils/telemetry/trace.js.map +1 -1
- package/package.json +22 -26
- package/scripts/lint-mcp.ts +1 -3
- package/scripts/lint-packaging.ts +1 -1
- package/skills/add-service/SKILL.md +2 -2
- package/skills/add-test/SKILL.md +42 -20
- package/skills/add-tool/SKILL.md +68 -19
- package/skills/api-canvas/SKILL.md +2 -2
- package/skills/api-config/SKILL.md +1 -11
- package/skills/api-context/SKILL.md +175 -111
- package/skills/api-linter/SKILL.md +2 -2
- package/skills/api-telemetry/SKILL.md +8 -12
- package/skills/api-testing/SKILL.md +53 -52
- package/skills/code-simplifier/SKILL.md +2 -2
- package/skills/design-mcp-server/SKILL.md +34 -18
- package/skills/field-test/SKILL.md +4 -2
- package/skills/git-wrapup/SKILL.md +3 -3
- package/skills/polish-docs-meta/SKILL.md +1 -1
- package/skills/polish-docs-meta/references/agent-protocol.md +2 -2
- package/skills/polish-docs-meta/references/readme.md +1 -1
- package/skills/release-and-publish/SKILL.md +3 -1
- package/skills/report-issue-framework/SKILL.md +2 -2
- package/skills/report-issue-local/SKILL.md +2 -2
- package/skills/security-pass/SKILL.md +16 -14
- package/templates/.github/CODE_OF_CONDUCT.md +28 -0
- package/templates/.github/CONTRIBUTING.md +50 -0
- package/templates/.github/SECURITY.md +24 -0
- package/templates/AGENTS.md +6 -6
- package/templates/CLAUDE.md +6 -6
- package/templates/changelog/template.md +55 -16
- package/templates/tests/resources/echo.resource.test.ts +16 -9
- package/dist/mcp-server/elicitation.d.ts +0 -64
- package/dist/mcp-server/elicitation.d.ts.map +0 -1
- package/dist/mcp-server/elicitation.js +0 -81
- package/dist/mcp-server/elicitation.js.map +0 -1
- package/dist/mcp-server/protocolSession.d.ts +0 -34
- package/dist/mcp-server/protocolSession.d.ts.map +0 -1
- package/dist/mcp-server/protocolSession.js +0 -13
- package/dist/mcp-server/protocolSession.js.map +0 -1
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts +0 -53
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js +0 -65
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js.map +0 -1
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +0 -70
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +0 -130
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +0 -1
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +0 -109
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +0 -209
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +0 -1
- package/dist/mcp-server/tasks/core/taskManager.d.ts +0 -91
- package/dist/mcp-server/tasks/core/taskManager.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/taskManager.js +0 -210
- package/dist/mcp-server/tasks/core/taskManager.js.map +0 -1
- package/dist/mcp-server/tasks/core/taskTypes.d.ts +0 -18
- package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/taskTypes.js +0 -20
- package/dist/mcp-server/tasks/core/taskTypes.js.map +0 -1
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +0 -101
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +0 -1
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js +0 -14
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +0 -1
|
@@ -3,15 +3,11 @@
|
|
|
3
3
|
* Constructs Context (with `uri`), checks inline auth, validates params, formats response.
|
|
4
4
|
* @module src/mcp-server/resources/utils/resourceHandlerFactory
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
7
|
-
import type
|
|
8
|
-
import type { ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
-
import { type ElicitationNotifiers } from '../../../mcp-server/elicitation.js';
|
|
10
|
-
import type { ProtocolRequestRegistration } from '../../../mcp-server/protocolSession.js';
|
|
6
|
+
import type { InputRequiredResult, ReadResourceResult, ServerContext, Variables } from '@modelcontextprotocol/server';
|
|
7
|
+
import { type ResourceSubscriptions } from '../../../mcp-server/notifications.js';
|
|
11
8
|
import type { AnyResourceDefinition } from '../../../mcp-server/resources/utils/resourceDefinition.js';
|
|
12
9
|
import type { StorageService } from '../../../storage/core/StorageService.js';
|
|
13
10
|
import type { Logger } from '../../../utils/internal/logger.js';
|
|
14
|
-
type SdkExtra = RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
15
11
|
/** Services required by the handler factory to construct Context. */
|
|
16
12
|
export interface ResourceHandlerFactoryServices {
|
|
17
13
|
/**
|
|
@@ -26,7 +22,7 @@ export interface ResourceHandlerFactoryServices {
|
|
|
26
22
|
}
|
|
27
23
|
/**
|
|
28
24
|
* Per-server notifier closures bound at registration time, targeting
|
|
29
|
-
* `server.send*ListChanged()
|
|
25
|
+
* `server.send*ListChanged()`.
|
|
30
26
|
*
|
|
31
27
|
* Split from {@link ResourceHandlerFactoryServices} so each per-request
|
|
32
28
|
* McpServer gets its own notifier closures — preventing a concurrent
|
|
@@ -34,17 +30,15 @@ export interface ResourceHandlerFactoryServices {
|
|
|
34
30
|
*
|
|
35
31
|
* The resource handler factory prefers request-scoped notifiers
|
|
36
32
|
* ({@link buildRequestScopedNotifiers}, #135) and uses these only as a fallback
|
|
37
|
-
* when the
|
|
38
|
-
*
|
|
39
|
-
* The elicitation fields come from {@link ElicitationNotifiers}.
|
|
33
|
+
* when the request scope exposes no sender (e.g. a non-request test scope).
|
|
40
34
|
*/
|
|
41
|
-
export interface ResourceHandlerNotifiers
|
|
35
|
+
export interface ResourceHandlerNotifiers {
|
|
42
36
|
notifyPromptListChanged?: () => void;
|
|
43
37
|
notifyResourceListChanged?: () => void;
|
|
44
38
|
notifyResourceUpdated?: (uri: string) => void;
|
|
45
39
|
notifyToolListChanged?: () => void;
|
|
46
|
-
/**
|
|
47
|
-
|
|
40
|
+
/** Per-connection `resources/subscribe` registry (#354). */
|
|
41
|
+
subscriptions?: ResourceSubscriptions;
|
|
48
42
|
}
|
|
49
43
|
/**
|
|
50
44
|
* Creates an MCP resource read handler from a resource definition.
|
|
@@ -58,6 +52,5 @@ export interface ResourceHandlerNotifiers extends ElicitationNotifiers {
|
|
|
58
52
|
* - Formats response via `format` or JSON default
|
|
59
53
|
* - Catches errors and re-throws for the SDK
|
|
60
54
|
*/
|
|
61
|
-
export declare function createResourceHandler(def: AnyResourceDefinition, services: ResourceHandlerFactoryServices, notifiers: ResourceHandlerNotifiers): (uri: URL, variables: Variables,
|
|
62
|
-
export {};
|
|
55
|
+
export declare function createResourceHandler(def: AnyResourceDefinition, services: ResourceHandlerFactoryServices, notifiers: ResourceHandlerNotifiers): (uri: URL, variables: Variables, ctx: ServerContext) => Promise<ReadResourceResult | InputRequiredResult>;
|
|
63
56
|
//# sourceMappingURL=resourceHandlerFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACV,MAAM,8BAA8B,CAAC;AAStC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAEhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD,qEAAqE;AACrE,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,8BAA8B,EACxC,SAAS,EAAE,wBAAwB,GAClC,CACD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CA+GrD"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { config } from '../../../config/index.js';
|
|
7
7
|
import { attachTypedFail, createContext } from '../../../core/context.js';
|
|
8
|
-
import {
|
|
9
|
-
import { buildRequestScopedNotifiers } from '../../../mcp-server/notifications.js';
|
|
8
|
+
import { createContextInputs, createRequestInput, isInputRequiredSignal, } from '../../../mcp-server/inputRequired.js';
|
|
9
|
+
import { buildRequestScopedNotifiers, } from '../../../mcp-server/notifications.js';
|
|
10
10
|
import { withRequiredScopes } from '../../../mcp-server/transports/auth/lib/authUtils.js';
|
|
11
11
|
import { McpError } from '../../../types-global/errors.js';
|
|
12
12
|
import { ErrorHandler } from '../../../utils/internal/error-handler/errorHandler.js';
|
|
@@ -63,19 +63,16 @@ function observableResourceUri(uri) {
|
|
|
63
63
|
export function createResourceHandler(def, services, notifiers) {
|
|
64
64
|
const mimeType = def.mimeType ?? 'application/json';
|
|
65
65
|
const formatter = def.format ?? defaultResponseFormatter;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
const signal =
|
|
70
|
-
? AbortSignal.any([sdkContext.signal, protocolRequest.signal])
|
|
71
|
-
: sdkContext.signal;
|
|
66
|
+
const resourceName = def.name ?? def.uriTemplate;
|
|
67
|
+
return async (uri, variables, serverContext) => {
|
|
68
|
+
const mcpReq = serverContext?.mcpReq;
|
|
69
|
+
const signal = mcpReq?.signal ?? new AbortController().signal;
|
|
72
70
|
// Route handler-time list-changed / resource-updated notifications through
|
|
73
|
-
// this request's `
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
const sdkSessionId = typeof sdkContext?.sessionId === 'string' ? sdkContext.sessionId : undefined;
|
|
71
|
+
// this request's `ctx.mcpReq.notify` so they carry `relatedRequestId` and
|
|
72
|
+
// reach the client under per-request serving (#135). Fall back to the
|
|
73
|
+
// server-level notifiers when the scope exposes no sender.
|
|
74
|
+
const effectiveNotifiers = buildRequestScopedNotifiers(mcpReq ?? {}, notifiers.subscriptions) ?? notifiers;
|
|
75
|
+
const sdkSessionId = typeof serverContext?.sessionId === 'string' ? serverContext.sessionId : undefined;
|
|
79
76
|
// Surface sessionId on `Context` only when it has request-spanning
|
|
80
77
|
// lifetime — stateful HTTP (or `auto`, which resolves to stateful for
|
|
81
78
|
// HTTP). In stateless mode the SDK still hands us a per-request token;
|
|
@@ -93,17 +90,17 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
93
90
|
// query-string / caller-supplied and belongs in metrics, not logs.
|
|
94
91
|
// Log correlation always uses the raw SDK sessionId — useful even in
|
|
95
92
|
// stateless mode for tracing the SDK's per-request token through events.
|
|
93
|
+
const requestId = mcpReq?.id;
|
|
96
94
|
const appContext = requestContextService.createRequestContext({
|
|
97
95
|
parentContext: {
|
|
98
|
-
...(typeof
|
|
96
|
+
...(typeof requestId === 'string' ? { requestId } : {}),
|
|
99
97
|
...(sdkSessionId ? { sessionId: sdkSessionId } : {}),
|
|
100
98
|
},
|
|
101
99
|
operation: 'HandleResourceRead',
|
|
102
100
|
additionalContext: {
|
|
103
|
-
resourceName
|
|
101
|
+
resourceName,
|
|
104
102
|
resourceUri,
|
|
105
103
|
resourceHasQuery: uri.search.length > 0,
|
|
106
|
-
sessionId: sdkSessionId,
|
|
107
104
|
},
|
|
108
105
|
});
|
|
109
106
|
try {
|
|
@@ -121,7 +118,9 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
121
118
|
storage: services.storage,
|
|
122
119
|
signal,
|
|
123
120
|
sessionId: handlerSessionId,
|
|
124
|
-
|
|
121
|
+
inputs: createContextInputs(mcpReq),
|
|
122
|
+
requestInput: createRequestInput(),
|
|
123
|
+
...(mcpReq?.log && { wireLog: mcpReq.log }),
|
|
125
124
|
notifyPromptListChanged: effectiveNotifiers.notifyPromptListChanged,
|
|
126
125
|
notifyResourceListChanged: effectiveNotifiers.notifyResourceListChanged,
|
|
127
126
|
notifyResourceUpdated: effectiveNotifiers.notifyResourceUpdated,
|
|
@@ -129,7 +128,6 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
129
128
|
uri,
|
|
130
129
|
}), def.errors);
|
|
131
130
|
// Execute handler with performance measurement
|
|
132
|
-
const resourceName = def.name ?? def.uriTemplate;
|
|
133
131
|
const handlerResult = await measureResourceExecution(() => Promise.resolve(def.handler(validatedParams, ctx)), { ...appContext, resourceName }, { uri: resourceUri, mimeType });
|
|
134
132
|
// Validate output against schema when defined
|
|
135
133
|
const validatedResult = def.output ? def.output.parse(handlerResult) : handlerResult;
|
|
@@ -137,6 +135,10 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
137
135
|
return { contents };
|
|
138
136
|
}
|
|
139
137
|
catch (error) {
|
|
138
|
+
// `ctx.requestInput(...)` is protocol control flow, not a failure —
|
|
139
|
+
// `resources/read` honors `input_required` on the 2026-07-28 revision.
|
|
140
|
+
if (isInputRequiredSignal(error))
|
|
141
|
+
return error.result;
|
|
140
142
|
// Classify without logging — the SDK logs when it catches the thrown error.
|
|
141
143
|
if (error instanceof McpError) {
|
|
142
144
|
throw error;
|
|
@@ -144,9 +146,6 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
144
146
|
const { code, message, data } = ErrorHandler.classifyOnly(error);
|
|
145
147
|
throw new McpError(code, message, data, { cause: error });
|
|
146
148
|
}
|
|
147
|
-
finally {
|
|
148
|
-
protocolRequest?.unregister();
|
|
149
|
-
}
|
|
150
149
|
};
|
|
151
150
|
}
|
|
152
151
|
//# sourceMappingURL=resourceHandlerFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"resourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Factory for creating configured MCP server instances.
|
|
3
3
|
* Creates an McpServer with identity, capabilities, and registered
|
|
4
|
-
* tools/resources/prompts
|
|
4
|
+
* tools/resources/prompts from the provided registries.
|
|
5
5
|
*
|
|
6
6
|
* MCP Specification References:
|
|
7
|
-
* - Lifecycle: https://modelcontextprotocol.io/specification/
|
|
8
|
-
* - Overview (Capabilities): https://modelcontextprotocol.io/specification/
|
|
9
|
-
* - Transports: https://modelcontextprotocol.io/specification/
|
|
7
|
+
* - Lifecycle: https://modelcontextprotocol.io/specification/2026-07-28/basic/lifecycle
|
|
8
|
+
* - Overview (Capabilities): https://modelcontextprotocol.io/specification/2026-07-28/basic/index
|
|
9
|
+
* - Transports: https://modelcontextprotocol.io/specification/2026-07-28/basic/transports
|
|
10
10
|
* @module src/mcp-server/server
|
|
11
11
|
*/
|
|
12
|
-
import type
|
|
13
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
14
|
-
import type { Implementation } from '@modelcontextprotocol/sdk/types.js';
|
|
12
|
+
import { type Implementation, McpServer } from '@modelcontextprotocol/server';
|
|
15
13
|
import type { AppConfig } from '../config/index.js';
|
|
16
14
|
import type { PromptRegistry } from '../mcp-server/prompts/prompt-registration.js';
|
|
17
|
-
import type { ProtocolSessionHooks } from '../mcp-server/protocolSession.js';
|
|
18
15
|
import type { ResourceRegistry } from '../mcp-server/resources/resource-registration.js';
|
|
19
16
|
import type { ToolRegistry } from '../mcp-server/tools/tool-registration.js';
|
|
20
17
|
/** Dependencies required to create an MCP server instance. */
|
|
21
18
|
export interface McpServerDeps {
|
|
22
|
-
/**
|
|
23
|
-
* When true, advertise the experimental `tasks` capability (SEP-1686).
|
|
24
|
-
* The capability is gated on actual usage — at least one registered tool
|
|
25
|
-
* must be a task tool — because the capability ships in spec revision
|
|
26
|
-
* 2025-11-25 (GA) and clients pinned to 2025-06-18 fail on the unknown key.
|
|
27
|
-
*/
|
|
28
|
-
advertiseTasks?: boolean;
|
|
29
19
|
config: AppConfig;
|
|
30
20
|
/**
|
|
31
21
|
* One-line description forwarded to `new McpServer({ serverInfo })`.
|
|
32
22
|
* Explicit option wins over `MCP_SERVER_DESCRIPTION` / `package.json`.
|
|
33
23
|
*/
|
|
34
24
|
description?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The protocol era this instance will serve, from the factory's
|
|
27
|
+
* {@link McpRequestContext}. Selects the resource-subscription mechanism —
|
|
28
|
+
* see {@link installResourceSubscriptions}. Defaults to `legacy` for direct
|
|
29
|
+
* callers that construct an instance outside the serving factories.
|
|
30
|
+
*/
|
|
31
|
+
era?: 'legacy' | 'modern';
|
|
35
32
|
/** SEP-2133 extensions to advertise in server capabilities. */
|
|
36
33
|
extensions?: Record<string, object>;
|
|
37
34
|
/** Server icon(s) forwarded to `new McpServer({ serverInfo })`. */
|
|
@@ -45,13 +42,7 @@ export interface McpServerDeps {
|
|
|
45
42
|
*/
|
|
46
43
|
instructions?: string;
|
|
47
44
|
promptRegistry: PromptRegistry;
|
|
48
|
-
/** Request-spanning state restored for a per-request HTTP server instance. */
|
|
49
|
-
protocolSession?: ProtocolSessionHooks;
|
|
50
45
|
resourceRegistry: ResourceRegistry;
|
|
51
|
-
/** Task message queue for side-channel delivery via tasks/result. */
|
|
52
|
-
taskMessageQueue?: TaskMessageQueue;
|
|
53
|
-
/** Task store for managing task lifecycle (create, status, result). */
|
|
54
|
-
taskStore?: TaskStore;
|
|
55
46
|
/**
|
|
56
47
|
* Human-readable display name forwarded to `new McpServer({ serverInfo })`.
|
|
57
48
|
* Supplements the machine-identifier `name`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,KAAK,cAAc,EACnB,SAAS,EAEV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAI5E,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,mEAAmE;IACnE,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAuErF"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Factory for creating configured MCP server instances.
|
|
3
|
+
* Creates an McpServer with identity, capabilities, and registered
|
|
4
|
+
* tools/resources/prompts from the provided registries.
|
|
5
|
+
*
|
|
6
|
+
* MCP Specification References:
|
|
7
|
+
* - Lifecycle: https://modelcontextprotocol.io/specification/2026-07-28/basic/lifecycle
|
|
8
|
+
* - Overview (Capabilities): https://modelcontextprotocol.io/specification/2026-07-28/basic/index
|
|
9
|
+
* - Transports: https://modelcontextprotocol.io/specification/2026-07-28/basic/transports
|
|
10
|
+
* @module src/mcp-server/server
|
|
11
|
+
*/
|
|
12
|
+
import { McpServer, } from '@modelcontextprotocol/server';
|
|
13
|
+
import { installResourceSubscriptions } from '../mcp-server/resources/resourceSubscriptions.js';
|
|
2
14
|
import { logger } from '../utils/internal/logger.js';
|
|
3
15
|
import { requestContextService } from '../utils/internal/requestContext.js';
|
|
4
16
|
/**
|
|
@@ -22,43 +34,41 @@ export async function createMcpServerInstance(deps) {
|
|
|
22
34
|
...(deps.icons && { icons: deps.icons }),
|
|
23
35
|
}, {
|
|
24
36
|
capabilities: {
|
|
37
|
+
// Declaring `logging` installs the SDK's `logging/setLevel` handler and
|
|
38
|
+
// gates `notifications/message` on the client's chosen level; `ctx.log`
|
|
39
|
+
// mirrors onto that stream.
|
|
25
40
|
logging: {},
|
|
26
|
-
|
|
41
|
+
// `subscribe: true` promises resource-specific update notifications
|
|
42
|
+
// in both eras (#354). A 2025 client opts in through
|
|
43
|
+
// `resources/subscribe`, installed below; a 2026 client through
|
|
44
|
+
// `subscriptions/listen`'s `resourceSubscriptions` filter, which the
|
|
45
|
+
// SDK's listen router owns.
|
|
46
|
+
resources: { listChanged: true, subscribe: true },
|
|
27
47
|
tools: { listChanged: true },
|
|
28
48
|
prompts: { listChanged: true },
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// that strict-parse capabilities fail on the unknown key.
|
|
32
|
-
...(deps.advertiseTasks && {
|
|
33
|
-
tasks: {
|
|
34
|
-
list: {},
|
|
35
|
-
cancel: {},
|
|
36
|
-
requests: {
|
|
37
|
-
tools: { call: {} },
|
|
38
|
-
},
|
|
39
|
-
},
|
|
49
|
+
...(deps.extensions && {
|
|
50
|
+
extensions: deps.extensions,
|
|
40
51
|
}),
|
|
41
|
-
...(deps.extensions && { extensions: deps.extensions }),
|
|
42
52
|
},
|
|
43
53
|
...(deps.instructions && { instructions: deps.instructions }),
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
// Multi-round-trip serving: `ctx.requestInput(...)` returns are fulfilled
|
|
55
|
+
// by the client on 2026-era requests and by the SDK's legacy shim (real
|
|
56
|
+
// `elicitation/create` round trips over the live session) on 2025-era
|
|
57
|
+
// ones, so handlers are written once.
|
|
58
|
+
inputRequired: { legacyShim: true },
|
|
46
59
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const restorableServer = server.server;
|
|
55
|
-
restorableServer._clientCapabilities = deps.protocolSession.clientCapabilities;
|
|
56
|
-
}
|
|
60
|
+
// The `resources/subscribe` registry is a 2025-era mechanism: the method
|
|
61
|
+
// does not exist on 2026-07-28, where the client opts in through
|
|
62
|
+
// `subscriptions/listen` and the SDK filters delivery. Installing it on a
|
|
63
|
+
// modern instance would leave the registry permanently empty and silently
|
|
64
|
+
// drop every `ctx.notifyResourceUpdated(uri)` — the notifiers read `undefined`
|
|
65
|
+
// as "no subscription tracking on this connection" and emit unconditionally.
|
|
66
|
+
const subscriptions = (deps.era ?? 'legacy') === 'legacy' ? installResourceSubscriptions(server) : undefined;
|
|
57
67
|
try {
|
|
58
68
|
logger.debug('Registering all MCP capabilities via registries...', context);
|
|
59
69
|
await Promise.all([
|
|
60
|
-
deps.toolRegistry.registerAll(server,
|
|
61
|
-
deps.resourceRegistry.registerAll(server,
|
|
70
|
+
deps.toolRegistry.registerAll(server, subscriptions),
|
|
71
|
+
deps.resourceRegistry.registerAll(server, subscriptions),
|
|
62
72
|
deps.promptRegistry.registerAll(server),
|
|
63
73
|
]);
|
|
64
74
|
logger.debug('All MCP capabilities registered successfully', context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Encapsulates the registration of all tool definitions with an McpServer.
|
|
3
|
-
* Supports ToolDefinition (standard and auto-task via `task: true`) and TaskToolDefinition
|
|
4
|
-
* (escape hatch for custom task lifecycle).
|
|
5
3
|
* @module src/mcp-server/tools/tool-registration
|
|
6
4
|
*/
|
|
7
|
-
import type { McpServer } from '@modelcontextprotocol/
|
|
8
|
-
import type {
|
|
9
|
-
import type { ProtocolSessionHooks } from '../../mcp-server/protocolSession.js';
|
|
10
|
-
import { type TaskToolDefinition } from '../../mcp-server/tasks/utils/taskToolDefinition.js';
|
|
5
|
+
import type { McpServer } from '@modelcontextprotocol/server';
|
|
6
|
+
import type { ResourceSubscriptions } from '../../mcp-server/notifications.js';
|
|
11
7
|
import type { AnyToolDefinition } from '../../mcp-server/tools/utils/toolDefinition.js';
|
|
12
8
|
import { type HandlerFactoryServices } from '../../mcp-server/tools/utils/toolHandlerFactory.js';
|
|
13
|
-
/**
|
|
14
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Union of all accepted tool definition shapes.
|
|
11
|
+
*
|
|
12
|
+
* A single shape since 0.12.0 — the experimental tasks surface (SEP-1686) was
|
|
13
|
+
* removed from the SDK in v2, taking `TaskToolDefinition` with it.
|
|
14
|
+
*/
|
|
15
|
+
export type AnyToolDef = AnyToolDefinition;
|
|
15
16
|
export declare class ToolRegistry {
|
|
16
17
|
private toolDefs;
|
|
17
18
|
private services?;
|
|
18
19
|
/** Tracks registered tool names to detect duplicates at startup. */
|
|
19
20
|
private readonly registeredNames;
|
|
20
21
|
constructor(toolDefs: AnyToolDef[], services?: HandlerFactoryServices | undefined);
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
* Automatically detects standard tools, auto-task tools (task: true),
|
|
24
|
-
* and escape-hatch TaskToolDefinitions.
|
|
25
|
-
*/
|
|
26
|
-
registerAll(server: McpServer, protocolSession?: ProtocolSessionHooks): Promise<void>;
|
|
22
|
+
/** Registers all tool definitions with the provided McpServer instance. */
|
|
23
|
+
registerAll(server: McpServer, subscriptions?: ResourceSubscriptions): Promise<void>;
|
|
27
24
|
/** Throws at startup if a tool with the same name was already registered. */
|
|
28
25
|
private assertUniqueName;
|
|
29
26
|
private deriveTitleFromName;
|
|
@@ -32,24 +29,5 @@ export declare class ToolRegistry {
|
|
|
32
29
|
* Requires `services` to have been passed to the constructor for Context creation.
|
|
33
30
|
*/
|
|
34
31
|
private registerTool;
|
|
35
|
-
/**
|
|
36
|
-
* Registers a tool with `task: true` via the experimental Tasks API.
|
|
37
|
-
* Auto-generates task handlers from the definition's `handler` function.
|
|
38
|
-
* The framework manages the full task lifecycle: create, background run, store result.
|
|
39
|
-
*/
|
|
40
|
-
private registerAutoTaskTool;
|
|
41
|
-
/**
|
|
42
|
-
* Runs a tool handler as a background task.
|
|
43
|
-
* Creates Context with `progress` and `signal`, stores result/error on completion.
|
|
44
|
-
* Enforces a deadline matching the task entry TTL to prevent leaked resources.
|
|
45
|
-
*/
|
|
46
|
-
private runAutoTaskHandler;
|
|
47
|
-
/**
|
|
48
|
-
* Registers a task-based tool with the MCP server via the experimental Tasks API.
|
|
49
|
-
* Task tools support long-running async operations with polling for status and results.
|
|
50
|
-
*
|
|
51
|
-
* @experimental
|
|
52
|
-
*/
|
|
53
|
-
private registerTaskTool;
|
|
54
32
|
}
|
|
55
33
|
//# sourceMappingURL=tool-registration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,8BAA8B,CAAC;AAE5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,gDAAgD,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE3C,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ,CAAC;IALnB,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,CAAC,EAAE,sBAAsB,YAAA,EACvC;IAEJ,2EAA2E;IAC9D,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC,IAAI,CAAC,CA6Cf;IAED,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;YACW,YAAY;CAiD3B"}
|