163 lines
3.8 KiB
TypeScript
163 lines
3.8 KiB
TypeScript
/**
|
|
* V3 CLI MCP Server Management
|
|
*
|
|
* Provides server lifecycle management for MCP integration:
|
|
* - Start/stop/status methods with process management
|
|
* - Health check endpoint integration
|
|
* - Graceful shutdown handling
|
|
* - PID file management for daemon detection
|
|
* - Event-based status monitoring
|
|
*
|
|
* Performance Targets:
|
|
* - Server startup: <400ms
|
|
* - Health check: <10ms
|
|
* - Graceful shutdown: <5s
|
|
*
|
|
* @module @claude-flow/cli/mcp-server
|
|
* @version 3.0.0
|
|
*/
|
|
import { EventEmitter } from 'events';
|
|
/**
|
|
* MCP Server configuration
|
|
*/
|
|
export interface MCPServerOptions {
|
|
transport?: 'stdio' | 'http' | 'websocket';
|
|
host?: string;
|
|
port?: number;
|
|
pidFile?: string;
|
|
logFile?: string;
|
|
tools?: string[] | 'all';
|
|
daemonize?: boolean;
|
|
timeout?: number;
|
|
}
|
|
/**
|
|
* MCP Server status
|
|
*/
|
|
export interface MCPServerStatus {
|
|
running: boolean;
|
|
pid?: number;
|
|
transport?: string;
|
|
host?: string;
|
|
port?: number;
|
|
uptime?: number;
|
|
tools?: number;
|
|
startedAt?: string;
|
|
health?: {
|
|
healthy: boolean;
|
|
error?: string;
|
|
metrics?: Record<string, number>;
|
|
};
|
|
}
|
|
/**
|
|
* MCP Server Manager
|
|
*
|
|
* Manages the lifecycle of the MCP server process
|
|
*/
|
|
export declare class MCPServerManager extends EventEmitter {
|
|
private options;
|
|
private process?;
|
|
private server?;
|
|
private startTime?;
|
|
private healthCheckInterval?;
|
|
constructor(options?: MCPServerOptions);
|
|
/**
|
|
* Start the MCP server
|
|
*/
|
|
start(): Promise<MCPServerStatus>;
|
|
/**
|
|
* Stop the MCP server
|
|
*/
|
|
stop(force?: boolean): Promise<void>;
|
|
/**
|
|
* Get server status
|
|
*/
|
|
getStatus(): Promise<MCPServerStatus>;
|
|
/**
|
|
* Check server health
|
|
*/
|
|
checkHealth(): Promise<{
|
|
healthy: boolean;
|
|
error?: string;
|
|
metrics?: Record<string, number>;
|
|
}>;
|
|
/**
|
|
* Restart the server
|
|
*/
|
|
restart(): Promise<MCPServerStatus>;
|
|
/**
|
|
* Start stdio server in-process
|
|
* Handles stdin/stdout directly like V2 implementation
|
|
*/
|
|
private startStdioServer;
|
|
/**
|
|
* Handle incoming MCP message
|
|
*/
|
|
private handleMCPMessage;
|
|
/**
|
|
* Start HTTP server in-process
|
|
*/
|
|
private startHttpServer;
|
|
/**
|
|
* Wait for server to be ready
|
|
*/
|
|
private waitForReady;
|
|
/**
|
|
* Wait for process to exit
|
|
*/
|
|
private waitForExit;
|
|
/**
|
|
* Start health monitoring
|
|
*/
|
|
private startHealthMonitoring;
|
|
/**
|
|
* Write PID file
|
|
*/
|
|
private writePidFile;
|
|
/**
|
|
* Read PID file
|
|
*/
|
|
private readPidFile;
|
|
/**
|
|
* Remove PID file
|
|
*/
|
|
private removePidFile;
|
|
/**
|
|
* Check if process is running AND is a node/claude-flow process.
|
|
* Plain `kill -0` returns true for any process with the same owner,
|
|
* which causes false positives when the OS recycles the PID.
|
|
*/
|
|
private isProcessRunning;
|
|
/**
|
|
* Make HTTP request
|
|
*/
|
|
private httpRequest;
|
|
/**
|
|
* Sleep utility
|
|
*/
|
|
private sleep;
|
|
}
|
|
/**
|
|
* Create MCP server manager
|
|
*/
|
|
export declare function createMCPServerManager(options?: MCPServerOptions): MCPServerManager;
|
|
/**
|
|
* Get or create server manager singleton
|
|
*
|
|
* FIX for issue #942: Recreate singleton if transport type changes
|
|
* Previously, once created with stdio (default), HTTP options were ignored
|
|
*/
|
|
export declare function getServerManager(options?: MCPServerOptions): MCPServerManager;
|
|
/**
|
|
* Quick start MCP server
|
|
*/
|
|
export declare function startMCPServer(options?: MCPServerOptions): Promise<MCPServerStatus>;
|
|
/**
|
|
* Quick stop MCP server
|
|
*/
|
|
export declare function stopMCPServer(force?: boolean): Promise<void>;
|
|
/**
|
|
* Get MCP server status
|
|
*/
|
|
export declare function getMCPServerStatus(): Promise<MCPServerStatus>;
|
|
export default MCPServerManager;
|
|
//# sourceMappingURL=mcp-server.d.ts.map
|