Persistent Shell MCP
Provides tools for persistent shell execution through tmux sessions, enabling command execution, process monitoring, and workspace management with dual-window architecture for separate execution and UI display.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Persistent Shell MCPstart the dev server in a persistent workspace called 'backend'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
This is experimental software intended for testing and development purposes only. Do not use in production environments or with sensitive data.
A Model Context Protocol (MCP) server that provides persistent shell execution through tmux sessions. This server enables AI assistants to execute commands in a persistent shell.
This unlocks a lot of possiblities, such as Agent Orchestration...
Features
Dual-Window Architecture: Each workspace has two windows -
execfor command execution anduifor clean output displayPersistent Workspaces: Execute commands in tmux sessions that persist across MCP client restarts
Interactive Process Support: Handle long-running processes, REPLs, and interactive commands
Workspace Isolation: Multiple isolated workspaces for different projects or tasks
Clean UI Management: Separate windows for execution and user-facing output
Automatic Session Management: Create, destroy, and monitor workspaces seamlessly
Related MCP server: Post-Exploitation tmux MCP Server
Installation
šØ SECURITY WARNING: This software allows AI assistants to execute arbitrary shell commands on your system. Only install and use in isolated testing environments. Never use on systems with sensitive data or in production environments.
Prerequisites
Node.js 18.0.0 or higher
tmux installed on your system
Ubuntu/Debian:
sudo apt install tmuxmacOS:
brew install tmuxCentOS/RHEL:
sudo yum install tmux
Install from npm
npm install -g tmux-mcp-serverInstall from source
git clone https://github.com/TNTisdial/persistent-shell-mcp.git
cd persistent-shell-mcp
npm install
npm linkUsage
MCP Client Configuration
Add to your MCP client configuration:
{
"mcpServers": {
"tmux-shell": {
"command": "tmux-mcp-server"
}
}
}Available Tools
Core Execution Tools
execute_command
Execute commands that complete quickly and return full output. Uses the exec window.
execute_command({
command: "ls -la",
workspace_id: "my-project"
})start_process
Start long-running or interactive processes. Can target either window:
execwindow (default): For background processesuiwindow: For interactive applications that need user visibility
start_process({
command: "python3",
workspace_id: "dev",
target_window: "ui" // For interactive apps like vim, python REPL
})get_output
Capture current terminal output from either window:
uiwindow (default): Clean user-facing outputexecwindow: Raw shell with all commands
get_output({
workspace_id: "dev",
window_name: "ui" // or "exec" for raw output
})send_input
Send input to running processes in either window.
send_input({
text: "print('Hello World')",
workspace_id: "dev",
target_window: "ui"
})stop_process
Stop the currently running process in the exec window (sends Ctrl+C).
stop_process({workspace_id: "dev"})Workspace Management Tools
create_workspace
Create a new isolated workspace with dual windows.
destroy_workspace
Destroy a workspace and all its processes.
list_workspaces
List all active workspaces.
Architecture
Dual-Window Design
Each workspace consists of two tmux windows:
execwindow: Raw shell for command executionHandles all command execution
Shows full shell history and prompts
Used for background processes
uiwindow: Clean output displayShows clean output for user interaction
Used for interactive applications
Provides better user experience
Workspace Isolation
Each workspace is a separate tmux session
Independent working directories and environments
Processes don't interfere between workspaces
Clean separation of different projects/tasks
Common Workflows
Quick Command Execution
// Execute and get results immediately
execute_command({command: "npm install", workspace_id: "frontend"})
execute_command({command: "git status", workspace_id: "frontend"})Interactive Development
// Start Python REPL in UI window
start_process({
command: "python3",
workspace_id: "python-dev",
target_window: "ui"
})
// Send Python commands
send_input({text: "import os", workspace_id: "python-dev", target_window: "ui"})
send_input({text: "print(os.getcwd())", workspace_id: "python-dev", target_window: "ui"})
// Check output
get_output({workspace_id: "python-dev", window_name: "ui"})Background Process Management
// Start server in background
start_process({command: "npm run dev", workspace_id: "server"})
// Check server status
get_output({workspace_id: "server", window_name: "exec"})
// Stop server when done
stop_process({workspace_id: "server"})Multi-Project Development
// Frontend workspace
create_workspace({workspace_id: "frontend"})
execute_command({command: "cd /path/to/frontend", workspace_id: "frontend"})
// Backend workspace
create_workspace({workspace_id: "backend"})
execute_command({command: "cd /path/to/backend", workspace_id: "backend"})
// Database workspace
create_workspace({workspace_id: "database"})
start_process({command: "mysql -u root -p", workspace_id: "database", target_window: "ui"})Project Structure
tmux-mcp/
āāā src/
ā āāā server.js # Main MCP server and tool definitions
ā āāā tmux-manager.js # Tmux session and window management
ā āāā index.js # Entry point
āāā bin/
ā āāā tmux-mcp-server # Executable script
āāā package.json
āāā README.mdTroubleshooting
Tmux Not Found
Error: tmux command not foundInstall tmux: sudo apt install tmux (Ubuntu/Debian) or brew install tmux (macOS)
Workspace Creation Failed
Error: Failed to create workspaceCheck if tmux server is running and you have permissions to create sessions
Commands Not Responding
Check workspace status with get_outputUse get_output with window_name: "exec" to see raw shell state
Process Stuck
Use stop_process to send Ctrl+CSend interrupt signal with stop_process to terminate hanging processes
License
MIT
Available Tools
8 toolscreate_workspaceC
Create a new isolated workspace for commands.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Unique workspace identifier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a workspace, implying a mutation operation, but doesn't describe what happens after creation (e.g., whether it's immediately active, if it requires additional setup, or if there are limits on workspace count). It mentions the workspace is 'isolated', which adds some context about separation, but lacks details on permissions, error conditions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded with the key action and resource, making it easy to scan and understand. Every part of the sentence earns its place by specifying what is created and its intended use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a creation operation with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns (e.g., success confirmation, workspace details), potential errors, or how the created workspace integrates with sibling tools like 'execute_command'. For a mutation tool in this context, more completeness is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'workspace_id' documented as a 'Unique workspace identifier'. The description doesn't add any additional meaning beyond this, such as format constraints or examples. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't need to given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new isolated workspace for commands'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'list_workspaces', but the verb 'Create' versus 'List' provides inherent distinction. The description avoids tautology by specifying what is being created and its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_workspaces' or 'destroy_workspace'. It mentions the workspace is 'for commands', which hints at a context involving command execution, but doesn't specify prerequisites, dependencies, or typical workflows. No explicit when/when-not instructions or alternative tool references are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_workspaceB
Destroy a workspace and all its processes.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Workspace to destroy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the destructive nature ('Destroy') and scope ('all its processes'), which is critical, but lacks details on permissions needed, confirmation steps, error handling, or what happens to associated data. For a high-impact mutation tool, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It immediately conveys the core action and scope without redundancy or unnecessary elaboration, making it highly efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It doesn't cover critical aspects like return values, error conditions, side effects on related resources, or safety warnings. Given the high-stakes nature of workspace destruction, more context is needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'workspace_id' documented as 'Workspace to destroy'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or validation rules, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Destroy') and resource ('a workspace and all its processes'), distinguishing it from siblings like create_workspace, list_workspaces, start_process, and stop_process. It precisely communicates the tool's destructive scope beyond just the workspace itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like stop_process or delete operations. The description implies it's for permanent removal but doesn't specify prerequisites, irreversible consequences, or contextual triggers for choosing destruction over other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandC
Execute a shell command in the background 'exec' window and return the output.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The shell command to execute | |
| workspace_id | No | Workspace identifier. Defaults to "default" | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions execution 'in the background' and that it 'returns the output', but doesn't address critical aspects like security implications, permission requirements, timeout behavior, error handling, or whether commands persist across sessions. For a potentially dangerous shell execution tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without waste. It's appropriately front-loaded with the main action and includes the key behavioral aspect (background execution) and outcome (return output). Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a shell execution tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'background exec window' means, doesn't address security concerns, doesn't describe output format or error conditions, and provides no guidance on appropriate usage. Given the potential danger of shell commands and the lack of structured safety information, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions 'shell command' which aligns with the schema's 'command' description, but provides no additional context about command syntax, restrictions, or workspace implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('execute a shell command') and resource ('background exec window'), and specifies the outcome ('return the output'). It doesn't explicitly differentiate from siblings like 'start_process' or 'send_input', but the focus on shell commands and background execution provides reasonable distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'start_process' or 'send_input'. The description mentions the 'background exec window' but doesn't explain what that means or when it's appropriate versus other execution methods. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outputA
Get current terminal output. Defaults to the ui window (what the user sees), but can check the exec window for background process status.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | default | |
| window_name | No | Window to capture: 'ui' for user view, 'exec' for background tasks. Example: `window_name: 'exec'` to check a background build. | ui |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what gets captured (terminal output) and distinguishes between window types, but doesn't mention important behavioral aspects like whether this is a read-only operation, what format the output returns, if there are rate limits, or authentication requirements. It provides some context but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with just two sentences that are front-loaded with the main purpose. Every word earns its place - the first sentence states the core function, and the second provides essential qualification about window options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 50% schema coverage and no output schema or annotations, the description provides basic context about window selection but doesn't fully compensate for the missing information. It doesn't explain what format the output returns, how to interpret it, or provide complete parameter semantics. For a tool that retrieves terminal output, more guidance on response format would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for the 'window_name' parameter by explaining the difference between 'ui' and 'exec' windows, which complements the 50% schema description coverage. However, it doesn't mention the 'workspace_id' parameter at all, leaving half of the parameters without semantic context beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current terminal output'), and distinguishes between UI and background windows. However, it doesn't explicitly differentiate from sibling tools like 'send_input' or 'execute_command' that might also interact with terminal output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by explaining when to use 'exec' window versus default 'ui' window, but doesn't explicitly state when to use this tool versus alternatives like 'execute_command' for running commands or 'send_input' for sending input. No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesB
List all active workspaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it lists 'all active workspaces,' which implies a read-only operation, but doesn't disclose behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or what 'active' means. For a tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 params, no output schema) and lack of annotations, the description is minimally adequate but has clear gaps. It states what the tool does but doesn't cover behavioral aspects like return format or usage context. For a simple list tool, it meets basic needs but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, but that's appropriate here. Baseline is 4 for 0 params, as the schema fully handles the lack of parameters without requiring description compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all active workspaces'), making the purpose immediately understandable. However, it doesn't differentiate from potential sibling tools like 'get_output' or 'execute_command' that might also retrieve workspace information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'create_workspace' and 'destroy_workspace' available, there's no indication of whether this should be used for discovery before creation/deletion or as a standalone query. No explicit when/when-not instructions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_inputC
Send input to a running process in a specified window.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to send | |
| workspace_id | No | default | |
| target_window | No | Window to send input to: 'ui' or 'exec'. | exec |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool sends input but doesn't cover critical aspects like whether this is a read-only or destructive operation, potential side effects (e.g., if input triggers process termination), authentication needs, rate limits, or what happens if the process isn't running. This is a significant gap for a tool that interacts with processes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and target, making it easy to parse quickly. Every part of the sentence contributes essential information, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of interacting with processes (implied by sibling tools like 'start_process' and 'stop_process'), no annotations, no output schema, and incomplete parameter coverage, the description is inadequate. It doesn't explain what 'send input' entails (e.g., simulating keystrokes, piping data), potential errors, or return values, leaving the agent with insufficient context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions), with 'text' and 'target_window' documented but 'workspace_id' lacking a description. The description adds no additional parameter semantics beyond what the schema provides, such as explaining the purpose of 'workspace_id' or clarifying 'target_window' options ('ui' vs 'exec'). Baseline 3 is appropriate as the schema does most of the work but leaves one parameter unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send input') and target ('to a running process in a specified window'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'execute_command' or 'get_output', which might involve similar process interactions, leaving some ambiguity about when this specific tool is the right choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'execute_command' (which might start a process) or 'get_output' (which retrieves output). It mentions a 'running process' but doesn't specify prerequisites (e.g., must have a process started via 'start_process') or exclusions, leaving the agent to infer context from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_processB
Start a long-running or interactive process. Defaults to the background exec window, but can target the ui window for interactive applications.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command to start | |
| workspace_id | No | default | |
| target_window | No | Window to run in: 'ui' for interactive apps, 'exec' for background processes. Example: `target_window: 'ui'` to run 'vim' visibly. | exec |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that processes can be long-running or interactive and run in different windows, but lacks critical details: whether this requires specific permissions, if processes persist across sessions, error handling, resource limits, or what happens on failure. For a process-starting tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, and the second adds crucial context about window targeting. Every sentence earns its place with no wasted words, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of starting processes (which can involve permissions, resource management, and error handling), no annotations, no output schema, and only moderate schema coverage, the description is incomplete. It covers basic usage but misses behavioral aspects like what the tool returns, how to handle errors, or prerequisites. For a tool with siblings like 'stop_process' and 'send_input', more context on integration would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions). The description adds some value by explaining the 'target_window' parameter's purpose ('ui' for interactive apps, 'exec' for background processes), which complements the schema's example. However, it doesn't provide additional meaning for 'command' or 'workspace_id' beyond what the schema offers, and with moderate coverage, the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start a long-running or interactive process.' It specifies the verb ('Start') and resource ('process'), and distinguishes it from siblings like 'execute_command' by mentioning long-running/interactive nature and window targeting. However, it doesn't explicitly differentiate from 'stop_process' or 'send_input' in terms of process lifecycle management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for long-running or interactive processes, with guidance on window selection ('ui' for interactive apps, 'exec' for background). It implies alternatives by mentioning defaults and use cases, but doesn't explicitly name when to use 'execute_command' instead or other siblings like 'stop_process' for termination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_processB
Stop the currently running process in the exec window (sends Ctrl+C).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the action ('sends Ctrl+C') which suggests an interrupt signal, but doesn't cover critical behavioral aspects like whether this requires specific permissions, what happens if no process is running, if the action is reversible, or any error conditions. The disclosure is minimal for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Stop the currently running process') and adds clarifying detail ('in the exec window (sends Ctrl+C)'). Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a parameter with 0% coverage, the description is incomplete. It lacks information about the tool's behavior in edge cases, what it returns, and the parameter's purpose. For a tool that interacts with running processes, more context is needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, but the description doesn't mention any parameters at all. Since there's only one optional parameter ('workspace_id'), the tool likely functions without it, so the description's omission isn't critical. The baseline for 0 parameters would be 4, but here we have 1 undocumented parameter, so it's scored slightly lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop') and target ('currently running process in the exec window'), with the specific mechanism 'sends Ctrl+C' providing additional clarity. It doesn't explicitly differentiate from sibling tools like 'destroy_workspace' or 'execute_command', but the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a process is running, but provides no explicit guidance on when to use this tool versus alternatives like 'destroy_workspace' (which might terminate a workspace) or 'send_input' (which could send other signals). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no ambiguity. For example, create_workspace/destroy_workspace handle workspace lifecycle, execute_command/start_process differentiate between one-off commands and long-running processes, and get_output/send_input separate output retrieval from input sending. The descriptions clearly delineate when to use each tool.
All tools follow a consistent verb_noun pattern with snake_case throughout. The naming convention is perfectly predictable: create_workspace, destroy_workspace, execute_command, get_output, list_workspaces, send_input, start_process, stop_process. This consistency makes the tool set easy to understand and navigate.
With 8 tools, this server is well-scoped for persistent shell management. Each tool earns its place by covering essential operations: workspace management (create/destroy/list), process execution (execute/start/stop), and I/O handling (get_output/send_input). The count is neither too sparse nor bloated for the domain.
The tool surface provides excellent coverage of core persistent shell operations, including workspace lifecycle, process management, and I/O. A minor gap exists in workspace modification (e.g., rename_workspace or update_workspace_settings), but agents can work around this by destroying and recreating workspaces. The tools support complete workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Build Apps and run code in 30 languages ā sandboxed, with persistent sessions for agent loops.
Docs for agent-manager, the terminal UI that runs AI coding agents as live tmux sessions.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage local tmux sessions, including creating and controlling sessions, windows, and panes, sending commands, and capturing terminal output.1617Do What The F*ck You Want To Public
- FlicenseNot gradedqualityCmaintenanceExposes tmux features to AI agents for managing sessions, windows, and panes with built-in command execution. It includes comprehensive guardrails to prevent destructive system operations, file deletions, and unauthorized network changes.
- AlicenseAqualityDmaintenanceAllows AI assistants to create, manage, and interact with tmux sessions, windows, and panes programmatically.19MIT
- FlicenseAqualityDmaintenanceEnables AI agents to spawn, interact with, and orchestrate multiple concurrent terminal sessions via tmux.9
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/TNTisdial/persistent-shell-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server