@modelcontextprotocol/server-wsl
Click on "Install 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-wslShow 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)
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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/riparino/wsl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server