github-to-mcp-monorepo 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +8 -0
- package/.github/CODEOWNERS +6 -0
- package/.husky/pre-commit +1 -0
- package/.nvmrc +1 -0
- package/.prettierignore +5 -0
- package/.prettierrc +7 -0
- package/.vscode/settings.json +4 -0
- package/ARCHITECTURE.md +1429 -0
- package/CHANGELOG.md +167 -0
- package/CONTRIBUTING.md +327 -0
- package/LICENSE +201 -0
- package/README.md +1028 -0
- package/SECURITY.md +248 -0
- package/VISUAL_GUIDE.md +437 -0
- package/apps/vscode/IMPLEMENTATION.md +480 -0
- package/apps/vscode/README.md +248 -0
- package/apps/vscode/package.json +381 -0
- package/apps/vscode/resources/icon.png +0 -0
- package/apps/vscode/resources/icon.svg +5 -0
- package/apps/vscode/src/commands/browseRegistry.ts +211 -0
- package/apps/vscode/src/commands/configureClaudeDesktop.ts +332 -0
- package/apps/vscode/src/commands/convert.ts +82 -0
- package/apps/vscode/src/commands/convertCurrentRepo.ts +109 -0
- package/apps/vscode/src/commands/convertFromUrl.ts +138 -0
- package/apps/vscode/src/commands/index.ts +121 -0
- package/apps/vscode/src/commands/validate.ts +197 -0
- package/apps/vscode/src/extension.ts +464 -0
- package/apps/vscode/src/global.d.ts +36 -0
- package/apps/vscode/src/test/extension.test.ts +73 -0
- package/apps/vscode/src/utils/file-generator.ts +529 -0
- package/apps/vscode/src/utils/github-api.ts +335 -0
- package/apps/vscode/src/utils/index.ts +29 -0
- package/apps/vscode/src/utils/mcp-config.ts +334 -0
- package/apps/vscode/src/utils/storage.ts +87 -0
- package/apps/vscode/src/views/McpServersTreeView.ts +160 -0
- package/apps/vscode/src/views/OutputChannelView.ts +195 -0
- package/apps/vscode/src/views/StatusBarItem.ts +251 -0
- package/apps/vscode/src/views/ToolsExplorerView.ts +314 -0
- package/apps/vscode/src/views/historyProvider.ts +75 -0
- package/apps/vscode/src/views/index.ts +12 -0
- package/apps/vscode/src/views/resultsPanel.ts +330 -0
- package/apps/vscode/src/webviews/ConversionPanel.ts +350 -0
- package/apps/vscode/src/webviews/ToolDetailsPanel.ts +448 -0
- package/apps/vscode/src/webviews/index.ts +9 -0
- package/apps/vscode/src/webviews/webview-ui/styles.ts +492 -0
- package/apps/vscode/tsconfig.json +20 -0
- package/apps/web/PLAYGROUND_GUIDE.md +499 -0
- package/apps/web/README.md +505 -0
- package/apps/web/app/api/convert/route.ts +100 -0
- package/apps/web/app/api/convert/stream/route.ts +198 -0
- package/apps/web/app/api/deploy/route.ts +157 -0
- package/apps/web/app/api/edge/route.ts +308 -0
- package/apps/web/app/api/export-docker/route.ts +284 -0
- package/apps/web/app/api/generate-openapi/route.ts +119 -0
- package/apps/web/app/api/mcp/[serverId]/route.ts +263 -0
- package/apps/web/app/api/playground/connect/route.ts +143 -0
- package/apps/web/app/api/playground/disconnect/route.ts +78 -0
- package/apps/web/app/api/playground/execute/route.ts +135 -0
- package/apps/web/app/api/playground/sessions/route.ts +103 -0
- package/apps/web/app/api/playground/tools/route.ts +117 -0
- package/apps/web/app/api/playground/v2/connect/route.ts +96 -0
- package/apps/web/app/api/playground/v2/disconnect/route.ts +88 -0
- package/apps/web/app/api/playground/v2/health/route.ts +80 -0
- package/apps/web/app/api/playground/v2/prompts/route.ts +160 -0
- package/apps/web/app/api/playground/v2/resources/route.ts +159 -0
- package/apps/web/app/api/playground/v2/sessions/route.ts +184 -0
- package/apps/web/app/api/playground/v2/tools/route.ts +167 -0
- package/apps/web/app/api/stream/route.ts +232 -0
- package/apps/web/app/batch/BatchConvertClient.tsx +190 -0
- package/apps/web/app/batch/page.tsx +37 -0
- package/apps/web/app/convert/page.tsx +269 -0
- package/apps/web/app/dashboard/page.tsx +380 -0
- package/apps/web/app/globals.css +622 -0
- package/apps/web/app/layout.tsx +120 -0
- package/apps/web/app/manifest.ts +31 -0
- package/apps/web/app/opengraph-image.tsx +112 -0
- package/apps/web/app/page.old.tsx +924 -0
- package/apps/web/app/page.tsx +77 -0
- package/apps/web/app/playground/page.tsx +306 -0
- package/apps/web/app/playground/v2/error.tsx +163 -0
- package/apps/web/app/playground/v2/layout.tsx +58 -0
- package/apps/web/app/playground/v2/loading.tsx +152 -0
- package/apps/web/app/playground/v2/page.tsx +644 -0
- package/apps/web/app/playground/v2/providers.tsx +214 -0
- package/apps/web/app/playground/v2/use-shortcuts.ts +209 -0
- package/apps/web/app/playground/v2/use-url-state.ts +296 -0
- package/apps/web/app/providers.tsx +22 -0
- package/apps/web/app/sitemap.ts +32 -0
- package/apps/web/app/twitter-image.tsx +112 -0
- package/apps/web/components/BranchSelector.tsx +401 -0
- package/apps/web/components/ClaudeConfigExport.tsx +226 -0
- package/apps/web/components/Features.tsx +84 -0
- package/apps/web/components/Footer.tsx +119 -0
- package/apps/web/components/GenerationProgress.tsx +248 -0
- package/apps/web/components/GithubUrlInput.tsx +483 -0
- package/apps/web/components/Header.tsx +175 -0
- package/apps/web/components/Hero.tsx +117 -0
- package/apps/web/components/HowItWorks.tsx +119 -0
- package/apps/web/components/InstallBanner.tsx +158 -0
- package/apps/web/components/Logo.tsx +116 -0
- package/apps/web/components/ParticleBackground.tsx +105 -0
- package/apps/web/components/Playground.tsx +472 -0
- package/apps/web/components/PlaygroundToolTester.tsx +410 -0
- package/apps/web/components/ProductCards.tsx +179 -0
- package/apps/web/components/SplitView.tsx +194 -0
- package/apps/web/components/ToolFilter.tsx +260 -0
- package/apps/web/components/ToolList.tsx +325 -0
- package/apps/web/components/batch/BatchConvert.tsx +785 -0
- package/apps/web/components/batch/index.ts +7 -0
- package/apps/web/components/convert/ConfigTabs.tsx +230 -0
- package/apps/web/components/convert/ConversionResult.tsx +482 -0
- package/apps/web/components/convert/InlinePlayground.tsx +259 -0
- package/apps/web/components/convert/LoadingSteps.tsx +311 -0
- package/apps/web/components/convert/OneClickInstall.tsx +224 -0
- package/apps/web/components/convert/ToolCard.tsx +189 -0
- package/apps/web/components/convert/TryInPlayground.tsx +242 -0
- package/apps/web/components/convert/index.ts +12 -0
- package/apps/web/components/deploy/DeployButton.tsx +369 -0
- package/apps/web/components/deploy/index.ts +7 -0
- package/apps/web/components/docker/DockerExport.tsx +690 -0
- package/apps/web/components/docker/index.ts +7 -0
- package/apps/web/components/install/OneClickInstall.tsx +676 -0
- package/apps/web/components/install/index.ts +7 -0
- package/apps/web/components/playground/CapabilityTabs.tsx +150 -0
- package/apps/web/components/playground/ConnectionStatusV2.tsx +322 -0
- package/apps/web/components/playground/EmptyStates.tsx +305 -0
- package/apps/web/components/playground/ExecutionLog.tsx +260 -0
- package/apps/web/components/playground/ExecutionLogV2.tsx +378 -0
- package/apps/web/components/playground/JsonViewer.tsx +388 -0
- package/apps/web/components/playground/PlaygroundLayout.tsx +244 -0
- package/apps/web/components/playground/PromptsPanel.tsx +385 -0
- package/apps/web/components/playground/ResourcesPanel.tsx +378 -0
- package/apps/web/components/playground/SchemaForm.tsx +477 -0
- package/apps/web/components/playground/ServerStatus.tsx +151 -0
- package/apps/web/components/playground/ShareButton.tsx +239 -0
- package/apps/web/components/playground/ToolsPanel.tsx +309 -0
- package/apps/web/components/playground/TransportConfigurator.tsx +563 -0
- package/apps/web/components/playground/index.ts +74 -0
- package/apps/web/components/playground/types.ts +202 -0
- package/apps/web/components/streaming/StreamingProgress.tsx +441 -0
- package/apps/web/components/streaming/index.ts +7 -0
- package/apps/web/components/ui/badge.tsx +42 -0
- package/apps/web/components/ui/button.tsx +88 -0
- package/apps/web/components/ui/card.tsx +75 -0
- package/apps/web/components/ui/code-block.tsx +122 -0
- package/apps/web/components/ui/index.ts +12 -0
- package/apps/web/components/ui/input.tsx +55 -0
- package/apps/web/components/ui/tabs.tsx +61 -0
- package/apps/web/hooks/index.ts +85 -0
- package/apps/web/hooks/types.ts +1173 -0
- package/apps/web/hooks/use-conversion.ts +133 -0
- package/apps/web/hooks/use-execution-history.ts +376 -0
- package/apps/web/hooks/use-generation-progress.ts +147 -0
- package/apps/web/hooks/use-local-storage.ts +88 -0
- package/apps/web/hooks/use-mcp-client.ts +623 -0
- package/apps/web/hooks/use-mcp-connection.ts +500 -0
- package/apps/web/hooks/use-mcp-execution.ts +282 -0
- package/apps/web/hooks/use-mcp-prompts.ts +441 -0
- package/apps/web/hooks/use-mcp-resources.ts +430 -0
- package/apps/web/hooks/use-mcp-tools.ts +540 -0
- package/apps/web/hooks/use-playground-store.ts +299 -0
- package/apps/web/hooks/use-playground.ts +184 -0
- package/apps/web/hooks/use-streaming-conversion.ts +227 -0
- package/apps/web/hooks/useBatchConversion.ts +271 -0
- package/apps/web/hooks/useDockerConfig.ts +161 -0
- package/apps/web/hooks/usePlatformDetection.ts +80 -0
- package/apps/web/hooks/useStreaming.ts +199 -0
- package/apps/web/lib/api/errors.ts +386 -0
- package/apps/web/lib/api/index.ts +137 -0
- package/apps/web/lib/api/logger.ts +187 -0
- package/apps/web/lib/api/middleware.ts +364 -0
- package/apps/web/lib/api/openapi.ts +977 -0
- package/apps/web/lib/api/session-manager.ts +594 -0
- package/apps/web/lib/api/types.ts +433 -0
- package/apps/web/lib/api/validation.ts +523 -0
- package/apps/web/lib/constants.ts +114 -0
- package/apps/web/lib/mcp/client.ts +1137 -0
- package/apps/web/lib/mcp/events.ts +651 -0
- package/apps/web/lib/mcp/index.ts +347 -0
- package/apps/web/lib/mcp/logger.ts +428 -0
- package/apps/web/lib/mcp/metrics.ts +703 -0
- package/apps/web/lib/mcp/retry.ts +616 -0
- package/apps/web/lib/mcp/session-manager.ts +779 -0
- package/apps/web/lib/mcp/transports.ts +988 -0
- package/apps/web/lib/mcp/types.ts +594 -0
- package/apps/web/lib/mcp-client-enhanced.ts +871 -0
- package/apps/web/lib/mcp-client.ts +778 -0
- package/apps/web/lib/mcp-errors.ts +489 -0
- package/apps/web/lib/mcp-sandbox.ts +593 -0
- package/apps/web/lib/mcp-testing.ts +428 -0
- package/apps/web/lib/mcp-types.ts +448 -0
- package/apps/web/lib/playground-store.tsx +1147 -0
- package/apps/web/lib/utils.ts +439 -0
- package/apps/web/next-env.d.ts +5 -0
- package/apps/web/next.config.js +23 -0
- package/apps/web/package.json +55 -0
- package/apps/web/postcss.config.js +6 -0
- package/apps/web/public/.well-known/ai-plugin.json +17 -0
- package/apps/web/public/logo.svg +6 -0
- package/apps/web/public/robots.txt +22 -0
- package/apps/web/public/schema.json +27 -0
- package/apps/web/tailwind.config.js +26 -0
- package/apps/web/tailwind.config.ts +123 -0
- package/apps/web/tsconfig.json +20 -0
- package/apps/web/types/deploy.ts +139 -0
- package/apps/web/types/index.ts +247 -0
- package/apps/web/vercel.json +39 -0
- package/eslint.config.mjs +23 -0
- package/llms.txt +102 -0
- package/mkdocs/docs/api/core.md +318 -0
- package/mkdocs/docs/api/index.md +128 -0
- package/mkdocs/docs/api/mcp-server.md +301 -0
- package/mkdocs/docs/api/openapi-parser.md +254 -0
- package/mkdocs/docs/assets/logo.svg +7 -0
- package/mkdocs/docs/changelog.md +118 -0
- package/mkdocs/docs/cli/generate.md +148 -0
- package/mkdocs/docs/cli/index.md +52 -0
- package/mkdocs/docs/cli/inspect.md +164 -0
- package/mkdocs/docs/cli/serve.md +136 -0
- package/mkdocs/docs/concepts/classification.md +254 -0
- package/mkdocs/docs/concepts/how-it-works.md +299 -0
- package/mkdocs/docs/concepts/index.md +77 -0
- package/mkdocs/docs/concepts/mcp-protocol.md +362 -0
- package/mkdocs/docs/concepts/tool-types.md +382 -0
- package/mkdocs/docs/contributing/architecture.md +262 -0
- package/mkdocs/docs/contributing/development.md +245 -0
- package/mkdocs/docs/contributing/index.md +73 -0
- package/mkdocs/docs/contributing/testing.md +320 -0
- package/mkdocs/docs/getting-started/configuration.md +235 -0
- package/mkdocs/docs/getting-started/index.md +54 -0
- package/mkdocs/docs/getting-started/installation.md +145 -0
- package/mkdocs/docs/getting-started/quickstart.md +160 -0
- package/mkdocs/docs/guides/batch.md +375 -0
- package/mkdocs/docs/guides/claude-desktop.md +227 -0
- package/mkdocs/docs/guides/cursor.md +188 -0
- package/mkdocs/docs/guides/custom-tools.md +367 -0
- package/mkdocs/docs/guides/index.md +78 -0
- package/mkdocs/docs/guides/private-repos.md +221 -0
- package/mkdocs/docs/guides/vscode.md +247 -0
- package/mkdocs/docs/index.md +175 -0
- package/mkdocs/docs/reference/config.md +223 -0
- package/mkdocs/docs/reference/env.md +192 -0
- package/mkdocs/docs/reference/index.md +102 -0
- package/mkdocs/docs/reference/tools.md +309 -0
- package/mkdocs/docs/stylesheets/extra.css +231 -0
- package/mkdocs/mkdocs.yml +204 -0
- package/mkdocs/overrides/.gitkeep +1 -0
- package/mkdocs/overrides/main.html +7 -0
- package/mkdocs/python-deps.txt +7 -0
- package/mkdocs/vercel.json +11 -0
- package/package.json +63 -0
- package/packages/core/package.json +61 -0
- package/packages/core/src/__tests__/bitbucket-client.test.ts +366 -0
- package/packages/core/src/__tests__/cli.test.ts +235 -0
- package/packages/core/src/__tests__/code-extractor.test.ts +378 -0
- package/packages/core/src/__tests__/docker-generator.test.ts +255 -0
- package/packages/core/src/__tests__/github-client.test.ts +390 -0
- package/packages/core/src/__tests__/gitlab-client.test.ts +319 -0
- package/packages/core/src/__tests__/go-extractor.test.ts +351 -0
- package/packages/core/src/__tests__/graphql-extractor.test.ts +330 -0
- package/packages/core/src/__tests__/java-extractor.test.ts +497 -0
- package/packages/core/src/__tests__/plugins.test.ts +467 -0
- package/packages/core/src/__tests__/readme-extractor.test.ts +258 -0
- package/packages/core/src/__tests__/redis-cache.test.ts +307 -0
- package/packages/core/src/__tests__/rust-extractor.test.ts +252 -0
- package/packages/core/src/__tests__/streaming.test.ts +251 -0
- package/packages/core/src/additional-extractors.ts +333 -0
- package/packages/core/src/cache/cache-interface.ts +179 -0
- package/packages/core/src/cache/index.ts +210 -0
- package/packages/core/src/cache/redis-cache.ts +291 -0
- package/packages/core/src/cache/upstash-cache.ts +379 -0
- package/packages/core/src/cache.ts +251 -0
- package/packages/core/src/cli.ts +822 -0
- package/packages/core/src/code-extractor.ts +696 -0
- package/packages/core/src/docker-generator.ts +470 -0
- package/packages/core/src/edge-compatible.ts +491 -0
- package/packages/core/src/extractors/go-extractor.ts +791 -0
- package/packages/core/src/extractors/index.ts +9 -0
- package/packages/core/src/extractors/java-extractor.ts +937 -0
- package/packages/core/src/extractors/rust-extractor.ts +744 -0
- package/packages/core/src/github-client.ts +319 -0
- package/packages/core/src/go-generator.ts +356 -0
- package/packages/core/src/graphql-extractor.ts +358 -0
- package/packages/core/src/index.ts +797 -0
- package/packages/core/src/langchain-exporter.ts +617 -0
- package/packages/core/src/language-parsers.ts +1114 -0
- package/packages/core/src/mcp-introspector.ts +279 -0
- package/packages/core/src/monorepo-detector.ts +378 -0
- package/packages/core/src/plugins/index.ts +370 -0
- package/packages/core/src/plugins/registry.ts +404 -0
- package/packages/core/src/plugins/types.ts +215 -0
- package/packages/core/src/providers/base-provider.ts +246 -0
- package/packages/core/src/providers/bitbucket-client.ts +464 -0
- package/packages/core/src/providers/gitlab-client.ts +388 -0
- package/packages/core/src/providers/index.ts +176 -0
- package/packages/core/src/python-generator.ts +260 -0
- package/packages/core/src/queue/index.ts +100 -0
- package/packages/core/src/queue/memory-queue.ts +445 -0
- package/packages/core/src/queue/redis-queue.ts +578 -0
- package/packages/core/src/queue/types.ts +251 -0
- package/packages/core/src/readme-extractor.ts +409 -0
- package/packages/core/src/schema-generator.ts +638 -0
- package/packages/core/src/streaming.ts +999 -0
- package/packages/core/src/types.ts +289 -0
- package/packages/core/tsconfig.json +9 -0
- package/packages/core/tsup.config.ts +25 -0
- package/packages/mcp-server/README.md +297 -0
- package/packages/mcp-server/package.json +55 -0
- package/packages/mcp-server/src/__tests__/mcp-server.test.ts +177 -0
- package/packages/mcp-server/src/__tests__/tools.test.ts +217 -0
- package/packages/mcp-server/src/index.ts +1206 -0
- package/packages/mcp-server/src/prompts/index.ts +601 -0
- package/packages/mcp-server/src/tools/export-docker.ts +362 -0
- package/packages/mcp-server/src/tools/generate-openapi.ts +162 -0
- package/packages/mcp-server/src/tools/monitor-mcp-server.ts +448 -0
- package/packages/mcp-server/src/tools/stream-convert.ts +398 -0
- package/packages/mcp-server/src/tools/test-mcp-tool.ts +531 -0
- package/packages/mcp-server/tsconfig.json +12 -0
- package/packages/mcp-server/tsup.config.ts +14 -0
- package/packages/openapi-parser/package-lock.json +3028 -0
- package/packages/openapi-parser/package.json +41 -0
- package/packages/openapi-parser/src/analyzer.ts +700 -0
- package/packages/openapi-parser/src/asyncapi-parser.ts +475 -0
- package/packages/openapi-parser/src/cli.ts +302 -0
- package/packages/openapi-parser/src/generator.ts +570 -0
- package/packages/openapi-parser/src/generators/express-analyzer.ts +649 -0
- package/packages/openapi-parser/src/generators/fastapi-analyzer.ts +960 -0
- package/packages/openapi-parser/src/generators/index.ts +200 -0
- package/packages/openapi-parser/src/generators/nextjs-analyzer.ts +768 -0
- package/packages/openapi-parser/src/generators/openapi-builder.ts +527 -0
- package/packages/openapi-parser/src/generators/types.ts +298 -0
- package/packages/openapi-parser/src/graphql-parser.ts +462 -0
- package/packages/openapi-parser/src/grpc-parser.ts +649 -0
- package/packages/openapi-parser/src/har-parser.ts +723 -0
- package/packages/openapi-parser/src/index.ts +635 -0
- package/packages/openapi-parser/src/insomnia-parser.ts +614 -0
- package/packages/openapi-parser/src/parser.ts +231 -0
- package/packages/openapi-parser/src/postman-parser.ts +611 -0
- package/packages/openapi-parser/src/ref-resolver.ts +313 -0
- package/packages/openapi-parser/src/transformer.ts +459 -0
- package/packages/openapi-parser/tests/generators/express.test.ts +209 -0
- package/packages/openapi-parser/tests/generators/fastapi.test.ts +236 -0
- package/packages/openapi-parser/tests/generators/nextjs.test.ts +273 -0
- package/packages/openapi-parser/tests/parsers.test.ts +847 -0
- package/packages/openapi-parser/tsconfig.json +9 -0
- package/packages/openapi-parser/tsup.config.ts +11 -0
- package/packages/registry/package.json +59 -0
- package/packages/registry/src/cli.ts +456 -0
- package/packages/registry/src/index.ts +44 -0
- package/packages/registry/src/popular/github.json +47 -0
- package/packages/registry/src/popular/index.ts +55 -0
- package/packages/registry/src/popular/linear.json +42 -0
- package/packages/registry/src/popular/notion.json +42 -0
- package/packages/registry/src/popular/openai.json +40 -0
- package/packages/registry/src/popular/resend.json +38 -0
- package/packages/registry/src/popular/slack.json +42 -0
- package/packages/registry/src/popular/stripe.json +163 -0
- package/packages/registry/src/popular/supabase.json +42 -0
- package/packages/registry/src/popular/twilio.json +40 -0
- package/packages/registry/src/popular/vercel.json +40 -0
- package/packages/registry/src/registry.ts +492 -0
- package/packages/registry/src/storage.ts +334 -0
- package/packages/registry/src/types.ts +275 -0
- package/packages/registry/src/updater.ts +208 -0
- package/packages/registry/tsconfig.json +10 -0
- package/packages/registry/tsup.config.ts +11 -0
- package/pnpm-workspace.yaml +3 -0
- package/scripts/build-docs.sh +16 -0
- package/server.json +9 -0
- package/templates/Dockerfile.python.template +60 -0
- package/templates/Dockerfile.typescript.template +60 -0
- package/templates/docker-compose.template.yml +68 -0
- package/tests/fixtures/express-app/index.js +34 -0
- package/tests/fixtures/express-app/routes/posts.js +43 -0
- package/tests/fixtures/express-app/routes/users.js +58 -0
- package/tests/fixtures/fastapi-app/main.py +125 -0
- package/tests/fixtures/fastapi-app/routes/admin.py +42 -0
- package/tests/fixtures/graphql/simple-schema.graphql +65 -0
- package/tests/fixtures/mocks/github-api-responses.json +63 -0
- package/tests/fixtures/nextjs-app/app/api/posts/route.ts +55 -0
- package/tests/fixtures/nextjs-app/app/api/users/[id]/route.ts +63 -0
- package/tests/fixtures/nextjs-app/app/api/users/route.ts +44 -0
- package/tests/fixtures/nextjs-app/pages/api/health.ts +28 -0
- package/tests/fixtures/openapi/petstore.yaml +179 -0
- package/tests/integration/langchain-export.test.ts +405 -0
- package/tests/integration/openapi-conversion.test.ts +221 -0
- package/tsconfig.json +18 -0
- package/vitest.config.ts +32 -0
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP SDK Types - Type definitions for MCP client wrapper
|
|
3
|
+
* @copyright 2024-2026 nirholas
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
8
|
+
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Transport Types
|
|
11
|
+
// ============================================================================
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Supported MCP transport types
|
|
15
|
+
*/
|
|
16
|
+
export type TransportType = 'stdio' | 'sse' | 'streamable-http';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Configuration for stdio transport - spawns a local process
|
|
20
|
+
*/
|
|
21
|
+
export interface StdioTransportConfig {
|
|
22
|
+
readonly type: 'stdio';
|
|
23
|
+
/** The command to execute */
|
|
24
|
+
readonly command: string;
|
|
25
|
+
/** Command line arguments */
|
|
26
|
+
readonly args?: readonly string[];
|
|
27
|
+
/** Environment variables for the process */
|
|
28
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
29
|
+
/** Working directory for the process */
|
|
30
|
+
readonly cwd?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Configuration for SSE transport - connects to legacy HTTP+SSE server
|
|
35
|
+
* @deprecated SSE transport is deprecated in favor of streamable-http
|
|
36
|
+
*/
|
|
37
|
+
export interface SseTransportConfig {
|
|
38
|
+
readonly type: 'sse';
|
|
39
|
+
/** The server URL to connect to */
|
|
40
|
+
readonly url: string;
|
|
41
|
+
/** Optional request headers */
|
|
42
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Configuration for Streamable HTTP transport - connects to modern HTTP server
|
|
47
|
+
*/
|
|
48
|
+
export interface StreamableHttpTransportConfig {
|
|
49
|
+
readonly type: 'streamable-http';
|
|
50
|
+
/** The server URL to connect to */
|
|
51
|
+
readonly url: string;
|
|
52
|
+
/** Optional request headers */
|
|
53
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
54
|
+
/** Optional session ID for reconnection */
|
|
55
|
+
readonly sessionId?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Discriminated union of all transport configurations
|
|
60
|
+
*/
|
|
61
|
+
export type TransportConfig =
|
|
62
|
+
| StdioTransportConfig
|
|
63
|
+
| SseTransportConfig
|
|
64
|
+
| StreamableHttpTransportConfig;
|
|
65
|
+
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// MCP Capability Types
|
|
68
|
+
// ============================================================================
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Server capabilities returned during initialization
|
|
72
|
+
*/
|
|
73
|
+
export interface McpCapabilities {
|
|
74
|
+
/** Whether the server supports tools */
|
|
75
|
+
readonly tools?: {
|
|
76
|
+
readonly listChanged?: boolean;
|
|
77
|
+
};
|
|
78
|
+
/** Whether the server supports resources */
|
|
79
|
+
readonly resources?: {
|
|
80
|
+
readonly subscribe?: boolean;
|
|
81
|
+
readonly listChanged?: boolean;
|
|
82
|
+
};
|
|
83
|
+
/** Whether the server supports prompts */
|
|
84
|
+
readonly prompts?: {
|
|
85
|
+
readonly listChanged?: boolean;
|
|
86
|
+
};
|
|
87
|
+
/** Whether the server supports logging */
|
|
88
|
+
readonly logging?: Record<string, unknown>;
|
|
89
|
+
/** Experimental capabilities */
|
|
90
|
+
readonly experimental?: Record<string, unknown>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// MCP Tool Types
|
|
95
|
+
// ============================================================================
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* JSON Schema property definition for tool input
|
|
99
|
+
*/
|
|
100
|
+
export interface JsonSchemaProperty {
|
|
101
|
+
readonly type: string;
|
|
102
|
+
readonly description?: string;
|
|
103
|
+
readonly enum?: readonly unknown[];
|
|
104
|
+
readonly default?: unknown;
|
|
105
|
+
readonly items?: JsonSchemaProperty;
|
|
106
|
+
readonly properties?: Readonly<Record<string, JsonSchemaProperty>>;
|
|
107
|
+
readonly required?: readonly string[];
|
|
108
|
+
readonly additionalProperties?: boolean | JsonSchemaProperty;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* JSON Schema for tool input validation
|
|
113
|
+
*/
|
|
114
|
+
export interface ToolInputSchema {
|
|
115
|
+
readonly type: 'object';
|
|
116
|
+
readonly properties?: Readonly<Record<string, JsonSchemaProperty>>;
|
|
117
|
+
readonly required?: readonly string[];
|
|
118
|
+
readonly additionalProperties?: boolean;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* MCP Tool definition
|
|
123
|
+
*/
|
|
124
|
+
export interface McpTool {
|
|
125
|
+
readonly name: string;
|
|
126
|
+
readonly description?: string;
|
|
127
|
+
readonly inputSchema: ToolInputSchema;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Content types for tool execution results
|
|
132
|
+
*/
|
|
133
|
+
export interface TextContent {
|
|
134
|
+
readonly type: 'text';
|
|
135
|
+
readonly text: string;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface ImageContent {
|
|
139
|
+
readonly type: 'image';
|
|
140
|
+
readonly data: string;
|
|
141
|
+
readonly mimeType: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface EmbeddedResourceContent {
|
|
145
|
+
readonly type: 'resource';
|
|
146
|
+
readonly resource: {
|
|
147
|
+
readonly uri: string;
|
|
148
|
+
readonly mimeType?: string;
|
|
149
|
+
readonly text?: string;
|
|
150
|
+
readonly blob?: string;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export type ToolResultContent = TextContent | ImageContent | EmbeddedResourceContent;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Result of calling a tool
|
|
158
|
+
*/
|
|
159
|
+
export interface McpToolCallResult {
|
|
160
|
+
readonly content: readonly ToolResultContent[];
|
|
161
|
+
readonly isError?: boolean;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ============================================================================
|
|
165
|
+
// MCP Resource Types
|
|
166
|
+
// ============================================================================
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* MCP Resource definition
|
|
170
|
+
*/
|
|
171
|
+
export interface McpResource {
|
|
172
|
+
readonly uri: string;
|
|
173
|
+
readonly name: string;
|
|
174
|
+
readonly description?: string;
|
|
175
|
+
readonly mimeType?: string;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Contents of a resource
|
|
180
|
+
*/
|
|
181
|
+
export interface McpResourceContents {
|
|
182
|
+
readonly uri: string;
|
|
183
|
+
readonly mimeType?: string;
|
|
184
|
+
readonly text?: string;
|
|
185
|
+
readonly blob?: string;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// MCP Prompt Types
|
|
190
|
+
// ============================================================================
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Prompt argument definition
|
|
194
|
+
*/
|
|
195
|
+
export interface McpPromptArgument {
|
|
196
|
+
readonly name: string;
|
|
197
|
+
readonly description?: string;
|
|
198
|
+
readonly required?: boolean;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* MCP Prompt definition
|
|
203
|
+
*/
|
|
204
|
+
export interface McpPrompt {
|
|
205
|
+
readonly name: string;
|
|
206
|
+
readonly description?: string;
|
|
207
|
+
readonly arguments?: readonly McpPromptArgument[];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Message role in prompt
|
|
212
|
+
*/
|
|
213
|
+
export type PromptMessageRole = 'user' | 'assistant';
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Content in a prompt message
|
|
217
|
+
*/
|
|
218
|
+
export interface PromptTextContent {
|
|
219
|
+
readonly type: 'text';
|
|
220
|
+
readonly text: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export interface PromptImageContent {
|
|
224
|
+
readonly type: 'image';
|
|
225
|
+
readonly data: string;
|
|
226
|
+
readonly mimeType: string;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export interface PromptResourceContent {
|
|
230
|
+
readonly type: 'resource';
|
|
231
|
+
readonly resource: {
|
|
232
|
+
readonly uri: string;
|
|
233
|
+
readonly mimeType?: string;
|
|
234
|
+
readonly text?: string;
|
|
235
|
+
readonly blob?: string;
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export type PromptMessageContent =
|
|
240
|
+
| PromptTextContent
|
|
241
|
+
| PromptImageContent
|
|
242
|
+
| PromptResourceContent;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Message in a prompt
|
|
246
|
+
*/
|
|
247
|
+
export interface McpPromptMessage {
|
|
248
|
+
readonly role: PromptMessageRole;
|
|
249
|
+
readonly content: PromptMessageContent;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Result of getting a prompt
|
|
254
|
+
*/
|
|
255
|
+
export interface McpPromptResult {
|
|
256
|
+
readonly description?: string;
|
|
257
|
+
readonly messages: readonly McpPromptMessage[];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// ============================================================================
|
|
261
|
+
// MCP Session Types
|
|
262
|
+
// ============================================================================
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Connection state of an MCP client
|
|
266
|
+
*/
|
|
267
|
+
export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* MCP Session representing an active connection
|
|
271
|
+
*/
|
|
272
|
+
export interface McpSession {
|
|
273
|
+
/** Unique session identifier */
|
|
274
|
+
readonly id: string;
|
|
275
|
+
/** Transport configuration used for this session */
|
|
276
|
+
readonly transportConfig: TransportConfig;
|
|
277
|
+
/** Current connection state */
|
|
278
|
+
readonly state: ConnectionState;
|
|
279
|
+
/** Server capabilities discovered during initialization */
|
|
280
|
+
readonly capabilities?: McpCapabilities;
|
|
281
|
+
/** Server info from initialization */
|
|
282
|
+
readonly serverInfo?: {
|
|
283
|
+
readonly name: string;
|
|
284
|
+
readonly version: string;
|
|
285
|
+
};
|
|
286
|
+
/** When the session was created */
|
|
287
|
+
readonly createdAt: Date;
|
|
288
|
+
/** When the session was last used */
|
|
289
|
+
lastUsedAt: Date;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Internal session data with mutable transport
|
|
294
|
+
*/
|
|
295
|
+
export interface McpSessionInternal extends McpSession {
|
|
296
|
+
/** The underlying transport instance */
|
|
297
|
+
transport: Transport;
|
|
298
|
+
/** Cleanup timer reference */
|
|
299
|
+
cleanupTimer: ReturnType<typeof setTimeout>;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// ============================================================================
|
|
303
|
+
// MCP Execution Result Types
|
|
304
|
+
// ============================================================================
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Successful execution result
|
|
308
|
+
*/
|
|
309
|
+
export interface McpExecutionSuccess<T = unknown> {
|
|
310
|
+
readonly success: true;
|
|
311
|
+
readonly data: T;
|
|
312
|
+
readonly executionTimeMs: number;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Failed execution result
|
|
317
|
+
*/
|
|
318
|
+
export interface McpExecutionFailure {
|
|
319
|
+
readonly success: false;
|
|
320
|
+
readonly error: McpError;
|
|
321
|
+
readonly executionTimeMs: number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Result of an MCP execution (tool call, resource read, etc.)
|
|
326
|
+
*/
|
|
327
|
+
export type McpExecutionResult<T = unknown> =
|
|
328
|
+
| McpExecutionSuccess<T>
|
|
329
|
+
| McpExecutionFailure;
|
|
330
|
+
|
|
331
|
+
// ============================================================================
|
|
332
|
+
// Error Types
|
|
333
|
+
// ============================================================================
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Error codes for MCP operations
|
|
337
|
+
*/
|
|
338
|
+
export enum McpErrorCode {
|
|
339
|
+
// Connection errors
|
|
340
|
+
ConnectionFailed = 'CONNECTION_FAILED',
|
|
341
|
+
ConnectionTimeout = 'CONNECTION_TIMEOUT',
|
|
342
|
+
ConnectionClosed = 'CONNECTION_CLOSED',
|
|
343
|
+
NotConnected = 'NOT_CONNECTED',
|
|
344
|
+
AlreadyConnected = 'ALREADY_CONNECTED',
|
|
345
|
+
|
|
346
|
+
// Protocol errors
|
|
347
|
+
InvalidRequest = 'INVALID_REQUEST',
|
|
348
|
+
InvalidResponse = 'INVALID_RESPONSE',
|
|
349
|
+
MethodNotFound = 'METHOD_NOT_FOUND',
|
|
350
|
+
InvalidParams = 'INVALID_PARAMS',
|
|
351
|
+
|
|
352
|
+
// Resource errors
|
|
353
|
+
ResourceNotFound = 'RESOURCE_NOT_FOUND',
|
|
354
|
+
ResourceAccessDenied = 'RESOURCE_ACCESS_DENIED',
|
|
355
|
+
|
|
356
|
+
// Tool errors
|
|
357
|
+
ToolNotFound = 'TOOL_NOT_FOUND',
|
|
358
|
+
ToolExecutionFailed = 'TOOL_EXECUTION_FAILED',
|
|
359
|
+
|
|
360
|
+
// Prompt errors
|
|
361
|
+
PromptNotFound = 'PROMPT_NOT_FOUND',
|
|
362
|
+
|
|
363
|
+
// Session errors
|
|
364
|
+
SessionNotFound = 'SESSION_NOT_FOUND',
|
|
365
|
+
SessionExpired = 'SESSION_EXPIRED',
|
|
366
|
+
MaxSessionsReached = 'MAX_SESSIONS_REACHED',
|
|
367
|
+
|
|
368
|
+
// Transport errors
|
|
369
|
+
TransportError = 'TRANSPORT_ERROR',
|
|
370
|
+
UnsupportedTransport = 'UNSUPPORTED_TRANSPORT',
|
|
371
|
+
|
|
372
|
+
// General errors
|
|
373
|
+
Timeout = 'TIMEOUT',
|
|
374
|
+
InternalError = 'INTERNAL_ERROR',
|
|
375
|
+
Unknown = 'UNKNOWN',
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Base MCP Error class
|
|
380
|
+
*/
|
|
381
|
+
export class McpError extends Error {
|
|
382
|
+
constructor(
|
|
383
|
+
public readonly code: McpErrorCode,
|
|
384
|
+
message: string,
|
|
385
|
+
public readonly cause?: unknown
|
|
386
|
+
) {
|
|
387
|
+
super(message);
|
|
388
|
+
this.name = 'McpError';
|
|
389
|
+
// Maintain proper stack trace in V8 environments
|
|
390
|
+
if (Error.captureStackTrace) {
|
|
391
|
+
Error.captureStackTrace(this, McpError);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Create a JSON-serializable representation
|
|
397
|
+
*/
|
|
398
|
+
toJSON(): Readonly<{
|
|
399
|
+
name: string;
|
|
400
|
+
code: McpErrorCode;
|
|
401
|
+
message: string;
|
|
402
|
+
cause?: unknown;
|
|
403
|
+
}> {
|
|
404
|
+
return {
|
|
405
|
+
name: this.name,
|
|
406
|
+
code: this.code,
|
|
407
|
+
message: this.message,
|
|
408
|
+
cause: this.cause,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Connection-related error
|
|
415
|
+
*/
|
|
416
|
+
export class McpConnectionError extends McpError {
|
|
417
|
+
constructor(code: McpErrorCode, message: string, cause?: unknown) {
|
|
418
|
+
super(code, message, cause);
|
|
419
|
+
this.name = 'McpConnectionError';
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Transport-related error
|
|
425
|
+
*/
|
|
426
|
+
export class McpTransportError extends McpError {
|
|
427
|
+
constructor(message: string, cause?: unknown) {
|
|
428
|
+
super(McpErrorCode.TransportError, message, cause);
|
|
429
|
+
this.name = 'McpTransportError';
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Timeout error
|
|
435
|
+
*/
|
|
436
|
+
export class McpTimeoutError extends McpError {
|
|
437
|
+
constructor(operation: string, timeoutMs: number, cause?: unknown) {
|
|
438
|
+
super(
|
|
439
|
+
McpErrorCode.Timeout,
|
|
440
|
+
`Operation '${operation}' timed out after ${timeoutMs}ms`,
|
|
441
|
+
cause
|
|
442
|
+
);
|
|
443
|
+
this.name = 'McpTimeoutError';
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Session-related error
|
|
449
|
+
*/
|
|
450
|
+
export class McpSessionError extends McpError {
|
|
451
|
+
constructor(code: McpErrorCode, message: string, cause?: unknown) {
|
|
452
|
+
super(code, message, cause);
|
|
453
|
+
this.name = 'McpSessionError';
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// ============================================================================
|
|
458
|
+
// Client Configuration Types
|
|
459
|
+
// ============================================================================
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Configuration options for McpClient
|
|
463
|
+
*/
|
|
464
|
+
export interface McpClientOptions {
|
|
465
|
+
/** Client name for identification */
|
|
466
|
+
readonly name: string;
|
|
467
|
+
/** Client version */
|
|
468
|
+
readonly version: string;
|
|
469
|
+
/** Connection timeout in milliseconds */
|
|
470
|
+
readonly connectionTimeoutMs?: number;
|
|
471
|
+
/** Request timeout in milliseconds */
|
|
472
|
+
readonly requestTimeoutMs?: number;
|
|
473
|
+
/** Enable debug logging */
|
|
474
|
+
readonly debug?: boolean;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Default client options
|
|
479
|
+
*/
|
|
480
|
+
export const DEFAULT_CLIENT_OPTIONS: Required<
|
|
481
|
+
Pick<McpClientOptions, 'connectionTimeoutMs' | 'requestTimeoutMs' | 'debug'>
|
|
482
|
+
> = {
|
|
483
|
+
connectionTimeoutMs: 30_000,
|
|
484
|
+
requestTimeoutMs: 60_000,
|
|
485
|
+
debug: false,
|
|
486
|
+
} as const;
|
|
487
|
+
|
|
488
|
+
// ============================================================================
|
|
489
|
+
// Session Manager Configuration Types
|
|
490
|
+
// ============================================================================
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* Configuration options for SessionManager
|
|
494
|
+
*/
|
|
495
|
+
export interface SessionManagerOptions {
|
|
496
|
+
/** Session timeout in milliseconds (default: 5 minutes) */
|
|
497
|
+
readonly sessionTimeoutMs?: number;
|
|
498
|
+
/** Maximum number of concurrent sessions (default: 100) */
|
|
499
|
+
readonly maxSessions?: number;
|
|
500
|
+
/** Enable debug logging */
|
|
501
|
+
readonly debug?: boolean;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Default session manager options
|
|
506
|
+
*/
|
|
507
|
+
export const DEFAULT_SESSION_MANAGER_OPTIONS: Required<SessionManagerOptions> = {
|
|
508
|
+
sessionTimeoutMs: 5 * 60 * 1000, // 5 minutes
|
|
509
|
+
maxSessions: 100,
|
|
510
|
+
debug: false,
|
|
511
|
+
} as const;
|
|
512
|
+
|
|
513
|
+
// ============================================================================
|
|
514
|
+
// Type Guards
|
|
515
|
+
// ============================================================================
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Type guard for StdioTransportConfig
|
|
519
|
+
*/
|
|
520
|
+
export function isStdioTransportConfig(
|
|
521
|
+
config: TransportConfig
|
|
522
|
+
): config is StdioTransportConfig {
|
|
523
|
+
return config.type === 'stdio';
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Type guard for SseTransportConfig
|
|
528
|
+
*/
|
|
529
|
+
export function isSseTransportConfig(
|
|
530
|
+
config: TransportConfig
|
|
531
|
+
): config is SseTransportConfig {
|
|
532
|
+
return config.type === 'sse';
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Type guard for StreamableHttpTransportConfig
|
|
537
|
+
*/
|
|
538
|
+
export function isStreamableHttpTransportConfig(
|
|
539
|
+
config: TransportConfig
|
|
540
|
+
): config is StreamableHttpTransportConfig {
|
|
541
|
+
return config.type === 'streamable-http';
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Type guard for McpExecutionSuccess
|
|
546
|
+
*/
|
|
547
|
+
export function isExecutionSuccess<T>(
|
|
548
|
+
result: McpExecutionResult<T>
|
|
549
|
+
): result is McpExecutionSuccess<T> {
|
|
550
|
+
return result.success === true;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Type guard for McpExecutionFailure
|
|
555
|
+
*/
|
|
556
|
+
export function isExecutionFailure(
|
|
557
|
+
result: McpExecutionResult<unknown>
|
|
558
|
+
): result is McpExecutionFailure {
|
|
559
|
+
return result.success === false;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Type guard for McpError
|
|
564
|
+
*/
|
|
565
|
+
export function isMcpError(error: unknown): error is McpError {
|
|
566
|
+
return error instanceof McpError;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Type guard for TextContent
|
|
571
|
+
*/
|
|
572
|
+
export function isTextContent(
|
|
573
|
+
content: ToolResultContent
|
|
574
|
+
): content is TextContent {
|
|
575
|
+
return content.type === 'text';
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Type guard for ImageContent
|
|
580
|
+
*/
|
|
581
|
+
export function isImageContent(
|
|
582
|
+
content: ToolResultContent
|
|
583
|
+
): content is ImageContent {
|
|
584
|
+
return content.type === 'image';
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* Type guard for EmbeddedResourceContent
|
|
589
|
+
*/
|
|
590
|
+
export function isEmbeddedResourceContent(
|
|
591
|
+
content: ToolResultContent
|
|
592
|
+
): content is EmbeddedResourceContent {
|
|
593
|
+
return content.type === 'resource';
|
|
594
|
+
}
|