mcp-system
# 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
1. **Prerequisites**:
- Node.js 18+ installed
2. **Install the MCP server**:
```bash
cd /Users/bard/Code/mcp-system
npm install
```
3. **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"]
}
}
}
```
4. **Restart Claude Desktop**
## Usage
### Execute Commands
```javascript
// 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
```javascript
// 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
```javascript
// 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
```javascript
// 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
```javascript
// 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
```javascript
// Check disk usage
disk_usage() // Default: root directory
disk_usage({ path: "/Users" })
```
### Service Status (macOS/Linux)
```javascript
// 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:
```bash
# 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
1. **Permission denied**: Some commands require elevated privileges
2. **Command not found**: Ensure the command is in PATH
3. **Platform differences**: Commands may vary between OS
## License
MITTDQS
Scored across 11 tools
Each tool targets a distinct system aspect: commands, system info, processes, env variables, services, ports, disk, network. There is no overlap between tools, and descriptions clearly differentiate the breadth of system_info from the specific disk_usage and network_info tools.
Tools follow a consistent domain_action pattern (e.g., process_list, env_get, port_check), with the second token being a verb or noun as appropriate. The only deviation is 'help', which is a common utility exception, but it does not disrupt overall readability or predictability.
With 11 tools, the server covers a broad system administration scope without being overwhelming. Each tool addresses a specific, identifiable need, and the count fits well within the typical 3-15 tool range for a comprehensive server.
The toolset has minor gaps: service start/stop and process creation are missing, but system_exec provides a general-purpose fallback for these actions. Read-only operations for env, ports, disk, and network are well covered, making the surface reasonably complete for diagnostic and basic management tasks.