1. Conduid
  2. Developer Tools
  3. Client Manager
MCP server · Developer Tools

Client Manager

MCP server: Client Manager

Unclaimed last commit a year ago devtools
37Low

Scored 5 months ago · breakdown

About Client Manager

Client Manager is an MCP server published by Automata-Labs-team in the Developer Tools category: mCP server: Client Manager.

The repository has 4 stars and 4 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/Automata-Labs-team/mcp-client-manager

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Client Manager

Powered by Claude · Grounded in docs

I know everything about Client Manager. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 9 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • !License declaredNo license file. Legally you have no right to use it in a product.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

MCP Client Manager

A client manager for the Model Context Protocol (MCP) that provides a simple way to manage multiple MCP clients connected to different servers.

npm version

Features

  • Multiple Server Management: Connect to multiple MCP servers and manage them through a single interface
  • Server Discovery: Automatically find which server provides the resources or tools you need
  • Error Handling: Robust error handling with detailed error information
  • Reconnection Support: Automatic reconnection capabilities for transient failures
  • Event System: Event-based architecture for monitoring connections and operations
  • Typed API: Fully TypeScript-compatible with comprehensive type definitions

Installation

npm install @modelcontextprotocol/client-manager

Basic Usage

import { MCPClientManager } from '@modelcontextprotocol/client-manager';
import { WebSocketTransport } from '@modelcontextprotocol/sdk/client/websocket.js';

// Create a manager with auto-reconnect enabled
const manager = new MCPClientManager({
  autoReconnect: true,
  defaultTimeout: 10000
});

// Connect to a server
const transport = new WebSocketTransport('ws://localhost:3000');
const clientId = await manager.addServer(transport, 'local-server');

// List available tools from all connected servers
const tools = await manager.listTools();
console.log('Available tools:', tools);

// Call a tool on any server that provides it
const result = await manager.callTool('my-tool', { param: 'value' });
console.log('Tool result:', result);

Advanced Usage

Connecting to Multiple Servers

// Connect to multiple servers
const server1Id = await manager.addServer(
  new WebSocketTransport('ws://server1:3000'), 
  'server-1'
);

const server2Id = await manager.addServer(
  new WebSocketTransport('ws://server2:3000'), 
  'server-2'
);

// You can work with specific servers using their IDs
const server1Tools = await manager.getClient(server1Id).listTools();

// Or use the unified API to work with all servers
const allTools = await manager.listTools();

Handling Events

// Listen for connection errors
manager.on('connectionError', ({ serverName, error }) => {
  console.error(`Failed to connect to ${serverName}:`, error);
});

// Listen for transport closures
manager.on('transportClosed', ({ clientId, serverName }) => {
  console.warn(`Connection to ${serverName} closed`);
});

// Listen for operation errors
manager.on('operationError', ({ operation, clientId, serverName, error }) => {
  console.error(`Error during ${operation} on ${serverName}:`, error);
});

Configuration Options

The MCPClientManager constructor accepts a configuration object with these options:

Option Type Default Description
defaultTimeout number 30000 Default timeout in milliseconds for operations
autoReconnect boolean false Whether to automatically attempt to reconnect disconnected clients
maxReconnectAttempts number 3 Maximum number of reconnection attempts
reconnectDelay number 5000 Delay between reconnection attempts in milliseconds
debug boolean false Whether to emit verbose debug logs

API Reference

Class: MCPClientManager

Constructor

constructor(config: Partial<MCPClientManagerConfig> = {})

Creates a new MCPClientManager instance with the given configuration.

Server Management Methods

  • async addServer(transport: ClientTransport, serverName: string, clientConfig?: Partial<ClientConfig>): Promise<ClientIdentifier>
  • async reconnectClient(clientId: ClientIdentifier): Promise<boolean>
  • removeClient(id: ClientIdentifier): boolean
  • isClientHealthy(clientId: ClientIdentifier): boolean
  • listServerNames(): string[]
  • hasServer(serverName: string): boolean
  • getClientInfo(id: ClientIdentifier): Omit<ClientInfo, 'client'> | undefined
  • getClientIdByServerName(serverName: string): ClientIdentifier | undefined
  • listClientIds(): ClientIdentifier[]

MCP Operation Methods

  • async listPrompts(timeout?: number): Promise<unknown[]>
  • async getPrompt(promptName: string, args?: PromptParams, timeout?: number): Promise<unknown>
  • async listResources(timeout?: number): Promise<unknown[]>
  • async readResource(resourceUri: string, timeout?: number): Promise<unknown>
  • async listTools(timeout?: number): Promise<unknown[]>
  • async callTool(toolName: string, args?: Record<string, unknown>, timeout?: number): Promise<ToolResponse>

Events

  • serverAdded: Emitted when a server is successfully added
  • connectionError: Emitted when there's an error connecting to a server
  • transportError: Emitted when there's an error with a transport
  • transportClosed: Emitted when a transport is closed
  • clientReconnected: Emitted when a client is successfully reconnected
  • reconnectionError: Emitted when there's an error reconnecting a client
  • closeError: Emitted when there's an error closing a transport
  • clientRemoved: Emitted when a client is removed
  • operationError: Emitted when there's an error during an operation

License

MIT

README fetched from the repository 9 days ago. The original is authoritative.

Questions

About Client Manager

How do I install Client Manager?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Client Manager safe to use with an AI agent?

Its trust score is 37 out of 100 (low). It passes 4 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Client Manager still maintained?

The last commit was a year ago and 1 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.