Skip to main content
Glama
spences10
by spences10
README.md
# mcp-wsl-exec

A Model Context Protocol (MCP) server for **Windows + Claude Desktop
users** to interact with Windows Subsystem for Linux (WSL). Provides
both read-only information gathering and secure command execution
capabilities.

<a href="https://glama.ai/mcp/servers/wv6df94kb8">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/wv6df94kb8/badge" />
</a>

## ⚠️ Important: Who Should Use This?

**✅ You SHOULD use this if:**

- You're using **Claude Desktop on Windows**
- You need to interact with your WSL environment
- You want to provide WSL context to Claude (system info, processes,
  files, etc.)

**❌ You DON'T need this if:**

- You're using **Claude Code** (it has native bash access)
- You're on Linux/macOS (use native tools instead)
- You only need Windows PowerShell/CMD (use a different MCP server)

## Features

### 📊 Information Gathering (Read-Only)

- 🖥️ Get system information (OS, kernel, hostname)
- 📁 Browse directory contents
- 💾 Check disk usage
- ⚙️ List environment variables
- 🔄 Monitor running processes

### 🔧 Command Execution (With Safety)

- 🔒 Secure command execution in WSL environments
- ⚡ Built-in safety features:
  - Dangerous command detection
  - Command confirmation system
  - Path traversal prevention
  - Command sanitization
- 📁 Working directory support
- ⏱️ Command timeout functionality
- 🛡️ Protection against shell injection

## Configuration

This server requires configuration through your MCP client. Here are
examples for different environments:

### Cline Configuration

Add this to your Cline MCP settings:

```json
{
	"mcpServers": {
		"mcp-wsl-exec": {
			"command": "npx",
			"args": ["-y", "mcp-wsl-exec"]
		}
	}
}
```

### Claude Desktop Configuration

Add this to your Claude Desktop configuration:

```json
{
	"mcpServers": {
		"mcp-wsl-exec": {
			"command": "npx",
			"args": ["-y", "mcp-wsl-exec"]
		}
	}
}
```

## API

The server provides 7 MCP tools:

### Information Gathering (Read-Only) 📊

These tools provide context about your WSL environment without making
changes:

#### get_system_info

Get system information (OS version, kernel, hostname).

**Parameters:** None

#### get_directory_info

Get directory contents and file information.

**Parameters:**

- `path` (string, optional): Directory path (defaults to current
  directory)
- `details` (boolean, optional): Show detailed information
  (permissions, sizes, etc.)

#### get_disk_usage

Get disk space information.

**Parameters:**

- `path` (string, optional): Specific path to check (defaults to all
  filesystems)

#### get_environment

Get environment variables.

**Parameters:**

- `filter` (string, optional): Filter pattern to search for specific
  variables

#### list_processes

List running processes.

**Parameters:**

- `filter` (string, optional): Filter by process name

### Command Execution (Potentially Destructive) 🔧

Use these tools when you need to make changes or run custom commands:

#### execute_command

Execute a command in WSL with safety checks and validation.

**Parameters:**

- `command` (string, required): Command to execute
- `working_dir` (string, optional): Working directory for command
  execution
- `timeout` (number, optional): Timeout in milliseconds

**Note:** Dangerous commands will require confirmation via
`confirm_command`.

#### confirm_command

Confirm execution of a dangerous command that was flagged by safety
checks.

**Parameters:**

- `confirmation_id` (string, required): Confirmation ID received from
  execute_command
- `confirm` (boolean, required): Whether to proceed with the command
  execution

## Safety Features

### Dangerous Command Detection

The server maintains a list of potentially dangerous commands that
require explicit confirmation before execution, including:

- File system operations (rm, rmdir, mv)
- System commands (shutdown, reboot)
- Package management (apt, yum, dnf)
- File redirections (>, >>)
- Permission changes (chmod, chown)
- And more...

### Command Validation

Commands are executed through `bash -c`, so normal shell syntax such
as pipes, quotes, redirects, and command chaining is preserved. The
server validates empty/null-byte inputs, quotes arguments used by
built-in tools, and requires confirmation for potentially dangerous
commands.

## Development

### Setup

1. Clone the repository
2. Install dependencies:

```bash
pnpm install
```

3. Build the project:

```bash
pnpm build
```

4. Run in development mode:

```bash
pnpm dev
```

### Publishing

The project uses changesets for version management. To publish:

1. Create a changeset:

```bash
pnpm changeset
```

2. Version the package:

```bash
pnpm changeset version
```

3. Publish to npm:

```bash
pnpm release
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Built on the
  [Model Context Protocol](https://github.com/modelcontextprotocol)
- Designed for secure WSL command execution

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: confirm_command handles safety checks, execute_command runs commands, get_directory_info lists files, get_disk_usage shows storage, get_environment retrieves variables, get_system_info provides system details, and list_processes shows running processes. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., confirm_command, execute_command, get_directory_info). The naming is uniform throughout, using 'get_' for retrieval operations and clear action-object pairs.

Tool Count5/5

With 7 tools, the server is well-scoped for WSL execution and system monitoring. Each tool serves a specific and necessary function, covering command execution, file management, system diagnostics, and process handling without being overly sparse or bloated.

Completeness4/5

The toolset provides strong coverage for WSL operations, including command execution, file system inspection, system monitoring, and environment management. A minor gap exists in file manipulation (e.g., create/delete files) or network-related tools, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessResponsive