Filesystem MCP Server
Node.js server implementing Model Context Protocol (MCP) for filesystem operations.
Features
- Read/write files
- Create/list/delete directories
- Move files/directories
- Search files
- Get file metadata
Note: The server will only allow operations within directories specified via args.
API
Resources
file://system: File system operations interface
Tools
- read_file
- Read complete contents of a file
- Input:
path (string)
- Reads complete file contents with UTF-8 encoding
- read_multiple_files
- Read multiple files simultaneously
- Input:
paths (string[])
- Failed reads won't stop the entire operation
- write_file
- Create new file or overwrite existing (exercise caution with this)
- Inputs:
path (string): File location
content (string): File content
- edit_file
- Make selective edits using advanced pattern matching and formatting
- Features:
- Line-based and multi-line content matching
- Whitespace normalization with indentation preservation
- Fuzzy matching with confidence scoring
- Multiple simultaneous edits with correct positioning
- Indentation style detection and preservation
- Git-style diff output with context
- Preview changes with dry run mode
- Failed match debugging with confidence scores
- Inputs:
path (string): File to edit
edits (array): List of edit operations
oldText (string): Text to search for (can be substring)
newText (string): Text to replace with
dryRun (boolean): Preview changes without applying (default: false)
options (object): Optional formatting settings
preserveIndentation (boolean): Keep existing indentation (default: true)
normalizeWhitespace (boolean): Normalize spaces while preserving structure (default: true)
partialMatch (boolean): Enable fuzzy matching (default: true)
- Returns detailed diff and match information for dry runs, otherwise applies changes
- Best Practice: Always use dryRun first to preview changes before applying them
- create_directory
- Create new directory or ensure it exists
- Input:
path (string)
- Creates parent directories if needed
- Succeeds silently if directory exists
- list_directory
- List directory contents with [FILE] or [DIR] prefixes
- Input:
path (string)
- move_file
- Move or rename files and directories
- Inputs:
source (string)
destination (string)
- Fails if destination exists