MCP System Server
A Model Context Protocol (MCP) server that provides system automation and control capabilities for Claude.
Features
- 🖥️ Command Execution: Run system commands safely
- 📊 System Information: Get CPU, memory, disk, and OS details
- 🔄 Process Management: List and kill processes
- 🌐 Network Tools: Check ports and network interfaces
- 🔧 Environment Variables: Get and set environment variables
- 💾 Disk Usage: Monitor disk space
- 🚀 Service Status: Check system service status (macOS/Linux)
Installation
- Prerequisites:
- Node.js 18+ installed
- Install the MCP server:
cd /Users/bard/Code/mcp-system
npm install
- Add to Claude Desktop config:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json: ``json { "mcpServers": { "system": { "command": "node", "args": ["/Users/bard/Code/mcp-system/src/index.js"] } } } ``
- Restart Claude Desktop
Usage
Execute Commands
// Run a simple command
system_exec({ command: "ls -la" })
// Run with specific working directory
system_exec({
command: "npm install",
cwd: "/path/to/project"
})
// Run with environment variables
system_exec({
command: "echo $MY_VAR",
env: { MY_VAR: "Hello World" }
})
System Information
// Get all system info
system_info({ type: "all" })
// Get specific info
system_info({ type: "cpu" }) // CPU details
system_info({ type: "memory" }) // Memory usage
system_info({ type: "os" }) // OS information
system_info({ type: "network" }) // Network interfaces
Process Management
// List all processes
process_list()
// Filter processes
process_list({ filter: "node" })
// Limit results
process_list({ limit: 10 })
// Kill a process
process_kill({ pid: 12345 })
process_kill({ pid: 12345, signal: "SIGKILL" })
Network Tools
// Check if a port is in use
port_check({ port: 3000 })
port_check({ port: 8080, host: "0.0.0.0" })
// Get network interface info
network_info()
Environment Variables
// Get all environment variables
env_get()
// Get specific variable
env_get({ variable: "PATH" })
// Set environment variable (for current process)
env_set({ variable: "MY_VAR", value: "my_value" })
Disk Usage
// Check disk usage
disk_usage() // Default: root directory
disk_usage({ path: "/Users" })
Service Status (macOS/Linux)
// Check service status
service_status({ service: "nginx" })
service_status({ service: "postgresql" })
Tool Reference
| Tool | Description | Required Args | |------|-------------|---------------| | system_exec | Execute system command | command | | system_info | Get system information | None | | process_list | List running processes | None | | process_kill | Kill a process | pid | | env_get | Get environment variables | None | | env_set | Set environment variable | variable, value | | service_status | Check service status | service | | port_check | Check if port is in use | port | | disk_usage | Get disk usage info | None | | network_info | Get network interfaces | None |
Security Considerations
This tool executes system commands with the same privileges as the Node.js process. Be careful when:
- Running commands that modify system files
- Killing processes
- Setting environment variables
- Executing untrusted commands
Platform Support
- ✅ macOS: Full support
- ✅ Linux: Full support
- ⚠️ Windows: Limited support (some features may not work)
Development
Testing the server:
# Run directly
node src/index.js
# Test with sample commands
echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | node src/index.js
Common Issues
- Permission denied: Some commands require elevated privileges
- Command not found: Ensure the command is in PATH
- Platform differences: Commands may vary between OS
License
MIT












