Skip to main content
Glama
README.md
# 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

MIT

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues