UNPKG

mcp-use

Version:

Opinionated MCP Framework for TypeScript (@modelcontextprotocol/sdk compatible) - Build MCP Agents, Clients and Servers with support for ChatGPT Apps, Code Mode, OAuth, Notifications, Sampling, Observability and more.

121 lines (118 loc) 3.14 kB
import { BaseMCPClient, HttpConnector } from "./chunk-WWEZMEB7.js"; import { Tel, getPackageVersion } from "./chunk-43HAMRQH.js"; import { logger } from "./chunk-U7F22OTV.js"; import { __name } from "./chunk-3GQAWCBQ.js"; // src/client/browser.ts var BrowserMCPClient = class _BrowserMCPClient extends BaseMCPClient { static { __name(this, "BrowserMCPClient"); } /** * Get the mcp-use package version. * Works in all environments (Node.js, browser, Cloudflare Workers, Deno, etc.) */ static getPackageVersion() { return getPackageVersion(); } constructor(config) { super(config); this._trackClientInit(); } _trackClientInit() { const servers = Object.keys(this.config.mcpServers ?? {}); Tel.getInstance().trackMCPClientInit({ codeMode: false, // Browser client doesn't support code mode sandbox: false, // Sandbox not supported in browser allCallbacks: false, // Will be set per-server verify: false, servers, numServers: servers.length, isBrowser: true // Browser MCPClient }).catch( (e) => logger.debug(`Failed to track BrowserMCPClient init: ${e}`) ); } static fromDict(cfg) { return new _BrowserMCPClient(cfg); } /** * Create a connector from server configuration (Browser version) * Supports HTTP connector only */ createConnectorFromConfig(serverConfig) { const { url, headers, authToken, authProvider, wrapTransport, clientOptions, onSampling, samplingCallback, elicitationCallback, disableSseFallback, preferSse, clientInfo, gatewayUrl, serverId } = serverConfig; if (!url) { throw new Error("Server URL is required"); } const finalOnSampling = onSampling ?? samplingCallback; const connectorOptions = { headers, authToken, authProvider, // ← Pass OAuth provider to connector wrapTransport, // ← Pass transport wrapper if provided clientOptions, // ← Pass client options (capabilities, etc.) to connector onSampling: finalOnSampling, // ← Pass sampling callback to connector (new name) samplingCallback: finalOnSampling, // ← Backward compatibility: also pass as old name elicitationCallback, // ← Pass elicitation callback to connector disableSseFallback, // ← Disable automatic SSE fallback preferSse, // ← Use SSE transport directly clientInfo, // ← Pass client info (name, version) to connector gatewayUrl, // ← Pass gateway/proxy URL to connector serverId // ← Pass server ID for gateway observability }; if (clientOptions) { console.log( "[BrowserMCPClient] Passing clientOptions to connector:", JSON.stringify(clientOptions, null, 2) ); } else { console.warn( "[BrowserMCPClient] No clientOptions provided to connector!" ); } return new HttpConnector(url, connectorOptions); } }; export { BrowserMCPClient };