@modelcontextprotocol/server-wsl
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@modelcontextprotocol/server-wsl Show me my WSL distributions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Local Opsecured Build:
Independent Build:
@modelcontextprotocol/server-wsl
An MCP server that gives Claude Desktop full access to your Windows Subsystem for Linux (WSL) environment. Run commands, read and write files, and inspect your distributions — all from a Claude conversation on Windows.
Prerequisites
Windows 10 version 2004+ or Windows 11
WSL 2 installed (
wsl --installfrom an admin PowerShell)At least one Linux distribution installed via the Microsoft Store or
wsl --install -d <Distro>Node.js 18 or later (for building from source)
Related MCP server: Linux Bash MCP Server
Installation
From npm (recommended)
npm install -g @modelcontextprotocol/server-wslFrom source
git clone https://github.com/modelcontextprotocol/servers.git
cd servers/src/wsl
npm install
npm run buildConfiguration
Add the server to your Claude Desktop configuration file.
Config file location:
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Using npx (zero-install)
{
"mcpServers": {
"wsl": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-wsl"]
}
}
}Using a globally installed package
{
"mcpServers": {
"wsl": {
"command": "mcp-server-wsl"
}
}
}Running via WSL itself (alternative)
If you prefer to run the server inside WSL, you can invoke it through wsl.exe:
{
"mcpServers": {
"wsl": {
"command": "wsl.exe",
"args": ["node", "/path/to/wsl-mcp/dist/index.js"]
}
}
}After editing the config, restart Claude Desktop. You should see the WSL tools appear in the Claude tool picker.
Available Tools
Tool | Description |
| List all installed WSL distributions, their state (Running/Stopped), WSL version, and which is the default |
| Execute a bash command in a WSL distribution; returns stdout, stderr, and exit code |
| Read a text file from the WSL filesystem by absolute path |
| Write or overwrite a file in the WSL filesystem |
| List directory contents with names, types, permissions, sizes, and timestamps |
| Get detailed info about a distribution: WSL version, state, kernel, OS release, current user |
Tool parameters
run_command
Parameter | Type | Required | Description |
| string | ✅ | Bash command to run (passed to |
| string | Distribution name; defaults to your default distro | |
| number | Milliseconds before the command is killed; defaults to 30 000 |
read_file
Parameter | Type | Required | Description |
| string | ✅ | Absolute path within the WSL filesystem |
| string | Distribution name; defaults to your default distro |
write_file
Parameter | Type | Required | Description |
| string | ✅ | Absolute path within the WSL filesystem |
| string | ✅ | UTF-8 text content to write |
| string | Distribution name; defaults to your default distro |
list_directory
Parameter | Type | Required | Description |
| string | ✅ | Absolute path to the directory |
| string | Distribution name; defaults to your default distro |
get_distro_info
Parameter | Type | Required | Description |
| string | Distribution name; defaults to your default distro |
Example prompts
Once connected, try asking Claude:
"What WSL distributions do I have installed?"
"Run
df -hin my Ubuntu distro and show me disk usage""Read the file
/etc/hostsfrom WSL""Create a Python script at
/home/user/hello.pythat prints Hello, World""List what's in my home directory in WSL"
"What kernel version is my WSL instance running?"
Security considerations
Commands execute as the default user of the chosen distribution (typically your regular Linux user, not root).
There is no path sandboxing — Claude can read and write any file the WSL user has access to. Grant this MCP server only to trusted Claude conversations.
Command output is capped at 10 MB to prevent runaway processes from overwhelming the host.
The default command timeout is 30 seconds; use
timeout_msto increase it for long-running tasks.
Troubleshooting
"wsl.exe not found"
WSL is not installed or not on the system PATH. Run wsl --install from an admin PowerShell.
"No default WSL distribution is configured"
You have WSL installed but no distribution set as default. Fix with: wsl --set-default <DistroName>
Distribution shows as Stopped but commands still work This is expected — WSL automatically starts a stopped distribution when a command is run.
UTF-8 output looks garbled
Some older Windows builds emit WSL list output as UTF-16 LE. The server normalises this automatically; if you still see issues, ensure your WSL is up to date (wsl --update).
License
MIT
Available Tools
7 toolsget_distro_infoA
Get detailed information about a specific WSL distribution. Returns the WSL version, running state, current user identity, Linux kernel version, and OS release details (distro name, version, etc.). Useful for understanding the environment before running commands.
Inputs: distro.
list_directoryA
List the contents of a directory in the WSL filesystem. Returns each entry with its name, type (file, directory, symlink), Unix permissions, size in bytes, and last-modified timestamp. Equivalent to running ls -la in the target directory.
Inputs: path (required), distro.
list_distrosA
List all installed WSL distributions and their current state. Shows each distribution's name, whether it is Running or Stopped, its WSL version (1 or 2), and which one is the default. Use this to discover available distributions before running commands.
Inputs: no named parameters.
read_fileA
Read the contents of a file from the WSL filesystem. Returns the file content as a UTF-8 string. Supports any text file accessible to the default WSL user. For binary files, consider piping through base64 using run_command instead.
Inputs: path (required), distro.
run_commandA
Execute a shell command inside a WSL distribution as the default (unprivileged) user. Returns stdout, stderr, and the exit code. Do NOT include 'sudo' in the command — it will hang waiting for a password that cannot be supplied. For operations that require root access use run_privileged_command instead.
Inputs: command (required), distro, timeout_ms.
run_privileged_commandA
⚠️ ELEVATED — runs as root (via wsl.exe --user root). IMPORTANT: Before calling this tool you MUST show the user the exact command that will be executed and ask for explicit confirmation. Only call it once the user has confirmed. Use this instead of sudo — do not include 'sudo' in the command string. Examples of operations that require this tool: apt install, systemctl, editing /etc files, chown/chmod on system paths, mounting filesystems.
Inputs: command (required), distro, reason, timeout_ms.
write_fileA
Write or overwrite a file in the WSL filesystem with the provided content. Creates the file if it does not exist; overwrites it if it does. The parent directory must already exist. Use run_command with mkdir -p to create missing directories first.
Inputs: path (required), content (required), distro.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clear, distinct purpose. File operations, command execution, and distro management tools are clearly separated with no overlap.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., read_file, list_distros, run_privileged_command). No mixing of conventions.
7 tools is a well-scoped set for managing WSL: file operations, command execution (normal and privileged), and distro discovery/inspection. Not too few or too many.
Covers essential WSL operations (file management, command execution, distro info). Minor missing operations like starting/stopping distros or managing defaults, but these are less critical for typical workflows.
Maintenance
Related MCP Connectors
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Connect ChatGPT, Claude, Cursor or VS Code to your Windows PC: files, terminal, browser, apps.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude Desktop to interact with and view tmux session content, allowing AI assistants to read from, control, and observe terminal sessions.13589 npm306MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables Claude Desktop to execute bash commands and scripts in WSL2 Linux distributions on Windows.6MIT
- FlicenseNot gradedqualityNot gradedmaintenanceAdds automation capabilities to Claude Desktop through MCP and enables Claude Desktop to act as a model gateway for Claude Code, solving WSL-Windows integration challenges through file-based bidirectional communication.-
- FlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to execute terminal commands in a controlled workspace via the Model Context Protocol.-