Skip to main content

Class: MCPManager

Defined in: packages/mcp/src/manager.ts:77

MCP Manager for multiple server connections

Provides a unified interface for connecting to multiple MCP servers and aggregating their tools, resources, and prompts.

Example

const manager = new MCPManager();

// Add multiple servers
await manager.addServer({
name: 'github',
transport: { type: 'stdio', command: 'npx', args: ['-y', '@mcp/server-github'] },
toolPrefix: 'github_'
});

await manager.addServer({
name: 'filesystem',
transport: { type: 'stdio', command: 'npx', args: ['-y', '@mcp/server-filesystem'] },
toolPrefix: 'fs_'
});

// Get all tools as Baleybot-compatible tools
const tools = await manager.getTools();

const bot = Baleybot.create({
name: 'assistant',
goal: 'Help with files and code',
tools
});

// Cleanup
await manager.disconnectAll();

Constructors

Constructor

new MCPManager(options?): MCPManager

Defined in: packages/mcp/src/manager.ts:84

Parameters

options?

MCPClientOptions & object = {}

Returns

MCPManager

Methods

addClientDirectly()

addClientDirectly(name, client): void

Defined in: packages/mcp/src/manager.ts:162

Add a pre-built MCPClient directly to the manager.

Use this when you have already created and connected a client (e.g., using connectWithTransport with a DockerStdioTransport).

Parameters

name

string

Unique name for this server connection

client

MCPClient

The MCPClient instance to add

Returns

void


addServer()

addServer(config): Promise<MCPClient>

Defined in: packages/mcp/src/manager.ts:129

Add and connect to an MCP server

Parameters

config

MCPServerConfig

Server configuration

Returns

Promise<MCPClient>

The connected MCPClient


disconnectAll()

disconnectAll(): Promise<void>

Defined in: packages/mcp/src/manager.ts:237

Disconnect all servers

Returns

Promise<void>


getAllClients()

getAllClients(): MCPClient[]

Defined in: packages/mcp/src/manager.ts:219

Get all connected clients

Returns

MCPClient[]

Array of MCPClient instances


getClient()

getClient(name): MCPClient | undefined

Defined in: packages/mcp/src/manager.ts:201

Get a specific client by server name

Parameters

name

string

Server name

Returns

MCPClient | undefined

MCPClient or undefined


getPrompt()

getPrompt(name, args?, serverName?): Promise<MCPPromptMessage[]>

Defined in: packages/mcp/src/manager.ts:453

Get a prompt from any server

Searches all connected servers for the prompt name.

Parameters

name

string

Prompt name

args?

Record<string, string>

Prompt arguments

serverName?

string

Optional server name to get from specifically

Returns

Promise<MCPPromptMessage[]>

Prompt messages


getServerNames()

getServerNames(): string[]

Defined in: packages/mcp/src/manager.ts:210

Get all connected client names

Returns

string[]

Array of server names


getTools()

getTools(options?): Promise<Record<string, object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

Defined in: packages/mcp/src/manager.ts:267

Get all tools from all servers as Baleybot-compatible tools

Tools are cached per server until the server is removed or tools are refreshed.

Parameters

options?

Options for tool retrieval

refresh?

boolean

Force refresh tool cache

Returns

Promise<Record<string, object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

Record of tool name to MCPToolDefinition


getToolsFromServer()

getToolsFromServer(serverName): Promise<Record<string, object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

Defined in: packages/mcp/src/manager.ts:307

Get tools from a specific server

Parameters

serverName

string

Server name

Returns

Promise<Record<string, object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ...)[]; isError?: boolean; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

Record of tool name to MCPToolDefinition


isConnected()

isConnected(name): boolean

Defined in: packages/mcp/src/manager.ts:229

Check if a server is connected

Parameters

name

string

Server name

Returns

boolean

true if connected


listAllPrompts()

listAllPrompts(): Promise<MCPPromptWithServer[]>

Defined in: packages/mcp/src/manager.ts:423

List all prompts from all servers

Returns

Promise<MCPPromptWithServer[]>

Array of prompts with server origin


listAllResources()

listAllResources(): Promise<MCPResourceWithServer[]>

Defined in: packages/mcp/src/manager.ts:357

List all resources from all servers

Returns

Promise<MCPResourceWithServer[]>

Array of resources with server origin


listAllTools()

listAllTools(): Promise<MCPToolWithServer[]>

Defined in: packages/mcp/src/manager.ts:328

List all tools from all servers (raw MCP format with server info)

Returns

Promise<MCPToolWithServer[]>

Array of tools with server origin


readResource()

readResource(uri, serverName?): Promise<MCPResourceContent>

Defined in: packages/mcp/src/manager.ts:386

Read a resource from any server

Searches all connected servers for the resource URI.

Parameters

uri

string

Resource URI

serverName?

string

Optional server name to read from specifically

Returns

Promise<MCPResourceContent>

Resource content


removeServer()

removeServer(name): Promise<void>

Defined in: packages/mcp/src/manager.ts:177

Remove and disconnect from an MCP server

Parameters

name

string

Server name

Returns

Promise<void>


touchServer()

touchServer(name): void

Defined in: packages/mcp/src/manager.ts:117

Reset the idle timeout for a server (call on tool use to prevent auto-disconnect).

Parameters

name

string

Returns

void