mcp-use
Version:
A utility library for integrating Model Context Protocol (MCP) with LangChain, Zod, and related tools. Provides helpers for schema conversion, event streaming, and SDK usage.
53 lines (52 loc) • 1.39 kB
JavaScript
import { logger } from './logging.js';
export class MCPSession {
connector;
autoConnect;
_sessionInfo = null;
_tools = [];
constructor(connector, autoConnect = true) {
this.connector = connector;
this.autoConnect = autoConnect;
}
async open() {
await this.connect();
return this;
}
async close() {
await this.disconnect();
}
async connect() {
await this.connector.connect();
}
async disconnect() {
await this.connector.disconnect();
}
async initialize() {
if (!this.isConnected && this.autoConnect) {
await this.connect();
}
this._sessionInfo = await this.connector.initialize() ?? {};
await this.discoverTools();
return this._sessionInfo;
}
get isConnected() {
return this.connector && this.connector.isClientConnected;
}
get sessionInfo() {
return this._sessionInfo;
}
get tools() {
return this._tools;
}
async discoverTools() {
this._tools = this.connector.tools;
return this._tools;
}
async callTool(name, args) {
if (!this.isConnected && this.autoConnect) {
await this.connect();
}
logger.debug(`MCPSession calling tool '${name}'`);
return await this.connector.callTool(name, args);
}
}