diff options
Diffstat (limited to 'packages/core/src/tools/mcp-client.ts')
| -rw-r--r-- | packages/core/src/tools/mcp-client.ts | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/packages/core/src/tools/mcp-client.ts b/packages/core/src/tools/mcp-client.ts index 457259e5..3c482100 100644 --- a/packages/core/src/tools/mcp-client.ts +++ b/packages/core/src/tools/mcp-client.ts @@ -16,7 +16,8 @@ import { StreamableHTTPClientTransportOptions, } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; import { parse } from 'shell-quote'; -import { MCPServerConfig } from '../config/config.js'; +import { AuthProviderType, MCPServerConfig } from '../config/config.js'; +import { GoogleCredentialProvider } from '../mcp/google-auth-provider.js'; import { DiscoveredMCPTool } from './mcp-tool.js'; import { FunctionDeclaration, mcpToTool } from '@google/genai'; import { ToolRegistry } from './tool-registry.js'; @@ -852,6 +853,29 @@ export async function createTransport( mcpServerConfig: MCPServerConfig, debugMode: boolean, ): Promise<Transport> { + if ( + mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS + ) { + const provider = new GoogleCredentialProvider(mcpServerConfig); + const transportOptions: + | StreamableHTTPClientTransportOptions + | SSEClientTransportOptions = { + authProvider: provider, + }; + if (mcpServerConfig.httpUrl) { + return new StreamableHTTPClientTransport( + new URL(mcpServerConfig.httpUrl), + transportOptions, + ); + } else if (mcpServerConfig.url) { + return new SSEClientTransport( + new URL(mcpServerConfig.url), + transportOptions, + ); + } + throw new Error('No URL configured for Google Credentials MCP server'); + } + // Check if we have OAuth configuration or stored tokens let accessToken: string | null = null; let hasOAuthConfig = mcpServerConfig.oauth?.enabled; |
