Safe Terminal MCP Server

Safe Terminal MCP Server

A secure, controlled terminal MCP server that enables executing whitelisted shell commands safely with multiple security layers.

Category
Visit Server

README

Safe Terminal MCP Server

A secure, controlled terminal MCP server with strict command whitelisting and multiple safety layers.

๐Ÿ›ก๏ธ Security Features

  • Command Whitelisting: Only pre-approved commands are allowed
  • Pattern Blocking: Blocks shell metacharacters and dangerous patterns
  • Path Sanitization: Prevents directory traversal attacks
  • Dangerous Command Control: Requires explicit permission for risky commands
  • Resource Limits: Timeouts and output size limits
  • File Type Restrictions: Only safe file extensions allowed

๐Ÿš€ Quick Setup

1. Install Dependencies

npm install

2. Build Project

npm run build

3. Test

npm start

๐Ÿ“ Project Structure

safe-terminal-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ index.ts          # Main server code
โ”œโ”€โ”€ dist/                 # Compiled JavaScript (generated)
โ”œโ”€โ”€ package.json          # Project dependencies
โ”œโ”€โ”€ tsconfig.json         # TypeScript configuration
โ””โ”€โ”€ README.md            # This file

๐Ÿ”ง Configuration

Safe Commands (Built-in)

  • Read-only: ls, pwd, cat, head, tail, find, grep, wc
  • System info: date, whoami, uname, df, free, uptime
  • Development: git, npm, node, python (requires allowDangerous)

Dangerous Commands

These require allowDangerous: true:

  • File modification: touch, mkdir, cp, mv, rm
  • Network access: ping, curl, wget
  • Code execution: node, python, npm
  • System changes: chmod, chown

๐Ÿ”Œ Claude Desktop Integration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "safe-terminal": {
      "command": "node",
      "args": ["/absolute/path/to/safe-terminal-mcp/dist/index.js"]
    }
  }
}

๐Ÿ”จ Available Tools

1. run_safe_command

Execute whitelisted commands with safety checks.

Parameters:

  • command (required): The command to execute
  • allowDangerous (optional): Allow dangerous commands (default: false)
  • workingDir (optional): Working directory (relative to server root)

Example:

{
  "command": "ls -la",
  "allowDangerous": false,
  "workingDir": "src"
}

2. list_safe_commands

List all available commands and their danger levels.

3. read_file

Safely read text files with extension checking.

Parameters:

  • path (required): File path to read

4. list_directory

List directory contents safely.

Parameters:

  • path (optional): Directory path (default: current directory)

๐Ÿ›ก๏ธ Safety Features Explained

Command Whitelisting

Only pre-approved commands in SAFE_COMMANDS are allowed. Each command is categorized as safe or dangerous.

Pattern Blocking

Blocks dangerous shell patterns:

  • Shell metacharacters: ;, &, |, `, $, (), {}
  • Directory traversal: ..
  • System directories: /etc/, /var/, /usr/bin/
  • Privilege escalation: sudo, su
  • File redirection: >, <

Path Sanitization

All file paths are resolved and checked to ensure they stay within the working directory.

Resource Limits

  • Timeout: 30 seconds max execution time
  • Output: 1MB max output size
  • File size: Files truncated at 1MB

๐Ÿงช Testing

Test the server manually:

# Start the server
npm start

# In another terminal, test with MCP inspector
npx @modelcontextprotocol/inspector node dist/index.js

๐Ÿ” Security Best Practices

  1. Run in Isolation: Use in a sandboxed environment or VM
  2. Monitor Commands: Review all command executions
  3. Limit Dangerous Commands: Only enable when absolutely necessary
  4. Regular Updates: Keep dependencies updated
  5. Principle of Least Privilege: Only grant necessary permissions

โš ๏ธ Important Notes

  • This is much safer than unrestricted terminal access, but still carries risks
  • Dangerous commands should only be enabled when necessary
  • Always review commands before execution in production
  • Consider running in a containerized environment for additional isolation

๐Ÿ”„ Customization

You can easily customize the server by:

  • Adding new safe commands to SAFE_COMMANDS
  • Modifying DANGEROUS_PATTERNS for additional blocking
  • Adjusting resource limits in CONFIG
  • Adding new tools for specific use cases

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured