filesystem-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| createA | Write whole text files (create new ones, overwrite, or append) or make empty directories. Missing parent directories are created. edit or patch changes part of an existing file. |
| deleteA | Delete files, directories, or symlinks, like rm or rm -r. Paths are exact; globs are not expanded. undo reverts a delete whose result gives an undo id. |
| diffA | Compare two text files and return a unified diff from a to b, like diff -u. Identical files give no hunks; binary and non-UTF-8 files are refused. |
| editA | Edit text files in place by replacing exact oldText with newText, like str_replace. Pass path with edits, or files for a batch; never both. Each oldText must match exactly once, and a file is written only if all its edits match. replace_text replaces every occurrence across files. |
| listA | List a directory's files and subdirectories as a tree of names, like ls or tree, one level deep unless maxDepth is raised. Hidden entries are skipped unless includeHidden is set, and ignored ones (.gitignore matches, node_modules, dist, build, out, tmp) unless includeIgnored is set. includeSizes adds sizes and a total; stat returns dates; find_files searches by name pattern. |
| moveA | Move, rename, or copy files and directories, like mv or cp -r. Each destination is the full new path, not a folder to move into; missing parent directories are created. undo reverts a move whose result gives an undo id; a copy cannot be undone. |
| patchA | Apply a single-file unified diff to one existing text file, like git apply. Nothing is written unless every hunk applies in file order with exactly matching context; hunks are found by their context, so start line numbers may be off. |
| readA | Read text files, like cat: whole, or one slice via head, tail, or startLine/endLine. Images and audio return as media; pass binary: true to get any other binary file whole as a base64 embedded resource. |
| replace_textA | Find and replace every occurrence of literal text or an RE2 regex, like sed -i, in one file or all files under a directory, optionally filtered by glob. The pattern runs over the whole file: it can span lines, and ^ and $ anchor to file start and end. edit replaces one unique exact match. |
| list_rootsA | List the directories this server can access, as absolute paths, including any the user granted during this session. Directories marked read-only appear in readOnlyDirs; writes, moves, and deletes under them are refused. Other tools can ask the user to grant access to a path outside them. |
| search_textA | Search file contents for literal text or an RE2 regex, like grep; returns matching lines with line numbers and paths relative to the root, ready to pass to read. searchPattern is the text to find, matched within one line; pattern filters files by glob. find_files matches file names. |
| find_filesA | Find files by name or glob pattern; returns file paths relative to the root, ready to pass to read. A pattern without / matches file names at any depth. search_text searches contents. |
| statA | Get metadata without reading contents, like ls -ld: type, size (files) or entryCount (directories; secret files not counted), tokenEstimate, timestamps, permissions (readOnly on Windows), MIME type guessed from the extension, and symlink target. Also checks whether paths exist: each missing path gets its own NOT_FOUND entry. |
| undoA | Revert earlier calls that changed files, by undo id or the last N calls. A file is restored only if unchanged since. dryRun lists the history. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| get-help | Navigation guide for filesystem-mcp tools and constraints. Use list_roots to inspect configured or accepted roots, then list/find_files -> stat -> read. Never guess paths. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| filesystem-mcp-instructions | Navigation guide for filesystem-mcp tools and constraints. Use list_roots to inspect configured or accepted roots, then list/find_files -> stat -> read. Never guess paths. |
TDQS
Scored across 14 tools
Each tool has a clearly distinct operation, and the descriptions explicitly distinguish the easily confused ones: edit vs replace_text vs patch, search_text vs find_files, and read vs stat vs list. There are no overlapping tools that would plausibly cause misselection.
All names use consistent lower snake_case and are either concise verbs (read, create, delete, move, undo) or verb_noun forms (search_text, find_files, list_roots). No mixed conventions or vague naming appear.
At 14 tools, the surface is well scoped for a filesystem server: core file operations, discovery, comparison, patching, and undo each earn a place. There is no obvious redundancy that should be collapsed.
The set covers the full lifecycle: listing/root discovery, reading, creating, editing, patching, moving/copying, deleting, searching, metadata, diffing, and undo. Missing niche operations like chmod or symlink creation are minor and not required for the apparent text-file-focused scope.