shemcp
Click on "Deploy 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., "@shemcprun npm test"
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.
Shemcp - the simple shell mcp server.
Independent agentic coding without handing over the keys to the castle. Stop getting approval prompts that are unimportant.
What's new
Git Worktree Support: Automatically detects and allows access to git worktrees created from the sandbox repository. Worktrees are validated via
git worktree listand added to an allowlist for the session. Disable withworktree_detection = falsein the[security]section of your config file.π Pagination Support: Added pagination and large output handling to
shell_execwith configurablelimit_bytes,limit_lines, andon_large_outputmodesπ Spill File Management: Large outputs are automatically written to temporary files with
spill_urifor safe, paginated readingπ New
read_file_chunkTool: Read paginated data from spilled files usingcursorandlimit_bytesfor safe streamingSandbox root now resolves to the Git repository root by default (fallback to the current working directory), with optional overrides via
SHEMCP_ROOTorMCP_SANDBOX_ROOT.Removed the
shell_set_cwdtool;shell_execcwd can be relative to the sandbox root, or an absolute path within the sandbox or a valid git worktree.Added
shell_infotool for introspection (reportssandbox_rootand resolves relativecwdinputs, includingwithin_sandboxchecks).Hardened
ensureCwdwithrealpathand boundary checks to prevent symlink escapes and ensure directory accessibility.Updated docs and tests to reflect the new behavior.
Related MCP server: MCP Shell Server
Overview
This MCP server provides sandboxed shell command execution with comprehensive security policies. It allows AI assistants to safely execute shell commands while enforcing strict access controls through configurable TOML files.
Sandbox root selection
To avoid the sandbox accidentally shrinking to a nested subdirectory, shemcp derives a stable sandbox root at startup using the following precedence:
SHEMCP_ROOT or MCP_SANDBOX_ROOT environment variable (if set and exists)
Nearest Git repository root discovered from the agent's process.cwd()
process.cwd() as a final fallback
The chosen root remains fixed for the duration of the process. Working directories for command execution can be relative paths inside this sandbox, or absolute paths within the sandbox or a valid git worktree.
shell_exec optionally accepts a cwd that can be relative to the sandbox root, or an absolute path within the sandbox or a valid git worktree.
This ensures that if the client happens to start the agent several levels deep, the sandbox still resolves to the project root (typically the Git root), preventing the MCP from becoming unable to access sibling paths in the repository.
You can explicitly override the root for special cases with SHEMCP_ROOT or MCP_SANDBOX_ROOT.
Features
π TOML Configuration: Easy-to-edit configuration files with validation
π Command Allowlisting: Only pre-approved commands can be executed
π« Command Denylisting: Explicitly block dangerous command patterns
π Sandboxed to Project Root: Commands run within the Git repository root by default (fallback to current working directory). Override with
SHEMCP_ROOTorMCP_SANDBOX_ROOT.πΏ Git Worktree Support: Automatically detects and allows access to git worktrees (sibling directories created via
git worktree add)π‘οΈ Hardened Path Enforcement:
cwdcan be relative or absolute within sandbox/worktree boundaries. Realpath boundary checks prevent symlink escapes.π Environment Filtering: Only pass through safe environment variables
β±οΈ Resource Limits: Configurable timeouts and output size caps
π Pagination Support: Handle large command outputs with configurable
limit_bytesandlimit_linesπΎ Spill File Management: Large outputs automatically written to temporary files for safe, paginated access
π Streaming Reads:
read_file_chunktool for reading spilled files in token-safe chunks
Security Model
The server implements multiple layers of security:
Command Validation: Commands must match allowlist patterns and not match denylist patterns
Directory Sandboxing: Commands can only run within the sandbox root (Git repository root by default; fallback to CWD) or valid git worktrees.
cwdcan be relative or absolute within these boundaries. Override root viaSHEMCP_ROOTorMCP_SANDBOX_ROOT.Environment Isolation: Sensitive environment variables are filtered out
Resource Limits: Prevent runaway processes with timeouts and output limits
Debugging
The server writes debug logs to ~/.shemcp/debug.log which can help diagnose issues:
# View the debug log
tail -f ~/.shemcp/debug.log
# Clear the debug log
> ~/.shemcp/debug.logThe log captures:
Server startup and configuration loading
All MCP requests received
Shutdown signals and cleanup process
Any errors or exceptions
Default Policy
Allowed Commands: git, gh, make, grep, sed, jq, aws, az, bash -lc
Denied Patterns: git push to main/master branches
Root Directory: Git repository root by default (fallback to process.cwd()). Override via
SHEMCP_ROOTorMCP_SANDBOX_ROOT.Timeout: 600 seconds per command
Max Output: 2MB per stream (stdout/stderr)
Commands
1) shell_exec
Execute an allow-listed command inside the sandbox with support for pagination and large output handling.
Parameters:
cmd(required): Command to run (e.g., "git", "npm", "python")args: Array of string arguments (e.g., ["status", "--short"])cwd: Optional working directory (relative to sandbox root, or absolute path within sandbox/worktree)timeout_ms: Command timeout in milliseconds (deprecated, usetimeout_seconds)timeout_seconds: Command timeout in seconds (1-600, clamped to policy limits)max_output_bytes: Maximum output size in bytes (1000-10M, clamped to policy limits)page(required): Pagination configuration object:cursor: Opaque position marker (e.g., "bytes:0")limit_bytes: Maximum bytes per page (default: 40000, ~10k tokens)limit_lines: Maximum lines per page (default: 2000, stops on whichever hits first)
on_large_output: How to handle large outputs: "spill" (default), "truncate", or "error"
Rules:
A
pageobject must be supplied; otherwise the request is rejected withError: pagination parameters are requiredcwdcan be relative to sandbox root, or an absolute path within the sandbox or a valid git worktreePaths outside the sandbox/worktree boundaries are rejected with a clear error message
Large outputs (>limit_bytes or >limit_lines) are handled according to
on_large_outputmode
Response Format:
{
"exit_code": 0,
"stdout_chunk": "first 40k of data...",
"stderr_chunk": "",
"bytes_start": 0,
"bytes_end": 39999,
"total_bytes": 58112234,
"truncated": false,
"next_cursor": "bytes:40000",
"spill_uri": "mcp://tmp/exec-abc123.out",
"mime": "text/plain",
"line_count": 1780,
"stderr_count": 0,
"cmdline": ["git", "log"],
"cwd": "/path/to/project",
"limits": {
"timeout_ms": 60000,
"max_output_bytes": 2000000
}
}2) read_file_chunk
Read paginated data from a spilled file created by shell_exec when on_large_output is set to "spill".
Parameters:
uri(required): URI of the spilled file (e.g., "mcp://tmp/exec-abc123.out")cursor: Opaque position marker (default: "bytes:0")limit_bytes: Maximum bytes to read (default: 40000)
Response Format:
{
"data": "chunk of file content...",
"bytes_start": 0,
"bytes_end": 39999,
"total_bytes": 58112234,
"next_cursor": "bytes:40000",
"mime": "text/plain"
}3) shell_info
Introspection utility for the sandbox.
Parameters (optional):
cwd: Relative path to resolve and validate against the sandbox root
Returns: JSON including
sandbox_root, and ifcwdis provided,resolved_pathandwithin_sandboxflags
4) Removed: shell_set_cwd
This command has been removed. Use shell_exec with a relative cwd instead.
Quick reference
Ask your MCP client to call these tools with the following inputs:
shell_infoexamples:{ "cwd": "." }β returnssandbox_root, resolves to the root, and confirms within sandbox{ "cwd": "src" }β returns resolvedsrcpath andwithin_sandbox: trueif it exists/inside
shell_execexamples:{ "cmd": "git", "args": ["status"], "cwd": ".", "page": { "cursor": { "cursor_type": "bytes", "offset": 0 } } }{ "cmd": "npm", "args": ["test"], "cwd": ".", "page": { "cursor": { "cursor_type": "bytes", "offset": 0 } } }{ "cmd": "ls", "args": ["-la"], "cwd": "src", "page": { "cursor": { "cursor_type": "bytes", "offset": 0 } } }Pagination examples:
{ "cmd": "git", "args": ["log"], "page": { "cursor": { "cursor_type": "bytes", "offset": 0 }, "limit_bytes": 32768 } }β First 32KB of git log{ "cmd": "cat", "args": ["large.log"], "page": { "cursor": { "cursor_type": "bytes", "offset": 40000 } } }β Next page from byte 40000{ "cmd": "find", "args": [".", "-name", "*.ts"], "page": { "cursor": { "cursor_type": "bytes", "offset": 0 } }, "on_large_output": "spill" }β Spill large find results to file
Spill file reading examples:
{ "uri": "mcp://tmp/exec-abc123.out", "cursor": { "cursor_type": "bytes", "offset": 0 }, "limit_bytes": 16384 }β Read first 16KB of spilled file{ "uri": "mcp://tmp/exec-abc123.out", "cursor": { "cursor_type": "bytes", "offset": 16384 }, "limit_bytes": 16384 }β Read next 16KB chunk
Quick Start
1. Setup for Claude Code
Add the MCP server using Claude Code's CLI with npx (recommended):
# Add the shell MCP server to Claude Code (uses latest version)
claude mcp add shell -- npx -y shemcp@latest
# Verify it was added successfully
claude mcp listAlternative scopes:
# Add for current project only (default)
claude mcp add shell -- npx -y shemcp@latest
# Add for current user (available in all projects)
claude mcp add --scope user shell -- npx -y shemcp@latest
# Add for project team (creates .mcp.json in project root)
claude mcp add --scope project shell -- npx -y shemcp@latest2. Setup for Other MCP Clients
For Cursor/VS Code with MCP:
{
"mcp.servers": {
"shell": {
"command": "npx",
"args": ["-y", "shemcp@latest"],
"env": {}
}
}
}For Desktop MCP Clients:
Command:
npxArguments:
["-y", "shemcp@latest"]
3. Optional: Custom Configuration
The server works out of the box with sensible defaults. If you need to customize the configuration:
# Create config directory
mkdir -p ~/.config/shemcp
# Download and customize the example config
curl -o ~/.config/shemcp/config.toml https://raw.githubusercontent.com/acartine/shemcp/main/config.example.toml
# Edit the config to match your needs
nano ~/.config/shemcp/config.toml4. Alternative: Install Globally (Optional)
If you prefer to install shemcp globally instead of using npx:
# Global installation
npm install -g shemcp
# Then use direct command in MCP config
claude mcp add shell -- shemcpFor development from source:
git clone https://github.com/acartine/shemcp.git
cd shemcp
npm install
npm run build
# Add local version to Claude Code
claude mcp add shell -- node /absolute/path/to/shemcp/dist/index.jsConfiguration
The server works with sensible built-in defaults. Configuration files are optional and only needed for customization.
If present, configuration is loaded from (in priority order):
~/.config/shemcp/config.toml(user config - highest priority)/etc/shemcp/config.toml(system config - lower priority)Built-in defaults (always used as fallback)
Configuration Structure
# Configuration format version (not the package version)
config_version = 1
[server]
name = "shemcp"
[directories]
# The sandbox root defaults to the Git repository root (fallback to the current
# working directory) and remains fixed for the process lifetime.
# Override with SHEMCP_ROOT or MCP_SANDBOX_ROOT environment variables if needed.
[commands]
allow = ["^git(\\s|$)", "^npm(\\s|$)", "^make(\\s|$)"]
deny = ["^git\\s+push\\s+(origin\\s+)?(main|master)"]
[limits]
timeout_seconds = 600
max_output_bytes = 2000000
[environment]
whitelist = ["PATH", "HOME", "USER", "LANG"]
[security]
require_secure_permissions = false
worktree_detection = true # Enable automatic git worktree detectionSee config.example.toml for a complete example with documentation.
Example Usage
Once configured with Claude Code or another MCP client, you can ask the AI to execute shell commands:
Example interactions:
"Check the git status of my project" β Executes
git status"List all TypeScript files" β Executes
find . -name "*.ts""Run the tests" β Executes
npm test"Show recent commits" β Executes
git log --oneline -10"Create a new branch for this feature" β Executes
git checkout -b feature-name
The AI can only execute commands that match your allow patterns and run in directories you've permitted, providing a secure sandbox for shell operations.
Pagination Usage Scenarios
Handling Large Command Outputs
When dealing with commands that produce large outputs (like logs, large files, or directory listings), use pagination to avoid token limits:
Scenario 1: Paginating through git log
{
"cmd": "git",
"args": ["log", "--oneline"],
"page": { "cursor": { "cursor_type": "bytes", "offset": 0 }, "limit_bytes": 32768 }
}Returns first 32KB of git history with next_cursor for continuation.
Scenario 2: Reading large files in chunks
{
"cmd": "cat",
"args": ["huge.log"],
"on_large_output": "spill",
"page": { "cursor": { "cursor_type": "bytes", "offset": 0 }, "limit_bytes": 40000 }
}Spills large log file and returns first 40KB with spill_uri for continued reading.
Scenario 3: Processing large directory listings
{
"cmd": "find",
"args": [".", "-type", "f", "-name", "*.js"],
"page": { "cursor": { "cursor_type": "bytes", "offset": 0 }, "limit_lines": 1000 }
}Returns up to 1000 lines of file listing, whichever comes first.
Reading Spill Files
When shell_exec returns a spill_uri, use read_file_chunk to read the data in manageable chunks:
Scenario 4: Reading spilled output
{
"uri": "mcp://tmp/exec-abc123.out",
"cursor": { "cursor_type": "bytes", "offset": 0 },
"limit_bytes": 16384
}Reads first 16KB of the spilled file.
Scenario 5: Continuing to read spilled output
{
"uri": "mcp://tmp/exec-abc123.out",
"cursor": { "cursor_type": "bytes", "offset": 16384 },
"limit_bytes": 16384
}Reads the next 16KB chunk using the next_cursor from the previous response.
Agent Behavior Patterns
Automatic Pagination Loop:
// Pseudo-code for automatic pagination
let result = shell_exec(cmd, args, { page: { limit_bytes: 40000 } });
while (result.next_cursor) {
// Process current chunk
processChunk(result.stdout_chunk);
// Get next chunk
result = shell_exec(cmd, args, {
page: { cursor: result.next_cursor }
});
}Spill File Handling:
// Pseudo-code for handling spilled files
let result = shell_exec(cmd, args, { on_large_output: "spill", page: {} });
if (result.spill_uri) {
let chunk = read_file_chunk(result.spill_uri, 40000);
while (chunk.next_cursor) {
processChunk(chunk.data);
chunk = read_file_chunk(result.spill_uri, chunk.next_cursor);
}
}Development
# Run tests
npm test
# Run tests with UI
npm test:ui
# Build TypeScript
npm run build
# Development mode
npm run devGit Worktree Support
shemcp automatically supports git worktrees, which are commonly used for parallel development workflows. When an agent creates a worktree (e.g., git worktree add ../repo-feature -b feature), the worktree is created as a sibling directory outside the primary sandbox.
How it works
When a path outside the sandbox is requested, shemcp checks if it matches the worktree naming pattern (sibling directory starting with the sandbox basename)
If it matches, shemcp runs
git worktree listto verify it's a legitimate worktreeVerified worktrees are added to a session allowlist for efficient subsequent access
The worktree list is cached for 60 seconds to minimize git command overhead
Example
/Users/user/myproject # Primary sandbox (git root)
/Users/user/myproject-feature # Worktree - automatically allowed
/Users/user/myproject-bugfix # Worktree - automatically allowed
/Users/user/other-project # NOT allowed - different projectDisabling Worktree Detection
If you prefer stricter security and don't need worktree support, disable it in your config file:
# In ~/.config/shemcp/config.toml
[security]
worktree_detection = falseWhen disabled, only paths within the primary sandbox root are allowed.
Security Considerations
β οΈ Important Security Notes:
Configuration Security: Config files should not be world-writable. The server warns about insecure permissions.
No Project-Level Configs: By design, there are no
.shemcp.tomlfiles in working directories to prevent AI from modifying its own security constraints.Principle of Least Privilege: Start with restrictive settings and gradually add permissions as needed.
Regular Auditing: Review your allowed commands and directories periodically.
Testing
The project includes a comprehensive test suite covering:
Configuration loading and validation
Policy enforcement
Command allowlisting/denylisting
Directory access controls
Environment filtering
Tool definitions
Server configuration
Run tests with: npm test
Troubleshooting
Common Issues
"Command not allowed" errors:
Check your
commands.allowpatterns in the configEnsure the command matches the regex patterns
Verify the command isn't in the
commands.denylist
"Directory not allowed" errors:
The sandbox root is the Git project root (or process.cwd() if no Git repo). All paths must be inside it.
Use SHEMCP_ROOT or MCP_SANDBOX_ROOT to override for special cases.
Ensure the directory exists and is accessible.
Server not connecting:
Verify you're using
npx -y shemcp@latestin your MCP client configIf using a local installation, check that the server was built with
npm run buildLook for error messages in the MCP client logs
Check the debug log at
~/.shemcp/debug.log
Debug Configuration
To see your current configuration:
# List Claude Code MCP servers
claude mcp list
# Get details about your shell server
claude mcp get shell
# Remove server if needed
claude mcp remove shell
# Check which config files exist (optional - only if you created custom config)
ls -la ~/.config/shemcp/config.toml
ls -la /etc/shemcp/config.tomlLicense
MIT
Available Tools
3 toolsread_file_chunkA
Reads paginated data from a spilled file (stdout or stderr). Accepts cursor and limit_bytes to safely stream contents.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URI of the spilled file (e.g., 'mcp://tmp/exec-abc123.out' or 'mcp://tmp/exec-abc123.err') | |
| cursor | No | Position marker indicating where to start reading from the file. | |
| limit_bytes | No | Maximum bytes to read |
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. It clearly indicates a non-destructive read operation with pagination and streaming. While it does not detail error handling or edge cases, it adequately discloses the core 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?
Two concise sentences that front-load the core purpose. No redundant or extraneous information. 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?
The description explains input parameters and general function but does not describe output format or behavior (e.g., how data is returned, whether pagination state is provided). Given no output schema, this is a moderate gap.
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 baseline is 3. The description briefly mentions 'cursor and limit_bytes' but adds no significant meaning beyond the schema's detailed definitions (e.g., not explaining cursor format or limit_bytes range).
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 'Reads paginated data from a spilled file (stdout or stderr)', specifying the action and resource. It distinguishes from sibling tools (shell_exec, shell_info) by focusing on file reading rather than execution or info retrieval.
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 for streaming large file contents safely but does not explicitly state when to use this tool over siblings or provide exclusions. The phrase 'safely stream contents' hints at context but lacks clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell_execA
Execute an allow-listed command within the sandbox (git project root). Optional cwd must be a relative path from the sandbox root, or an absolute path within the sandbox or a valid git worktree. Supports pagination via limit_bytes and next_cursor (page and cursor are required for pagination). Automatically spills large outputs to file with spill_uri.
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes | The command to execute (e.g., 'git', 'npm', 'python') | |
| args | No | Command arguments as an array of strings (e.g., ['status', '--short']) | |
| cwd | No | Relative path from sandbox root, or absolute path within the sandbox or a valid git worktree | |
| timeout_ms | No | Command timeout in milliseconds (deprecated, use timeout_seconds instead) | |
| timeout_seconds | No | Command timeout in seconds (1-600, will be clamped to policy limits) | |
| max_output_bytes | No | Maximum output size in bytes (1000-10M, will be clamped to policy limits) | |
| page | Yes | Pagination configuration. Pagination is always on and hence a required attribute. | |
| on_large_output | No | How to handle large outputs | spill |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses key behaviors: allow-listing, sandbox scope, cwd constraints, pagination requirements, and automatic spilling of large outputs. It does not cover error handling or security details, but sufficiently reveals operational characteristics.
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 concise (3-4 sentences) and front-loaded, with each sentence serving a distinct purpose: stating intent, cwd rules, pagination, and output handling. No unnecessary words.
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 (8 params, nested objects, no output schema), the description covers main behaviors but lacks details on return format, error scenarios, and how pagination fits into the response. It is adequate but not fully 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?
Schema description coverage is 100%, so baseline is 3. The description adds context (allow-listed, sandbox, cwd constraints) but does not significantly enhance individual parameter meanings beyond the schema's detailed descriptions.
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: executing an allow-listed command within a sandbox. It specifies the resource (command) and scope (git project root), distinguishing it from siblings like read_file_chunk and shell_info.
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 context on cwd constraints and pagination, but does not explicitly state when to use this tool versus alternatives like read_file_chunk or shell_info. No when-not or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell_infoA
Get sandbox information including the sandbox root path, allow/deny command policy, and server version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly states what information is returned, but does not explicitly note that the tool is read-only or safe. However, this is easily inferred from the description.
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 no extraneous words. It efficiently conveys the tool's purpose and output.
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 simple information retrieval tool with no parameters and no output schema, the description is complete enough, listing the three key pieces of information returned.
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 tool has no parameters, so schema coverage is 100%. The baseline is 4, and the description adds no further parameter details, which is appropriate.
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 uses a clear verb ('Get') and identifies the resource ('sandbox information'), listing specific items (root path, policy, version). It also distinguishes from siblings like read_file_chunk and shell_exec.
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 explicit when-to-use or when-not guidance is provided. The usage is implied for obtaining sandbox configuration, but alternatives like shell_exec are not mentioned. Minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.19.0- First observed
read_file_chunk - First observed
shell_exec - First observed
shell_info
TDQS
Scored across 3 tools
Each tool has a clear, distinct purpose: reading spilled output, executing commands, and retrieving sandbox info. No overlap exists.
All tool names follow a consistent verb_noun pattern with snake_case: read_file_chunk, shell_exec, shell_info.
Three tools is on the low end but appropriate for a focused sandbox execution server. The scope is narrow yet complete enough.
Core operations (execute, read output, info) are covered, but missing features like managing spilled files, listing sandbox contents, or aborting commands represent notable gaps.
Maintenance
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personalβ¦
MCP server for building and testing AI agents with multi-model experimentation and insights.
- ArcjetOAuthcom.arcjet
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseBqualityFmaintenanceA server that uses the Model Context Protocol (MCP) to allow AI agents to safely execute shell commands on a host system.12349MIT
- AlicenseBqualityAmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.137046MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI clients to execute shell, Python, and Node commands on the local machine across platforms.31MIT
- AlicenseNot gradedqualityBmaintenanceA self-hosted MCP server that gives AI coding assistants direct shell access to your local machine, enabling execution of arbitrary bash commands for development workflows.3,443-