@cyanheads/mcp-ts-core 0.1.0-beta.12
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/CLAUDE.md +583 -0
- package/LICENSE +201 -0
- package/README.md +287 -0
- package/biome.json +103 -0
- package/dist/app.d.ts +82 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +222 -0
- package/dist/app.js.map +1 -0
- package/dist/cli/init.d.ts +8 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +161 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/config/index.d.ts +349 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +464 -0
- package/dist/config/index.js.map +1 -0
- package/dist/context.d.ts +119 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +144 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/prompts/prompt-registration.d.ts +33 -0
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -0
- package/dist/mcp-server/prompts/prompt-registration.js +91 -0
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts +49 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts.map +1 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.js +39 -0
- package/dist/mcp-server/prompts/utils/newPromptDefinition.js.map +1 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +37 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.js +2 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -0
- package/dist/mcp-server/resources/resource-registration.d.ts +27 -0
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -0
- package/dist/mcp-server/resources/resource-registration.js +85 -0
- package/dist/mcp-server/resources/resource-registration.js.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts +84 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.js +40 -0
- package/dist/mcp-server/resources/utils/newResourceDefinition.js.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts +32 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js +103 -0
- package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +94 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.js +2 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +111 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -0
- package/dist/mcp-server/roots/roots-registration.d.ts +22 -0
- package/dist/mcp-server/roots/roots-registration.d.ts.map +1 -0
- package/dist/mcp-server/roots/roots-registration.js +25 -0
- package/dist/mcp-server/roots/roots-registration.js.map +1 -0
- package/dist/mcp-server/server.d.ts +34 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +62 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +42 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +70 -0
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +1 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +109 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +209 -0
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +1 -0
- package/dist/mcp-server/tasks/core/taskManager.d.ts +103 -0
- package/dist/mcp-server/tasks/core/taskManager.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/taskManager.js +144 -0
- package/dist/mcp-server/tasks/core/taskManager.js.map +1 -0
- package/dist/mcp-server/tasks/core/taskTypes.d.ts +11 -0
- package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +1 -0
- package/dist/mcp-server/tasks/core/taskTypes.js +13 -0
- package/dist/mcp-server/tasks/core/taskTypes.js.map +1 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +108 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js +14 -0
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/tool-registration.d.ts +49 -0
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/tool-registration.js +269 -0
- package/dist/mcp-server/tools/tool-registration.js.map +1 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.d.ts +73 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.js +45 -0
- package/dist/mcp-server/tools/utils/newToolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts +33 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.js +107 -0
- package/dist/mcp-server/tools/utils/newToolHandlerFactory.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +118 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.js +2 -0
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +34 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +68 -0
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -0
- package/dist/mcp-server/transports/ITransport.d.ts +15 -0
- package/dist/mcp-server/transports/ITransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/ITransport.js +2 -0
- package/dist/mcp-server/transports/ITransport.js.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.js +43 -0
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +24 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js +69 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +19 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js +2 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +18 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js +64 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts +25 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.js +34 -0
- package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.js +58 -0
- package/dist/mcp-server/transports/auth/lib/claimParser.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.d.ts +25 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.js +30 -0
- package/dist/mcp-server/transports/auth/lib/withAuth.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +14 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +86 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +14 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +113 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js +112 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts +47 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.js +396 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.js +2 -0
- package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts +21 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js +44 -0
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +33 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.js +54 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -0
- package/dist/mcp-server/transports/http/sessionStore.d.ts +87 -0
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/sessionStore.js +209 -0
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -0
- package/dist/mcp-server/transports/manager.d.ts +22 -0
- package/dist/mcp-server/transports/manager.d.ts.map +1 -0
- package/dist/mcp-server/transports/manager.js +62 -0
- package/dist/mcp-server/transports/manager.js.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +44 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js +63 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
- package/dist/services/graph/core/GraphService.d.ts +205 -0
- package/dist/services/graph/core/GraphService.d.ts.map +1 -0
- package/dist/services/graph/core/GraphService.js +231 -0
- package/dist/services/graph/core/GraphService.js.map +1 -0
- package/dist/services/graph/core/IGraphProvider.d.ts +295 -0
- package/dist/services/graph/core/IGraphProvider.d.ts.map +1 -0
- package/dist/services/graph/core/IGraphProvider.js +8 -0
- package/dist/services/graph/core/IGraphProvider.js.map +1 -0
- package/dist/services/graph/types.d.ts +107 -0
- package/dist/services/graph/types.d.ts.map +1 -0
- package/dist/services/graph/types.js +8 -0
- package/dist/services/graph/types.js.map +1 -0
- package/dist/services/llm/core/ILlmProvider.d.ts +86 -0
- package/dist/services/llm/core/ILlmProvider.d.ts.map +1 -0
- package/dist/services/llm/core/ILlmProvider.js +2 -0
- package/dist/services/llm/core/ILlmProvider.js.map +1 -0
- package/dist/services/llm/providers/openrouter.provider.d.ts +187 -0
- package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -0
- package/dist/services/llm/providers/openrouter.provider.js +302 -0
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -0
- package/dist/services/llm/types.d.ts +16 -0
- package/dist/services/llm/types.d.ts.map +1 -0
- package/dist/services/llm/types.js +9 -0
- package/dist/services/llm/types.js.map +1 -0
- package/dist/services/speech/core/ISpeechProvider.d.ts +92 -0
- package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -0
- package/dist/services/speech/core/ISpeechProvider.js +34 -0
- package/dist/services/speech/core/ISpeechProvider.js.map +1 -0
- package/dist/services/speech/core/SpeechService.d.ts +87 -0
- package/dist/services/speech/core/SpeechService.d.ts.map +1 -0
- package/dist/services/speech/core/SpeechService.js +135 -0
- package/dist/services/speech/core/SpeechService.js.map +1 -0
- package/dist/services/speech/providers/elevenlabs.provider.d.ts +77 -0
- package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -0
- package/dist/services/speech/providers/elevenlabs.provider.js +199 -0
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -0
- package/dist/services/speech/providers/whisper.provider.d.ts +94 -0
- package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -0
- package/dist/services/speech/providers/whisper.provider.js +240 -0
- package/dist/services/speech/providers/whisper.provider.js.map +1 -0
- package/dist/services/speech/types.d.ts +173 -0
- package/dist/services/speech/types.d.ts.map +1 -0
- package/dist/services/speech/types.js +8 -0
- package/dist/services/speech/types.js.map +1 -0
- package/dist/storage/core/IStorageProvider.d.ts +159 -0
- package/dist/storage/core/IStorageProvider.d.ts.map +1 -0
- package/dist/storage/core/IStorageProvider.js +2 -0
- package/dist/storage/core/IStorageProvider.js.map +1 -0
- package/dist/storage/core/StorageService.d.ts +22 -0
- package/dist/storage/core/StorageService.d.ts.map +1 -0
- package/dist/storage/core/StorageService.js +151 -0
- package/dist/storage/core/StorageService.js.map +1 -0
- package/dist/storage/core/storageFactory.d.ts +66 -0
- package/dist/storage/core/storageFactory.d.ts.map +1 -0
- package/dist/storage/core/storageFactory.js +122 -0
- package/dist/storage/core/storageFactory.js.map +1 -0
- package/dist/storage/core/storageValidation.d.ts +77 -0
- package/dist/storage/core/storageValidation.d.ts.map +1 -0
- package/dist/storage/core/storageValidation.js +303 -0
- package/dist/storage/core/storageValidation.js.map +1 -0
- package/dist/storage/providers/cloudflare/d1Provider.d.ts +94 -0
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/d1Provider.js +347 -0
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -0
- package/dist/storage/providers/cloudflare/kvProvider.d.ts +21 -0
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/kvProvider.js +183 -0
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -0
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +28 -0
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -0
- package/dist/storage/providers/cloudflare/r2Provider.js +222 -0
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +20 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +282 -0
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +21 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.js +139 -0
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -0
- package/dist/storage/providers/supabase/supabase.types.d.ts +49 -0
- package/dist/storage/providers/supabase/supabase.types.d.ts.map +1 -0
- package/dist/storage/providers/supabase/supabase.types.js +8 -0
- package/dist/storage/providers/supabase/supabase.types.js.map +1 -0
- package/dist/storage/providers/supabase/supabaseProvider.d.ts +24 -0
- package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -0
- package/dist/storage/providers/supabase/supabaseProvider.js +209 -0
- package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -0
- package/dist/testing/index.d.ts +53 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +132 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types-global/errors.d.ts +83 -0
- package/dist/types-global/errors.d.ts.map +1 -0
- package/dist/types-global/errors.js +113 -0
- package/dist/types-global/errors.js.map +1 -0
- package/dist/utils/formatting/diffFormatter.d.ts +227 -0
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/diffFormatter.js +369 -0
- package/dist/utils/formatting/diffFormatter.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +9 -0
- package/dist/utils/formatting/index.d.ts.map +1 -0
- package/dist/utils/formatting/index.js +9 -0
- package/dist/utils/formatting/index.js.map +1 -0
- package/dist/utils/formatting/markdownBuilder.d.ts +543 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
- package/dist/utils/formatting/markdownBuilder.js +674 -0
- package/dist/utils/formatting/markdownBuilder.js.map +1 -0
- package/dist/utils/formatting/tableFormatter.d.ts +261 -0
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/tableFormatter.js +456 -0
- package/dist/utils/formatting/tableFormatter.js.map +1 -0
- package/dist/utils/formatting/treeFormatter.d.ts +344 -0
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/treeFormatter.js +400 -0
- package/dist/utils/formatting/treeFormatter.js.map +1 -0
- package/dist/utils/internal/encoding.d.ts +42 -0
- package/dist/utils/internal/encoding.d.ts.map +1 -0
- package/dist/utils/internal/encoding.js +87 -0
- package/dist/utils/internal/encoding.js.map +1 -0
- package/dist/utils/internal/error-handler/errorHandler.d.ts +140 -0
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/errorHandler.js +318 -0
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -0
- package/dist/utils/internal/error-handler/helpers.d.ts +98 -0
- package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/helpers.js +214 -0
- package/dist/utils/internal/error-handler/helpers.js.map +1 -0
- package/dist/utils/internal/error-handler/mappings.d.ts +85 -0
- package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/mappings.js +234 -0
- package/dist/utils/internal/error-handler/mappings.js.map +1 -0
- package/dist/utils/internal/error-handler/types.d.ts +160 -0
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -0
- package/dist/utils/internal/error-handler/types.js +6 -0
- package/dist/utils/internal/error-handler/types.js.map +1 -0
- package/dist/utils/internal/health.d.ts +60 -0
- package/dist/utils/internal/health.d.ts.map +1 -0
- package/dist/utils/internal/health.js +46 -0
- package/dist/utils/internal/health.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +300 -0
- package/dist/utils/internal/logger.d.ts.map +1 -0
- package/dist/utils/internal/logger.js +573 -0
- package/dist/utils/internal/logger.js.map +1 -0
- package/dist/utils/internal/performance.d.ts +78 -0
- package/dist/utils/internal/performance.d.ts.map +1 -0
- package/dist/utils/internal/performance.js +227 -0
- package/dist/utils/internal/performance.js.map +1 -0
- package/dist/utils/internal/requestContext.d.ts +200 -0
- package/dist/utils/internal/requestContext.d.ts.map +1 -0
- package/dist/utils/internal/requestContext.js +163 -0
- package/dist/utils/internal/requestContext.js.map +1 -0
- package/dist/utils/internal/runtime.d.ts +49 -0
- package/dist/utils/internal/runtime.d.ts.map +1 -0
- package/dist/utils/internal/runtime.js +90 -0
- package/dist/utils/internal/runtime.js.map +1 -0
- package/dist/utils/internal/startupBanner.d.ts +23 -0
- package/dist/utils/internal/startupBanner.d.ts.map +1 -0
- package/dist/utils/internal/startupBanner.js +34 -0
- package/dist/utils/internal/startupBanner.js.map +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +97 -0
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
- package/dist/utils/metrics/tokenCounter.js +162 -0
- package/dist/utils/metrics/tokenCounter.js.map +1 -0
- package/dist/utils/network/fetchWithTimeout.d.ts +91 -0
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
- package/dist/utils/network/fetchWithTimeout.js +305 -0
- package/dist/utils/network/fetchWithTimeout.js.map +1 -0
- package/dist/utils/pagination/pagination.d.ts +157 -0
- package/dist/utils/pagination/pagination.d.ts.map +1 -0
- package/dist/utils/pagination/pagination.js +191 -0
- package/dist/utils/pagination/pagination.js.map +1 -0
- package/dist/utils/parsing/csvParser.d.ts +84 -0
- package/dist/utils/parsing/csvParser.d.ts.map +1 -0
- package/dist/utils/parsing/csvParser.js +132 -0
- package/dist/utils/parsing/csvParser.js.map +1 -0
- package/dist/utils/parsing/dateParser.d.ts +103 -0
- package/dist/utils/parsing/dateParser.d.ts.map +1 -0
- package/dist/utils/parsing/dateParser.js +142 -0
- package/dist/utils/parsing/dateParser.js.map +1 -0
- package/dist/utils/parsing/frontmatterParser.d.ts +91 -0
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -0
- package/dist/utils/parsing/frontmatterParser.js +163 -0
- package/dist/utils/parsing/frontmatterParser.js.map +1 -0
- package/dist/utils/parsing/index.d.ts +15 -0
- package/dist/utils/parsing/index.d.ts.map +1 -0
- package/dist/utils/parsing/index.js +15 -0
- package/dist/utils/parsing/index.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +115 -0
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
- package/dist/utils/parsing/jsonParser.js +177 -0
- package/dist/utils/parsing/jsonParser.js.map +1 -0
- package/dist/utils/parsing/pdfParser.d.ts +563 -0
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -0
- package/dist/utils/parsing/pdfParser.js +775 -0
- package/dist/utils/parsing/pdfParser.js.map +1 -0
- package/dist/utils/parsing/thinkBlock.d.ts +31 -0
- package/dist/utils/parsing/thinkBlock.d.ts.map +1 -0
- package/dist/utils/parsing/thinkBlock.js +31 -0
- package/dist/utils/parsing/thinkBlock.js.map +1 -0
- package/dist/utils/parsing/xmlParser.d.ts +69 -0
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -0
- package/dist/utils/parsing/xmlParser.js +140 -0
- package/dist/utils/parsing/xmlParser.js.map +1 -0
- package/dist/utils/parsing/yamlParser.d.ts +64 -0
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -0
- package/dist/utils/parsing/yamlParser.js +129 -0
- package/dist/utils/parsing/yamlParser.js.map +1 -0
- package/dist/utils/scheduling/scheduler.d.ts +174 -0
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduling/scheduler.js +248 -0
- package/dist/utils/scheduling/scheduler.js.map +1 -0
- package/dist/utils/security/idGenerator.d.ts +189 -0
- package/dist/utils/security/idGenerator.d.ts.map +1 -0
- package/dist/utils/security/idGenerator.js +301 -0
- package/dist/utils/security/idGenerator.js.map +1 -0
- package/dist/utils/security/index.d.ts +8 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +8 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rateLimiter.d.ts +171 -0
- package/dist/utils/security/rateLimiter.d.ts.map +1 -0
- package/dist/utils/security/rateLimiter.js +294 -0
- package/dist/utils/security/rateLimiter.js.map +1 -0
- package/dist/utils/security/sanitization.d.ts +430 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -0
- package/dist/utils/security/sanitization.js +759 -0
- package/dist/utils/security/sanitization.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +12 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +12 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/instrumentation.d.ts +62 -0
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/utils/telemetry/instrumentation.js +223 -0
- package/dist/utils/telemetry/instrumentation.js.map +1 -0
- package/dist/utils/telemetry/metrics.d.ts +170 -0
- package/dist/utils/telemetry/metrics.d.ts.map +1 -0
- package/dist/utils/telemetry/metrics.js +205 -0
- package/dist/utils/telemetry/metrics.js.map +1 -0
- package/dist/utils/telemetry/semconv.d.ts +147 -0
- package/dist/utils/telemetry/semconv.d.ts.map +1 -0
- package/dist/utils/telemetry/semconv.js +159 -0
- package/dist/utils/telemetry/semconv.js.map +1 -0
- package/dist/utils/telemetry/trace.d.ts +141 -0
- package/dist/utils/telemetry/trace.d.ts.map +1 -0
- package/dist/utils/telemetry/trace.js +193 -0
- package/dist/utils/telemetry/trace.js.map +1 -0
- package/dist/utils/types/guards.d.ts +209 -0
- package/dist/utils/types/guards.d.ts.map +1 -0
- package/dist/utils/types/guards.js +229 -0
- package/dist/utils/types/guards.js.map +1 -0
- package/dist/utils/types/index.d.ts +6 -0
- package/dist/utils/types/index.d.ts.map +1 -0
- package/dist/utils/types/index.js +6 -0
- package/dist/utils/types/index.js.map +1 -0
- package/dist/worker.d.ts +59 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +216 -0
- package/dist/worker.js.map +1 -0
- package/package.json +377 -0
- package/skills/README.md +38 -0
- package/skills/add-export/SKILL.md +49 -0
- package/skills/add-prompt/SKILL.md +97 -0
- package/skills/add-provider/SKILL.md +53 -0
- package/skills/add-resource/SKILL.md +107 -0
- package/skills/add-service/SKILL.md +113 -0
- package/skills/add-tool/SKILL.md +110 -0
- package/skills/api-auth/SKILL.md +173 -0
- package/skills/api-config/SKILL.md +68 -0
- package/skills/api-context/SKILL.md +321 -0
- package/skills/api-errors/SKILL.md +146 -0
- package/skills/api-services/SKILL.md +24 -0
- package/skills/api-services/references/graph.md +124 -0
- package/skills/api-services/references/llm.md +46 -0
- package/skills/api-services/references/speech.md +72 -0
- package/skills/api-testing/SKILL.md +263 -0
- package/skills/api-utils/SKILL.md +106 -0
- package/skills/api-utils/references/formatting.md +237 -0
- package/skills/api-utils/references/parsing.md +263 -0
- package/skills/api-utils/references/security.md +226 -0
- package/skills/api-workers/SKILL.md +165 -0
- package/skills/devcheck/SKILL.md +31 -0
- package/skills/maintenance/SKILL.md +52 -0
- package/skills/migrate-mcp-ts-template/SKILL.md +131 -0
- package/skills/release/SKILL.md +67 -0
- package/skills/setup/SKILL.md +89 -0
- package/skills/walkthrough-init/SKILL.md +50 -0
- package/templates/.env.example +17 -0
- package/templates/AGENTS.md +113 -0
- package/templates/CLAUDE.md +113 -0
- package/templates/_tsconfig.json +33 -0
- package/templates/biome.template.json +43 -0
- package/templates/package.json +26 -0
- package/templates/src/index.ts +16 -0
- package/templates/src/mcp-server/prompts/definitions/echo.prompt.ts +19 -0
- package/templates/src/mcp-server/resources/definitions/echo.resource.ts +30 -0
- package/templates/src/mcp-server/tools/definitions/echo.tool.ts +24 -0
- package/templates/vitest.config.ts +12 -0
- package/tsconfig.base.json +44 -0
- package/vitest.config.base.ts +38 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview New-style resource definition types and `resource()` builder function.
|
|
3
|
+
* Uses the Phase 3 field names: `handler`, `params`, `format`, `auth`.
|
|
4
|
+
* Handler receives `(params, ctx)` instead of `(uri, params, context)`.
|
|
5
|
+
* @module src/mcp-server/resources/utils/newResourceDefinition
|
|
6
|
+
*/
|
|
7
|
+
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
8
|
+
import type { ListResourcesResult, ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import type { ZodObject, ZodRawShape, z } from 'zod';
|
|
10
|
+
import type { Context } from '../../../context.js';
|
|
11
|
+
import type { ResourceAnnotations } from '../../../mcp-server/resources/utils/resourceDefinition.js';
|
|
12
|
+
export type { ResourceAnnotations };
|
|
13
|
+
/** Extra context provided to list() handlers. */
|
|
14
|
+
export type ListExtra = RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
15
|
+
/**
|
|
16
|
+
* New-style resource definition with simplified field names.
|
|
17
|
+
* Handler receives `(params, ctx)` — URI is available on `ctx.uri`.
|
|
18
|
+
*/
|
|
19
|
+
export interface NewResourceDefinition<TParams extends ZodObject<ZodRawShape> = ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape> | undefined = undefined> {
|
|
20
|
+
/** Display/behavior hints. */
|
|
21
|
+
annotations?: ResourceAnnotations;
|
|
22
|
+
/** Required auth scopes. */
|
|
23
|
+
auth?: string[];
|
|
24
|
+
/** LLM-facing description. */
|
|
25
|
+
description: string;
|
|
26
|
+
/** Optional examples for discoverability. */
|
|
27
|
+
examples?: {
|
|
28
|
+
name: string;
|
|
29
|
+
uri: string;
|
|
30
|
+
}[];
|
|
31
|
+
/**
|
|
32
|
+
* Optional formatter mapping output to ReadResourceResult contents.
|
|
33
|
+
* If omitted, a default JSON formatter is used.
|
|
34
|
+
*/
|
|
35
|
+
format?: (result: unknown, meta: {
|
|
36
|
+
uri: URL;
|
|
37
|
+
mimeType: string;
|
|
38
|
+
}) => ReadResourceResult['contents'];
|
|
39
|
+
/**
|
|
40
|
+
* The core handler function. Receives validated params and unified Context.
|
|
41
|
+
* URI is available on `ctx.uri`. Throw McpError on failure.
|
|
42
|
+
*/
|
|
43
|
+
handler: (params: z.infer<TParams>, ctx: Context) => TOutput extends ZodObject<ZodRawShape> ? z.infer<TOutput> | Promise<z.infer<TOutput>> : unknown | Promise<unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Optional provider for resource discovery/listing.
|
|
46
|
+
*/
|
|
47
|
+
list?: (extra: ListExtra) => ListResourcesResult | Promise<ListResourcesResult>;
|
|
48
|
+
/** Default MIME type for response content. */
|
|
49
|
+
mimeType?: string;
|
|
50
|
+
/** Programmatic unique name. Defaults to slugified URI template if omitted. */
|
|
51
|
+
name?: string;
|
|
52
|
+
/** Zod schema for output validation. */
|
|
53
|
+
output?: TOutput;
|
|
54
|
+
/** Zod schema for route/template params. All fields need `.describe()`. */
|
|
55
|
+
params?: TParams;
|
|
56
|
+
/** Human-readable title for UI display. */
|
|
57
|
+
title?: string;
|
|
58
|
+
/** URI template for resource registration (e.g., 'myscheme://{itemId}/data'). */
|
|
59
|
+
uriTemplate: string;
|
|
60
|
+
}
|
|
61
|
+
/** Type-erased union for mixed arrays. */
|
|
62
|
+
export type AnyNewResourceDefinition = NewResourceDefinition<ZodObject<ZodRawShape>, ZodObject<ZodRawShape> | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Type guard: is this a new-style resource definition?
|
|
65
|
+
*/
|
|
66
|
+
export declare function isNewResourceDefinition(def: unknown): def is AnyNewResourceDefinition;
|
|
67
|
+
/**
|
|
68
|
+
* Creates a new-style resource definition with the URI template as first argument.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const myResource = resource('myscheme://{itemId}/data', {
|
|
73
|
+
* description: 'Retrieve item data by ID.',
|
|
74
|
+
* mimeType: 'application/json',
|
|
75
|
+
* params: z.object({ itemId: z.string().describe('Item identifier') }),
|
|
76
|
+
* async handler(params, ctx) {
|
|
77
|
+
* ctx.log.debug('Fetching item', { itemId: params.itemId });
|
|
78
|
+
* return { id: params.itemId, status: 'active' };
|
|
79
|
+
* },
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function resource<TParams extends ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape> | undefined = undefined>(uriTemplate: string, options: Omit<NewResourceDefinition<TParams, TOutput>, 'uriTemplate'>): NewResourceDefinition<TParams, TOutput>;
|
|
84
|
+
//# sourceMappingURL=newResourceDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newResourceDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/newResourceDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview New-style resource definition types and `resource()` builder function.
|
|
3
|
+
* Uses the Phase 3 field names: `handler`, `params`, `format`, `auth`.
|
|
4
|
+
* Handler receives `(params, ctx)` instead of `(uri, params, context)`.
|
|
5
|
+
* @module src/mcp-server/resources/utils/newResourceDefinition
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Type guard: is this a new-style resource definition?
|
|
9
|
+
*/
|
|
10
|
+
export function isNewResourceDefinition(def) {
|
|
11
|
+
return (def !== null &&
|
|
12
|
+
typeof def === 'object' &&
|
|
13
|
+
'handler' in def &&
|
|
14
|
+
typeof def.handler === 'function' &&
|
|
15
|
+
'uriTemplate' in def &&
|
|
16
|
+
!('logic' in def));
|
|
17
|
+
}
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Builder
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new-style resource definition with the URI template as first argument.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const myResource = resource('myscheme://{itemId}/data', {
|
|
27
|
+
* description: 'Retrieve item data by ID.',
|
|
28
|
+
* mimeType: 'application/json',
|
|
29
|
+
* params: z.object({ itemId: z.string().describe('Item identifier') }),
|
|
30
|
+
* async handler(params, ctx) {
|
|
31
|
+
* ctx.log.debug('Fetching item', { itemId: params.itemId });
|
|
32
|
+
* return { id: params.itemId, status: 'active' };
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function resource(uriTemplate, options) {
|
|
38
|
+
return { uriTemplate, ...options };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=newResourceDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newResourceDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/newResourceDefinition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8EH;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,SAAS,IAAI,GAAG;QAChB,OAAQ,GAA+B,CAAC,OAAO,KAAK,UAAU;QAC9D,aAAa,IAAI,GAAG;QACpB,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAClB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CAItB,WAAmB,EACnB,OAAqE;IAErE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Handler factory for new-style resource definitions.
|
|
3
|
+
* Constructs Context (with `uri`), checks inline auth, validates params, formats response.
|
|
4
|
+
* @module src/mcp-server/resources/utils/newResourceHandlerFactory
|
|
5
|
+
*/
|
|
6
|
+
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
7
|
+
import type { Variables } from '@modelcontextprotocol/sdk/shared/uriTemplate.js';
|
|
8
|
+
import type { ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import type { StorageService } from '../../../storage/core/StorageService.js';
|
|
10
|
+
import type { Logger } from '../../../utils/internal/logger.js';
|
|
11
|
+
import type { AnyNewResourceDefinition } from './newResourceDefinition.js';
|
|
12
|
+
type SdkExtra = RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
13
|
+
/** Services required by the handler factory to construct Context. */
|
|
14
|
+
export interface ResourceHandlerFactoryServices {
|
|
15
|
+
logger: Logger;
|
|
16
|
+
storage: StorageService;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates an MCP resource read handler from a new-style resource definition.
|
|
20
|
+
* The returned function is compatible with the MCP SDK's resource callback type.
|
|
21
|
+
*
|
|
22
|
+
* Responsibilities:
|
|
23
|
+
* - Creates RequestContext from SDK context (for tracing)
|
|
24
|
+
* - Creates unified Context with `ctx.uri` set
|
|
25
|
+
* - Checks inline `auth` scopes if defined
|
|
26
|
+
* - Validates params via Zod schema
|
|
27
|
+
* - Formats response via `format` or JSON default
|
|
28
|
+
* - Catches errors and re-throws for the SDK
|
|
29
|
+
*/
|
|
30
|
+
export declare function createNewResourceHandler(def: AnyNewResourceDefinition, services: ResourceHandlerFactoryServices): (uri: URL, variables: Variables, extra: SdkExtra) => Promise<ReadResourceResult>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=newResourceHandlerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newResourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/newResourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAC;AACjF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAM5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAM3E,KAAK,QAAQ,GAAG,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAOvE,qEAAqE;AACrE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB;AAgDD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,8BAA8B,GACvC,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAyDlF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Handler factory for new-style resource definitions.
|
|
3
|
+
* Constructs Context (with `uri`), checks inline auth, validates params, formats response.
|
|
4
|
+
* @module src/mcp-server/resources/utils/newResourceHandlerFactory
|
|
5
|
+
*/
|
|
6
|
+
import { createContext } from '../../../context.js';
|
|
7
|
+
import { withRequiredScopes } from '../../../mcp-server/transports/auth/lib/authUtils.js';
|
|
8
|
+
import { ErrorHandler } from '../../../utils/internal/error-handler/errorHandler.js';
|
|
9
|
+
import { requestContextService } from '../../../utils/internal/requestContext.js';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Default formatter
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
function defaultResponseFormatter(result, meta) {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
uri: meta.uri.href,
|
|
17
|
+
text: JSON.stringify(result, null, 2),
|
|
18
|
+
mimeType: meta.mimeType,
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Capability detection helpers
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
function wrapElicit(sdkContext) {
|
|
26
|
+
if (typeof sdkContext.elicitInput !== 'function')
|
|
27
|
+
return;
|
|
28
|
+
const fn = sdkContext.elicitInput;
|
|
29
|
+
return (msg, schema) => fn({ message: msg, requestedSchema: schema });
|
|
30
|
+
}
|
|
31
|
+
function wrapSample(sdkContext) {
|
|
32
|
+
if (typeof sdkContext.createMessage !== 'function')
|
|
33
|
+
return;
|
|
34
|
+
const fn = sdkContext.createMessage;
|
|
35
|
+
return (msgs, opts) => fn({ messages: msgs, ...opts });
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Factory
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Creates an MCP resource read handler from a new-style resource definition.
|
|
42
|
+
* The returned function is compatible with the MCP SDK's resource callback type.
|
|
43
|
+
*
|
|
44
|
+
* Responsibilities:
|
|
45
|
+
* - Creates RequestContext from SDK context (for tracing)
|
|
46
|
+
* - Creates unified Context with `ctx.uri` set
|
|
47
|
+
* - Checks inline `auth` scopes if defined
|
|
48
|
+
* - Validates params via Zod schema
|
|
49
|
+
* - Formats response via `format` or JSON default
|
|
50
|
+
* - Catches errors and re-throws for the SDK
|
|
51
|
+
*/
|
|
52
|
+
export function createNewResourceHandler(def, services) {
|
|
53
|
+
const mimeType = def.mimeType ?? 'application/json';
|
|
54
|
+
const formatter = def.format ?? defaultResponseFormatter;
|
|
55
|
+
return async (uri, variables, callContext) => {
|
|
56
|
+
const sdkContext = callContext;
|
|
57
|
+
const sdkCaps = callContext;
|
|
58
|
+
const sessionId = typeof sdkContext?.sessionId === 'string' ? sdkContext.sessionId : undefined;
|
|
59
|
+
const appContext = requestContextService.createRequestContext({
|
|
60
|
+
parentContext: {
|
|
61
|
+
...(typeof sdkContext?.requestId === 'string' ? { requestId: sdkContext.requestId } : {}),
|
|
62
|
+
...(sessionId ? { sessionId } : {}),
|
|
63
|
+
},
|
|
64
|
+
operation: 'HandleResourceRead',
|
|
65
|
+
additionalContext: {
|
|
66
|
+
resourceName: def.name ?? def.uriTemplate,
|
|
67
|
+
resourceUri: uri.href,
|
|
68
|
+
sessionId,
|
|
69
|
+
inputParams: variables,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
try {
|
|
73
|
+
// Check inline auth scopes
|
|
74
|
+
if (def.auth && def.auth.length > 0) {
|
|
75
|
+
withRequiredScopes(def.auth, appContext);
|
|
76
|
+
}
|
|
77
|
+
// Validate params via schema if defined
|
|
78
|
+
const validatedParams = def.params ? def.params.parse(variables) : variables;
|
|
79
|
+
// Construct Context with uri set
|
|
80
|
+
const ctx = createContext({
|
|
81
|
+
appContext,
|
|
82
|
+
logger: services.logger,
|
|
83
|
+
storage: services.storage,
|
|
84
|
+
signal: sdkContext.signal,
|
|
85
|
+
elicit: wrapElicit(sdkCaps),
|
|
86
|
+
sample: wrapSample(sdkCaps),
|
|
87
|
+
uri,
|
|
88
|
+
});
|
|
89
|
+
const result = await Promise.resolve(def.handler(validatedParams, ctx));
|
|
90
|
+
const contents = formatter(result, { uri, mimeType });
|
|
91
|
+
return { contents };
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
// Re-throw for the SDK to catch (same pattern as legacy resource handler)
|
|
95
|
+
throw ErrorHandler.handleError(error, {
|
|
96
|
+
operation: `resource:${def.name ?? def.uriTemplate}:readHandler`,
|
|
97
|
+
context: appContext,
|
|
98
|
+
input: { uri: uri.href, variables },
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=newResourceHandlerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newResourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/newResourceHandlerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Defines the standard structure for a declarative resource definition.
|
|
3
|
+
* This mirrors the ToolDefinition pattern to provide a consistent, modern
|
|
4
|
+
* architecture for MCP resources, separating pure logic from handler concerns.
|
|
5
|
+
* @module src/mcp-server/resources/utils/resourceDefinition
|
|
6
|
+
*/
|
|
7
|
+
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
8
|
+
import type { ListResourcesResult, ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import type { ZodObject, ZodRawShape, z } from 'zod';
|
|
10
|
+
import type { RequestContext } from '../../../utils/internal/requestContext.js';
|
|
11
|
+
/**
|
|
12
|
+
* Optional annotations providing clients additional context about a resource.
|
|
13
|
+
* Mirrors the MCP SDK's Annotations type.
|
|
14
|
+
*/
|
|
15
|
+
export interface ResourceAnnotations {
|
|
16
|
+
/** Describes who the intended customer of this object or data is. */
|
|
17
|
+
audience?: ('user' | 'assistant')[];
|
|
18
|
+
/** The timestamp of the last modification, as an ISO 8601 string. */
|
|
19
|
+
lastModified?: string;
|
|
20
|
+
/** Describes how important this data is (0 = least, 1 = most). */
|
|
21
|
+
priority?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Represents a complete, self-contained definition of an MCP resource.
|
|
25
|
+
*/
|
|
26
|
+
export interface ResourceDefinition<TParamsSchema extends ZodObject<ZodRawShape>, TOutputSchema extends ZodObject<ZodRawShape> | undefined = undefined> {
|
|
27
|
+
/** Optional display/behavior hints. */
|
|
28
|
+
annotations?: ResourceAnnotations;
|
|
29
|
+
/** A concise description of what the resource returns. */
|
|
30
|
+
description: string;
|
|
31
|
+
/** Optional examples to improve discoverability. */
|
|
32
|
+
examples?: {
|
|
33
|
+
name: string;
|
|
34
|
+
uri: string;
|
|
35
|
+
}[];
|
|
36
|
+
/**
|
|
37
|
+
* Optional provider for list results. If provided, it's used for resource discovery.
|
|
38
|
+
* The `extra` parameter provides access to request metadata including pagination cursor
|
|
39
|
+
* via `extra._meta?.cursor` or from the request params.
|
|
40
|
+
* Return value should conform to the MCP SDK's ListResourcesResult, which can include
|
|
41
|
+
* a `nextCursor` field for pagination support per MCP spec 2025-06-18.
|
|
42
|
+
*
|
|
43
|
+
* @param extra - Request handler context including signal, authInfo, sessionId, and request metadata
|
|
44
|
+
* @returns ListResourcesResult with resources array and optional nextCursor for pagination
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { extractCursor, paginateArray } from '../../../utils/pagination/pagination.js';
|
|
49
|
+
*
|
|
50
|
+
* list: (extra) => {
|
|
51
|
+
* const allResources = [...] // Your full resource list
|
|
52
|
+
* const cursor = extractCursor(extra._meta);
|
|
53
|
+
* const { items, nextCursor } = paginateArray(
|
|
54
|
+
* allResources,
|
|
55
|
+
* cursor,
|
|
56
|
+
* 50, // defaultPageSize
|
|
57
|
+
* 1000, // maxPageSize
|
|
58
|
+
* context
|
|
59
|
+
* );
|
|
60
|
+
* return {
|
|
61
|
+
* resources: items,
|
|
62
|
+
* ...(nextCursor && { nextCursor }),
|
|
63
|
+
* };
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
list?: (extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => ListResourcesResult | Promise<ListResourcesResult>;
|
|
68
|
+
/**
|
|
69
|
+
* The pure, stateless core logic for the resource read operation.
|
|
70
|
+
* MUST NOT contain try/catch. Throw McpError on failure.
|
|
71
|
+
*/
|
|
72
|
+
logic: (uri: URL, params: z.infer<TParamsSchema>, context: RequestContext) => TOutputSchema extends ZodObject<ZodRawShape> ? z.infer<TOutputSchema> | Promise<z.infer<TOutputSchema>> : unknown;
|
|
73
|
+
/** Default mime type for the response content. */
|
|
74
|
+
mimeType?: string;
|
|
75
|
+
/** The programmatic, unique name for the resource (e.g., 'echo-resource'). */
|
|
76
|
+
name: string;
|
|
77
|
+
/** Optional Zod schema describing the successful output payload. */
|
|
78
|
+
outputSchema?: TOutputSchema;
|
|
79
|
+
/** Zod schema validating the route/template params received by the handler. */
|
|
80
|
+
paramsSchema: TParamsSchema;
|
|
81
|
+
/**
|
|
82
|
+
* Optional formatter mapping the logic result into MCP ReadResourceResult.contents entries.
|
|
83
|
+
* If omitted, a default JSON formatter is applied using `mimeType`.
|
|
84
|
+
*/
|
|
85
|
+
responseFormatter?: (result: unknown, meta: {
|
|
86
|
+
uri: URL;
|
|
87
|
+
mimeType: string;
|
|
88
|
+
}) => ReadResourceResult['contents'];
|
|
89
|
+
/** Optional, human-readable title for display in UIs. */
|
|
90
|
+
title?: string;
|
|
91
|
+
/** The URI template used to register the resource (e.g., 'echo://{message}'). */
|
|
92
|
+
uriTemplate: string;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=resourceDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceDefinition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;IACpC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,aAAa,SAAS,SAAS,CAAC,WAAW,CAAC,EAC5C,aAAa,SAAS,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,SAAS;IAEpE,uCAAuC;IACvC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,CAAC,EAAE,CACL,KAAK,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,KAC1D,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD;;;OAGG;IACH,KAAK,EAAE,CACL,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAC9B,OAAO,EAAE,cAAc,KACpB,aAAa,SAAS,SAAS,CAAC,WAAW,CAAC,GAC7C,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GACxD,OAAO,CAAC;IACZ,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,+EAA+E;IAC/E,YAAY,EAAE,aAAa,CAAC;IAC5B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KACjC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACpC,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview A factory for registering standardized MCP resources from definitions.
|
|
3
|
+
* Encapsulates context creation, error handling, and response formatting, keeping
|
|
4
|
+
* resource logic pure and stateless.
|
|
5
|
+
* @module src/mcp-server/resources/utils/resourceHandlerFactory
|
|
6
|
+
*/
|
|
7
|
+
import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import type { ZodObject, ZodRawShape } from 'zod';
|
|
9
|
+
import type { ResourceDefinition } from '../../../mcp-server/resources/utils/resourceDefinition.js';
|
|
10
|
+
/**
|
|
11
|
+
* Registers a single resource definition with the provided MCP server.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerResource<TParamsSchema extends ZodObject<ZodRawShape>, TOutputSchema extends ZodObject<ZodRawShape> | undefined = undefined>(server: McpServer, def: ResourceDefinition<TParamsSchema, TOutputSchema>): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=resourceHandlerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAE3F,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAK,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AA8D7F;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,SAAS,SAAS,CAAC,WAAW,CAAC,EAC5C,aAAa,SAAS,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,SAAS,EACpE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFzF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview A factory for registering standardized MCP resources from definitions.
|
|
3
|
+
* Encapsulates context creation, error handling, and response formatting, keeping
|
|
4
|
+
* resource logic pure and stateless.
|
|
5
|
+
* @module src/mcp-server/resources/utils/resourceHandlerFactory
|
|
6
|
+
*/
|
|
7
|
+
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import { JsonRpcErrorCode, McpError } from '../../../types-global/errors.js';
|
|
9
|
+
import { ErrorHandler } from '../../../utils/internal/error-handler/errorHandler.js';
|
|
10
|
+
import { logger } from '../../../utils/internal/logger.js';
|
|
11
|
+
import { requestContextService } from '../../../utils/internal/requestContext.js';
|
|
12
|
+
function defaultResponseFormatter(result, meta) {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
uri: meta.uri.href,
|
|
16
|
+
text: JSON.stringify(result),
|
|
17
|
+
mimeType: meta.mimeType,
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
function ensureResourceContents(contents, handlerContext, resourceName, uri) {
|
|
22
|
+
if (!Array.isArray(contents)) {
|
|
23
|
+
throw new McpError(JsonRpcErrorCode.InternalError, 'Resource formatter must return an array of contents.', {
|
|
24
|
+
requestId: handlerContext.requestId,
|
|
25
|
+
resourceName,
|
|
26
|
+
uri: uri.href,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// We perform a shallow validation here. A full Zod schema validation would be safer
|
|
30
|
+
// but might be too slow for every resource call. This is a pragmatic trade-off.
|
|
31
|
+
for (const item of contents) {
|
|
32
|
+
if (typeof item !== 'object' || item === null || !('uri' in item)) {
|
|
33
|
+
throw new McpError(JsonRpcErrorCode.InternalError, 'Invalid content block found in resource formatter output. Each item must be an object with a `uri` property.', {
|
|
34
|
+
requestId: handlerContext.requestId,
|
|
35
|
+
resourceName,
|
|
36
|
+
uri: uri.href,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return contents;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Registers a single resource definition with the provided MCP server.
|
|
44
|
+
*/
|
|
45
|
+
export async function registerResource(server, def) {
|
|
46
|
+
const resourceName = def.name;
|
|
47
|
+
const registrationContext = requestContextService.createRequestContext({
|
|
48
|
+
operation: 'RegisterResource',
|
|
49
|
+
additionalContext: { resourceName },
|
|
50
|
+
});
|
|
51
|
+
logger.info(`Registering resource: '${resourceName}'`, registrationContext);
|
|
52
|
+
await ErrorHandler.tryCatch(() => {
|
|
53
|
+
const template = new ResourceTemplate(def.uriTemplate, {
|
|
54
|
+
list: def.list,
|
|
55
|
+
});
|
|
56
|
+
const mimeType = def.mimeType ?? 'application/json';
|
|
57
|
+
const formatter = def.responseFormatter ?? defaultResponseFormatter;
|
|
58
|
+
const title = def.title ?? resourceName;
|
|
59
|
+
server.resource(resourceName, template, {
|
|
60
|
+
title,
|
|
61
|
+
description: def.description,
|
|
62
|
+
mimeType,
|
|
63
|
+
...(def.examples && { examples: def.examples }),
|
|
64
|
+
...(def.annotations && { annotations: def.annotations }),
|
|
65
|
+
}, async (uri, params, callContext) => {
|
|
66
|
+
const sessionId = typeof callContext?.sessionId === 'string' ? callContext.sessionId : undefined;
|
|
67
|
+
// Extract only plain-data fields from callContext — spreading the raw SDK
|
|
68
|
+
// object copies native objects (AbortSignal) that crash Pino serialization.
|
|
69
|
+
const handlerContext = requestContextService.createRequestContext({
|
|
70
|
+
parentContext: {
|
|
71
|
+
...(typeof callContext?.requestId === 'string'
|
|
72
|
+
? { requestId: callContext.requestId }
|
|
73
|
+
: {}),
|
|
74
|
+
...(sessionId ? { sessionId } : {}),
|
|
75
|
+
},
|
|
76
|
+
operation: 'HandleResourceRead',
|
|
77
|
+
additionalContext: {
|
|
78
|
+
resourceUri: uri.href,
|
|
79
|
+
sessionId,
|
|
80
|
+
inputParams: params,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
try {
|
|
84
|
+
const parsedParams = def.paramsSchema.parse(params);
|
|
85
|
+
const responseData = (await def.logic(uri, parsedParams, handlerContext));
|
|
86
|
+
const rawContents = formatter(responseData, {
|
|
87
|
+
uri,
|
|
88
|
+
mimeType,
|
|
89
|
+
});
|
|
90
|
+
const contents = ensureResourceContents(rawContents, handlerContext, resourceName, uri);
|
|
91
|
+
const readResult = { contents };
|
|
92
|
+
return readResult;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// Centralized handler re-throws the error for the SDK to catch
|
|
96
|
+
throw ErrorHandler.handleError(error, {
|
|
97
|
+
operation: `resource:${resourceName}:readHandler`,
|
|
98
|
+
context: handlerContext,
|
|
99
|
+
input: { uri: uri.href, params },
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
logger.notice(`Resource '${resourceName}' registered successfully.`, registrationContext);
|
|
104
|
+
}, {
|
|
105
|
+
operation: `RegisteringResource_${resourceName}`,
|
|
106
|
+
context: registrationContext,
|
|
107
|
+
errorCode: JsonRpcErrorCode.InitializationFailed,
|
|
108
|
+
critical: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=resourceHandlerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Service for implementing MCP roots capability.
|
|
3
|
+
* Roots provide filesystem/workspace context awareness for the server.
|
|
4
|
+
*
|
|
5
|
+
* MCP Roots Specification:
|
|
6
|
+
* @see {@link https://modelcontextprotocol.io/specification/2025-06-18/basic/roots | MCP Roots}
|
|
7
|
+
* @module src/mcp-server/roots/roots-registration
|
|
8
|
+
*/
|
|
9
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
10
|
+
import type { logger as defaultLogger } from '../../utils/internal/logger.js';
|
|
11
|
+
export declare class RootsRegistry {
|
|
12
|
+
private logger;
|
|
13
|
+
constructor(logger: typeof defaultLogger);
|
|
14
|
+
/**
|
|
15
|
+
* Registers roots handlers on the given MCP server.
|
|
16
|
+
* Note: In MCP, roots are typically provided BY THE CLIENT to the server.
|
|
17
|
+
* This implementation provides a placeholder for demonstration.
|
|
18
|
+
* In production, roots would be received from the client via client.listRoots().
|
|
19
|
+
*/
|
|
20
|
+
registerAll(_server: McpServer): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=roots-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roots-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/roots/roots-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG1E,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,OAAO,aAAa;IAEhD;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CActC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
2
|
+
export class RootsRegistry {
|
|
3
|
+
logger;
|
|
4
|
+
constructor(logger) {
|
|
5
|
+
this.logger = logger;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Registers roots handlers on the given MCP server.
|
|
9
|
+
* Note: In MCP, roots are typically provided BY THE CLIENT to the server.
|
|
10
|
+
* This implementation provides a placeholder for demonstration.
|
|
11
|
+
* In production, roots would be received from the client via client.listRoots().
|
|
12
|
+
*/
|
|
13
|
+
registerAll(_server) {
|
|
14
|
+
const context = requestContextService.createRequestContext({
|
|
15
|
+
operation: 'RootsRegistry.registerAll',
|
|
16
|
+
});
|
|
17
|
+
this.logger.debug('Roots capability enabled (client-provided roots)', context);
|
|
18
|
+
// Note: The MCP SDK handles roots automatically via the client-server protocol.
|
|
19
|
+
// Servers receive roots from clients, not the other way around.
|
|
20
|
+
// This is just a placeholder to demonstrate the capability is enabled.
|
|
21
|
+
// To access roots in your tools, use sdkContext to query the client.
|
|
22
|
+
this.logger.info('Roots capability registered successfully', context);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=roots-registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roots-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/roots/roots-registration.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAEpD;;;;;OAKG;IACH,WAAW,CAAC,OAAkB;QAC5B,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,2BAA2B;SACvC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,OAAO,CAAC,CAAC;QAE/E,gFAAgF;QAChF,gEAAgE;QAChE,uEAAuE;QACvE,qEAAqE;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Factory for creating configured MCP server instances.
|
|
3
|
+
* Creates an McpServer with identity, capabilities, and registered
|
|
4
|
+
* tools/resources/prompts/roots from the provided registries.
|
|
5
|
+
*
|
|
6
|
+
* MCP Specification References:
|
|
7
|
+
* - Lifecycle: https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle
|
|
8
|
+
* - Overview (Capabilities): https://modelcontextprotocol.io/specification/2025-06-18/basic/index
|
|
9
|
+
* - Transports: https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
|
|
10
|
+
* @module src/mcp-server/server
|
|
11
|
+
*/
|
|
12
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
13
|
+
import type { AppConfig } from '../config/index.js';
|
|
14
|
+
import type { PromptRegistry } from '../mcp-server/prompts/prompt-registration.js';
|
|
15
|
+
import type { ResourceRegistry } from '../mcp-server/resources/resource-registration.js';
|
|
16
|
+
import type { RootsRegistry } from '../mcp-server/roots/roots-registration.js';
|
|
17
|
+
import type { ToolRegistry } from '../mcp-server/tools/tool-registration.js';
|
|
18
|
+
/** Dependencies required to create an MCP server instance. */
|
|
19
|
+
export interface McpServerDeps {
|
|
20
|
+
config: AppConfig;
|
|
21
|
+
promptRegistry: PromptRegistry;
|
|
22
|
+
resourceRegistry: ResourceRegistry;
|
|
23
|
+
rootsRegistry: RootsRegistry;
|
|
24
|
+
toolRegistry: ToolRegistry;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates and configures a new instance of the `McpServer`.
|
|
28
|
+
* Registries are provided directly — no DI container resolution.
|
|
29
|
+
*
|
|
30
|
+
* @returns A promise resolving with the configured `McpServer` instance.
|
|
31
|
+
* @throws {McpError} If any resource or tool registration fails.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createMcpServerInstance(deps: McpServerDeps): Promise<McpServer>;
|
|
34
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,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;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAI5E,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAmDrF"}
|