Skip to main content
Glama

stop_dev_server

Stop npm run dev processes managed by the npm-dev-mcp server. Specify a directory to target specific projects when multiple processes are running.

Instructions

npm run devプロセス停止

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
directoryNo停止対象のディレクトリ(複数起動時に指定。未指定時は唯一のプロセスまたはエラー)

Implementation Reference

  • The primary handler function for the 'stop_dev_server' MCP tool. It checks for the target process, stops it using ProcessManager, collects log stats, and returns a detailed JSON response.
    export async function stopDevServer(args: { directory?: string }): Promise<string> { try { const processManager = ProcessManager.getInstance(); // Check if target process exists BEFORE stopping const targetProcess = processManager.getProcess(args.directory); if (!targetProcess) { return JSON.stringify({ success: false, message: '指定されたディレクトリのDev serverは見つかりませんでした(または起動していません)', wasRunning: false }); } logger.info('Stopping dev server', { directory: targetProcess.directory }); const logManager = processManager.getLogManager(targetProcess.directory); const finalLogStats = logManager?.getLogStats(); // Stop the dev server const stopResult = await processManager.stopDevServer(args.directory); const result: any = { success: stopResult, message: stopResult ? 'Dev serverを正常に停止しました' : 'Dev serverの停止中にエラーが発生しましたが、プロセスは終了した可能性があります', wasRunning: true, stoppedProcess: { pid: targetProcess.pid, directory: targetProcess.directory, ports: targetProcess.ports } }; if (finalLogStats) { result.finalLogStats = { total: finalLogStats.total, errors: finalLogStats.errors, warnings: finalLogStats.warnings }; if (finalLogStats.errors > 0) { result.message += `\n最終ログに${finalLogStats.errors}個のエラーが記録されています`; } } return JSON.stringify(result, null, 2); } catch (error) { logger.error('Failed to stop dev server', { error }); return JSON.stringify({ success: false, message: `Dev serverの停止に失敗しました: ${error}`, wasRunning: false, error: String(error) }); } }
  • Input schema definition for the 'stop_dev_server' tool, defining the optional 'directory' parameter.
    export const stopDevServerSchema: Tool = { name: 'stop_dev_server', description: 'npm run devプロセス停止', inputSchema: { type: 'object', properties: { directory: { type: 'string', description: '停止対象のディレクトリ(複数起動時に指定。未指定時は唯一のプロセスまたはエラー)' } }, additionalProperties: false } };
  • src/index.ts:167-175 (registration)
    Registration and dispatch of the 'stop_dev_server' tool handler in the main CallToolRequestSchema switch statement.
    case 'stop_dev_server': return { content: [ { type: 'text', text: await stopDevServer(args as { directory?: string }), }, ], };
  • Core helper method in ProcessManager that performs the actual process termination (SIGTERM then SIGKILL if needed) and cleanup, called by the tool handler.
    async stopDevServer(directory?: string): Promise<boolean> { this.logger.info(`Stopping dev server${directory ? ` for ${directory}` : ''}`); const targetDirectory = this.resolveTargetDirectory(directory); const processData = this.processes.get(targetDirectory); if (!processData) { this.logger.info(`No dev server running for ${targetDirectory}`); return true; // Already stopped or not found } try { const pid = processData.info.pid; // Try graceful shutdown first if (processData.child) { processData.child.kill('SIGTERM'); } else { await killProcess(pid, 'SIGTERM'); } // Wait a moment for graceful shutdown await new Promise(resolve => setTimeout(resolve, 3000)); // Check if process is still running if (await isProcessRunning(pid)) { this.logger.warn(`Process ${pid} did not stop gracefully, forcing termination`); await killProcess(pid, 'SIGKILL'); } await this.cleanupProcess(targetDirectory); this.logger.info(`Dev server stopped successfully for ${targetDirectory}`); return true; } catch (error) { this.logger.error(`Failed to stop dev server for ${targetDirectory}`, { error }); await this.cleanupProcess(targetDirectory); // Clean up anyway return false; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masamunet/npm-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server