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