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:176

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:132

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:251

Disconnect all servers

Returns

Promise<void>


getAllClients()

getAllClients(): MCPClient[]

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

Get all connected clients

Returns

MCPClient[]

Array of MCPClient instances


getClient()

getClient(name): MCPClient | undefined

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

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:471

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:224

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; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

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

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; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; 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; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | never | never | never | never>>

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

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; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; toolResult: unknown; }>, "execute">> & object & object | never | object & object & object & object & Required<Pick<Tool<unknown, {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; content: (... | ... | ... | ... | ...)[]; isError?: boolean; resultType?: string; structuredContent?: unknown; } | {[key: string]: unknown; _meta?: {[key: ...]: ...; }; resultType?: string; 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:243

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:441

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:375

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:346

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:404

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:191

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:120

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

Parameters

name

string

Returns

void