Member Junction
    Preparing search index...

    Module @memberjunction/ai-mcp-client - v5.49.0

    MCP Client package for MemberJunction

    This package provides a comprehensive MCP (Model Context Protocol) client implementation for MemberJunction, enabling MJ agents, actions, and services to consume tools from external MCP servers.

    import { MCPClientManager } from '@memberjunction/ai-mcp-client';

    // Get the singleton instance
    const manager = MCPClientManager.Instance;

    // Initialize (once at startup)
    await manager.initialize(contextUser);

    // Connect to an MCP server
    await manager.connect('connection-id', { contextUser });

    // Call a tool
    const result = await manager.callTool('connection-id', 'tool-name', {
    arguments: { param1: 'value1' }
    }, { contextUser });

    // List available tools
    const tools = await manager.listTools('connection-id', { contextUser });

    // Sync tools to database
    await manager.syncTools('connection-id', { contextUser });

    // Disconnect
    await manager.disconnect('connection-id', { contextUser });

    @memberjunction/ai-mcp-client

    MemberJunction MCP (Model Context Protocol) Client implementation for consuming tools from external MCP servers. Provides a singleton connection manager with support for multiple transport types, OAuth 2.1 authentication, rate limiting, execution logging, agent integration, and database-backed tool synchronization.

    graph TD
        subgraph "@memberjunction/ai-mcp-client"
            MCM["MCPClientManager
    Singleton Connection Manager"] style MCM fill:#2d8659,stroke:#1a5c3a,color:#fff ATA["AgentToolAdapter
    LLM Tool Format Converter"] style ATA fill:#7c5295,stroke:#563a6b,color:#fff RL["RateLimiter
    Per-Minute & Per-Hour Limits"] style RL fill:#b8762f,stroke:#8a5722,color:#fff EL["ExecutionLogger
    Database Audit Trail"] style EL fill:#b8762f,stroke:#8a5722,color:#fff subgraph "OAuth 2.1 Module" OM["OAuthManager"] style OM fill:#7c5295,stroke:#563a6b,color:#fff ASD["AuthServerDiscovery"] style ASD fill:#7c5295,stroke:#563a6b,color:#fff CR["ClientRegistration"] style CR fill:#7c5295,stroke:#563a6b,color:#fff TM["TokenManager"] style TM fill:#7c5295,stroke:#563a6b,color:#fff PK["PKCEGenerator"] style PK fill:#7c5295,stroke:#563a6b,color:#fff end end subgraph "Transport Types" T1["StreamableHTTP"] style T1 fill:#2d6a9f,stroke:#1a4971,color:#fff T2["SSE"] style T2 fill:#2d6a9f,stroke:#1a4971,color:#fff T3["Stdio"] style T3 fill:#2d6a9f,stroke:#1a4971,color:#fff T4["WebSocket"] style T4 fill:#2d6a9f,stroke:#1a4971,color:#fff end MCM --> T1 MCM --> T2 MCM --> T3 MCM --> T4 MCM --> ATA MCM --> RL MCM --> EL MCM --> OM subgraph "External MCP Servers" S1["MCP Server A"] style S1 fill:#b8762f,stroke:#8a5722,color:#fff S2["MCP Server B"] style S2 fill:#b8762f,stroke:#8a5722,color:#fff end T1 --> S1 T2 --> S2
    npm install @memberjunction/ai-mcp-client
    

    Central manager for all MCP server connections. Handles connection lifecycle, tool discovery, tool execution, and database synchronization.

    import { MCPClientManager } from '@memberjunction/ai-mcp-client';

    const manager = MCPClientManager.Instance;

    // Initialize (once at startup)
    await manager.initialize(contextUser);

    // Connect to an MCP server
    await manager.connect('connection-id', { contextUser });

    // List available tools
    const tools = await manager.listTools('connection-id', { contextUser });

    // Call a tool
    const result = await manager.callTool('connection-id', 'tool-name', {
    arguments: { param1: 'value1' }
    }, { contextUser });

    // Sync tools to database (creates Action entities)
    await manager.syncTools('connection-id', { contextUser });

    // Disconnect
    await manager.disconnect('connection-id', { contextUser });

    Converts MCP tools into LLM-compatible tool definitions (OpenAI function calling format, Anthropic tool use format):

    import { AgentToolAdapter, createAgentToolAdapter } from '@memberjunction/ai-mcp-client';

    const adapter = createAgentToolAdapter(manager);

    // Get tools in OpenAI format
    const openaiTools = await adapter.getToolsForAgent('connection-id', {
    format: 'openai',
    contextUser
    });

    // Get tools in Anthropic format
    const anthropicTools = await adapter.getToolsForAgent('connection-id', {
    format: 'anthropic',
    contextUser
    });

    // Execute a tool call from an LLM response
    const result = await adapter.executeToolCall('connection-id', {
    name: 'tool-name',
    arguments: { param1: 'value1' }
    }, { contextUser });

    Per-connection rate limiting with request queuing:

    import { RateLimiter, RateLimiterRegistry } from '@memberjunction/ai-mcp-client';

    // Rate limiters are automatically managed per connection
    // Configure via MCPServerConnection entity fields:
    // - RateLimitPerMinute
    // - RateLimitPerHour

    Database-backed execution logging for debugging and audit:

    import { ExecutionLogger } from '@memberjunction/ai-mcp-client';

    const logger = new ExecutionLogger(loggingConfig);

    // Get execution statistics
    const stats: MCPExecutionStats = logger.GetStats();
    const summary: MCPExecutionLogSummary = logger.GetSummary();

    Complete OAuth 2.1 implementation for authenticating with MCP servers:

    Class Purpose
    OAuthManager Top-level OAuth flow orchestration
    AuthServerDiscovery RFC 8414 authorization server metadata discovery
    ClientRegistration RFC 7591 dynamic client registration
    TokenManager Token lifecycle (acquire, refresh, revoke)
    PKCEGenerator PKCE challenge/verifier generation
    OAuthAuditLogger Security audit logging
    import { OAuthManager, OAuthAuthorizationRequiredError } from '@memberjunction/ai-mcp-client';

    try {
    await manager.connect('oauth-connection-id', { contextUser });
    } catch (error) {
    if (error instanceof OAuthAuthorizationRequiredError) {
    // Redirect user to authorization URL
    const authUrl = error.authorizationUrl;
    // After user authorizes, complete the flow
    await OAuthManager.Instance.completeAuthorization(code, state);
    }
    }

    The package exports comprehensive type definitions for all aspects of MCP client operations:

    Category Key Types
    Transport/Auth MCPTransportType, MCPAuthType, MCPServerStatus, MCPConnectionStatus
    Configuration MCPServerConfig, MCPConnectionConfig, MCPToolDefinition, MCPToolAnnotations
    Operations MCPCallToolOptions, MCPClientOptions, MCPConnectOptions
    Results MCPToolCallResult, MCPListToolsResult, MCPSyncToolsResult, MCPTestConnectionResult
    Rate Limiting RateLimitConfig, RateLimitState, QueuedRequest
    Events MCPClientEventType, MCPClientEvent, MCPClientEventListener

    Subscribe to connection and tool execution events:

    manager.addEventListener('tool-executed', (event) => {
    console.log(`Tool ${event.toolName} executed in ${event.durationMs}ms`);
    });

    manager.addEventListener('connection-status-changed', (event) => {
    console.log(`Connection ${event.connectionId}: ${event.status}`);
    });

    The MCP Client integrates with MemberJunction entities:

    • MCP Servers -- Registered MCP server definitions
    • MCP Server Connections -- Per-user/per-company connection configurations
    • MCP Server Tools -- Discovered tools synced from MCP servers
    • Actions -- Auto-generated MJ Action entities from MCP tools (via syncTools)
    • Action Params -- Tool parameters mapped to Action parameters
    • @modelcontextprotocol/sdk -- Official MCP SDK (client transports, types)
    • @memberjunction/core -- MJ framework core
    • @memberjunction/core-entities -- Generated entity classes
    • @memberjunction/credentials -- Credential resolution for authentication
    • @memberjunction/global -- Class factory
    • zod -- Schema validation

    Classes

    AgentToolAdapter
    AuthServerDiscovery
    ClientRegistration
    ExecutionLogger
    MCPClientManager
    OAuthAuditLogger
    OAuthAuthorizationRequiredError
    OAuthErrorMessages
    OAuthManager
    OAuthReauthorizationRequiredError
    PKCEGenerator
    RateLimiter
    RateLimiterRegistry
    TokenManager

    Interfaces

    AgentToolDefinition
    AgentToolResult
    AnthropicToolDefinition
    AuthorizationCompletedDetails
    AuthorizationFailedDetails
    AuthorizationInitiatedDetails
    AuthServerMetadata
    CachedAuthServerMetadata
    CompleteAuthorizationResult
    CredentialsRevokedDetails
    DCRRequest
    DCRResponse
    InitiateAuthorizationResult
    MCPActiveConnection
    MCPCallToolOptions
    MCPClientEvent
    MCPClientOptions
    MCPConnectionConfig
    MCPConnectionPermission
    MCPConnectionToolConfig
    MCPConnectOptions
    MCPContentBlock
    MCPCredentialData
    MCPDisconnectOptions
    MCPExecutionLogEntry
    MCPExecutionLogSummary
    MCPExecutionStats
    MCPListToolsResult
    MCPLoggingConfig
    MCPProgressInfo
    MCPServerCapabilities
    MCPServerConfig
    MCPServerOAuthConfig
    MCPSyncToolsResult
    MCPTestConnectionResult
    MCPToolAnnotations
    MCPToolCallResult
    MCPToolDefinition
    MCPToolInfo
    MCPToolStats
    OAuth2AuthCodeCredentialValues
    OAuthAuthorizationState
    OAuthClientRegistration
    OAuthConnectionStatus
    OAuthErrorResponse
    OAuthEventData
    OAuthTokenResponse
    OAuthTokenSet
    OpenAIFunctionDefinition
    PKCEChallenge
    QueuedRequest
    RateLimitConfig
    RateLimitState
    TokenRefreshDetails
    TokenRefreshFailedDetails
    TokenRefreshResult
    ToolDiscoveryOptions

    Type Aliases

    MCPAuthType
    MCPClientEventListener
    MCPClientEventType
    MCPConnectionStatus
    MCPServerStatus
    MCPToolStatus
    MCPTransportType
    OAuthAuthorizationStatus
    OAuthClientRegistrationStatus
    OAuthEventType

    Functions

    createAgentToolAdapter
    getOAuthAuditLogger