force_terminate
Terminate unresponsive terminal sessions by process ID to free system resources and restore control in Desktop Commander MCP.
Instructions
Force terminate a running terminal session.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes |
Implementation Reference
- src/tools/execute.ts:47-62 (handler)The main handler function for the force_terminate tool. Validates input using the schema, calls terminalManager.forceTerminate(pid), and returns a formatted MCP response with success or failure message.export async function forceTerminate(args: unknown) { const parsed = ForceTerminateArgsSchema.safeParse(args); if (!parsed.success) { throw new Error(`Invalid arguments for force_terminate: ${parsed.error}`); } const success = terminalManager.forceTerminate(parsed.data.pid); return { content: [{ type: "text", text: success ? `Successfully initiated termination of session ${parsed.data.pid}` : `No active session found for PID ${parsed.data.pid}` }], }; }
- src/tools/schemas.ts:13-15 (schema)Zod schema defining the input arguments for force_terminate: requires a numeric PID.export const ForceTerminateArgsSchema = z.object({ pid: z.number(), });
- src/server.ts:72-77 (registration)Tool registration in the MCP server's listTools response, specifying name, description, and input schema.{ name: "force_terminate", description: "Force terminate a running terminal session.", inputSchema: zodToJsonSchema(ForceTerminateArgsSchema), },
- src/terminal-manager.ts:106-124 (helper)Core implementation in TerminalManager: attempts SIGINT kill, falls back to SIGKILL after 1s if still active.forceTerminate(pid: number): boolean { const session = this.sessions.get(pid); if (!session) { return false; } try { session.process.kill('SIGINT'); setTimeout(() => { if (this.sessions.has(pid)) { session.process.kill('SIGKILL'); } }, 1000); return true; } catch (error) { console.error(`Failed to terminate process ${pid}:`, error); return false; } }