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.

111 lines (108 loc) 2.77 kB
import { BaseMCPClient, HttpConnector } from "./chunk-SALQ72X7.js"; import { Tel, getPackageVersion } from "./chunk-IBYLEFBS.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, samplingCallback, elicitationCallback, disableSseFallback, preferSse, clientInfo } = serverConfig; if (!url) { throw new Error("Server URL is required"); } const connectorOptions = { headers, authToken, authProvider, // ← Pass OAuth provider to connector wrapTransport, // ← Pass transport wrapper if provided clientOptions, // ← Pass client options (capabilities, etc.) to connector samplingCallback, // ← Pass sampling callback to connector elicitationCallback, // ← Pass elicitation callback to connector disableSseFallback, // ← Disable automatic SSE fallback preferSse, // ← Use SSE transport directly clientInfo // ← Pass client info (name, version) to connector }; 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 };