Skip to main content
Glama

list_sessions

View active terminal sessions to monitor process status, identify blocked REPLs, and verify session activity before sending commands.

Instructions

                    List all active terminal sessions.
                    
                    Shows session status including:
                    - PID: Process identifier  
                    - Blocked: Whether session is waiting for input
                    - Runtime: How long the session has been running
                    
                    DEBUGGING REPLs:
                    - "Blocked: true" often means REPL is waiting for input
                    - Use this to verify sessions are running before sending input
                    - Long runtime with blocked status may indicate stuck process
                    
                    This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Core handler function that lists all active terminal sessions (real and virtual Node.js sessions) using terminalManager and formats the output.
    export async function listSessions(): Promise<ServerResult> {
      const sessions = terminalManager.listActiveSessions();
    
      // Include virtual Node.js sessions
      const virtualSessions = Array.from(virtualNodeSessions.entries()).map(([pid, session]) => ({
        pid,
        type: 'node:local',
        timeout_ms: session.timeout_ms
      }));
    
      const realSessionsText = sessions.map(s =>
        `PID: ${s.pid}, Blocked: ${s.isBlocked}, Runtime: ${Math.round(s.runtime / 1000)}s`
      );
    
      const virtualSessionsText = virtualSessions.map(s =>
        `PID: ${s.pid} (node:local), Timeout: ${s.timeout_ms}ms`
      );
    
      const allSessions = [...realSessionsText, ...virtualSessionsText];
    
      return {
        content: [{
          type: "text",
          text: allSessions.length === 0
            ? 'No active sessions'
            : allSessions.join('\n')
        }],
      };
    }
  • MCP wrapper handler for 'list_sessions' tool that delegates to the core listSessions implementation.
    export async function handleListSessions(): Promise<ServerResult> {
        return listSessions();
    }
  • Zod input schema for list_sessions tool (no arguments required).
    export const ListSessionsArgsSchema = z.object({});
  • src/server.ts:923-943 (registration)
    Tool registration in ListTools handler: defines name, description, inputSchema for 'list_sessions'.
        name: "list_sessions",
        description: `
                List all active terminal sessions.
                
                Shows session status including:
                - PID: Process identifier  
                - Blocked: Whether session is waiting for input
                - Runtime: How long the session has been running
                
                DEBUGGING REPLs:
                - "Blocked: true" often means REPL is waiting for input
                - Use this to verify sessions are running before sending input
                - Long runtime with blocked status may indicate stuck process
                
                ${CMD_PREFIX_DESCRIPTION}`,
        inputSchema: zodToJsonSchema(ListSessionsArgsSchema),
        annotations: {
            title: "List Terminal Sessions",
            readOnlyHint: true,
        },
    },
  • Dispatch in CallTool handler: routes 'list_sessions' calls to handlers.handleListSessions().
    case "list_sessions":
        result = await handlers.handleListSessions();
        break;

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/wonderwhy-er/ClaudeComputerCommander'

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