wsl-files
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WSL_FILES_ROOTS | No | Allowed folders, separated by `:`; the first one is where relative paths start | ~/dev |
| WSL_FILES_STATE | No | Where `changes.log` goes | ~/.local/state/wsl-files |
| WSL_FILES_WSL_DRIVE | No | Windows drive letter mapped to the WSL root | W |
| WSL_FILES_WINDOWS_USER | No | User in `C:\Users\<user>\dev` | $USER |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_rootsA | The folders this server may read and write. Every other path is refused. |
| read_fileA | Read a text file. Each line comes back as ''. path: the file (~/dev/..., an absolute WSL path, a Windows spelling of one, or relative to the first root). offset: first line to return, counting from 1. limit: how many lines to return. |
| write_fileA | Create a file or replace it whole. Missing parent folders are created. path: the file to write. content: the complete new contents. |
| edit_fileA | Replace exact text in a file. old_string must appear exactly once unless replace_all is true. path: the file to change. old_string: the exact text to find (copied from read_file output, without line numbers). new_string: the text to put in its place. replace_all: replace every occurrence instead of requiring a single one. |
| list_dirA | List a folder: subfolders first (ending in /), then files with their sizes. path: the folder; empty means the first root (~/dev). depth: how many levels to show (1-5). .git, node_modules, .venv and caches are not entered. |
| find_filesA | Find files by name with a glob such as '.md', 'NOW.md' or 'docs/**/.py'. pattern: the glob, matched against the path relative to |
| searchA | Search file contents with a regular expression. Returns 'file:line: text' for each match. pattern: a Python regular expression. path: a folder or a single file; empty means the first root. Narrow it: ~/dev is large. glob: only search files whose relative path matches this glob, e.g. '*.md'. ignore_case: match regardless of case. max_results: stop after this many matching lines. |
| copy_to_windowsA | Copy any file (binary too: docx, pdf, png, .skill) from WSL into the Windows staging folder, where your own file tools can open it. Off unless the server has a staging folder set. path: the file in WSL. name: file name (or sub/path) inside the staging folder; empty keeps the file's own name. |
| copy_from_windowsA | Copy a file you made in the Windows staging folder (binary too) to a path in WSL. name: the file inside the staging folder (a name, a sub/path, or its full Windows path). path: where it goes in WSL (same rules as write_file). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Tools are clearly separated by action and resource: reading, writing, editing, listing, finding, searching, and Windows staging copies each have a distinct purpose. No two tools overlap ambiguously.
Most names follow a verb_noun pattern (read_file, write_file, list_dir, find_files) or verb_prep_noun (copy_to_windows). The lone 'search' is just a verb, a minor deviation from the otherwise consistent convention.
9 tools is well within the ideal 3–15 range for a file-access server. Each tool covers a distinct capability without redundancy.
Core read, write, edit, list, find, search, and cross-boundary copy operations are present. Delete and move/rename are missing, limiting full lifecycle coverage, but the main file workflows are supported.