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
JavaScript
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
};