UNPKG

minimax-mcp-js

Version:

Official MiniMax Model Context Protocol (MCP) JavaScript implementation that provides seamless integration with MiniMax's powerful AI capabilities including image generation, video generation, text-to-speech, and voice cloning APIs.

125 lines (124 loc) 3.17 kB
import { MiniMaxAPI } from '../utils/api.js'; /** * Base service abstract class, all services inherit from this class */ export class BaseService { api; config; initialized = false; serviceName; /** * Create service instance * @param api API instance * @param serviceName Service name */ constructor(api, serviceName) { this.api = api; this.serviceName = serviceName; this.config = {}; // Initialize as empty object, will be set in initialize } /** * Get service name * @returns Service name */ getServiceName() { return this.serviceName; } /** * Initialize service * @param config Configuration */ async initialize(config) { this.config = config; this.initialized = true; } /** * Check if service is initialized * @throws Error when not initialized */ checkInitialized() { if (!this.initialized) { throw new Error(`服务 ${this.serviceName} 尚未初始化`); } } /** * Update API instance * @param api New API instance */ updateApi(api) { this.api = api; } } /** * Service manager, responsible for managing and accessing all services */ export class ServiceManager { static instance; services = new Map(); api; config; /** * Create service manager instance * @param api API instance * @param config Configuration */ constructor(api, config) { this.api = api; this.config = config; } /** * Get service manager instance (singleton pattern) * @param api API instance * @param config Configuration * @returns Service manager instance */ static getInstance(api, config) { if (!ServiceManager.instance) { ServiceManager.instance = new ServiceManager(api, config); } return ServiceManager.instance; } /** * Register service * @param service Service instance */ registerService(service) { service.initialize(this.config); this.services.set(service.getServiceName(), service); } /** * Get service * @param serviceName Service name * @returns Service instance * @throws Error when service not found */ getService(serviceName) { const service = this.services.get(serviceName); if (!service) { throw new Error(`找不到服务: ${serviceName}`); } return service; } /** * Update configuration and API instance * @param config New configuration */ updateConfig(config) { this.config = config; this.api = new MiniMaxAPI(config); // Update all services for (const service of this.services.values()) { if (service instanceof BaseService) { service.updateApi(this.api); } service.initialize(config); } } /** * Get all service names * @returns Array of service names */ getServiceNames() { return [...this.services.keys()]; } }