The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the BACH FileCommander listing page.
Part of the ellmos-ai family.
Quick Navigation: Tools Overview | System Architecture | Core Capabilities & Safety Invariants | Installation | Configuration | Comparison | Discoverability | Security | Ecosystem | Security Policy | Changelog | llms.txt
A comprehensive Model Context Protocol (MCP) server that gives AI assistants full filesystem access, bounded multi-file content search, process management, interactive shell sessions, and async filename search capabilities.
50 tools in a single server - everything an AI agent needs to interact with the local system.
Discovery keywords: local filesystem MCP server, multi-file content search MCP, safe delete MCP, Recycle Bin MCP server, process management MCP, interactive shell MCP, async file search for AI agents, cloud-lock-safe file operations, Markdown to PDF MCP, OCR MCP server, ZIP archive MCP.
Registry status: published on npm, indexed by jsDelivr, visible on LobeHub, listed on Glama, and prepared for the official MCP Registry via server.json. Some third-party directories still show older 43-tool metadata, so the canonical README/npm metadata should remain the source of truth until their reindex catches up.
[!NOTE] For AI Agents & LLM Integrations: FileCommander provides 50 specialized tools accessible via standard stdio transport. All tool names use the
fc_prefix to prevent namespace collisions. For LLMs, compact context and schema overviews are available inllms.txtandserver.json.
Most filesystem MCP servers only cover basic read/write operations. FileCommander goes further:
| Capability / Invariant | Guarantee & Implementation Details | Security & Operational Benefit |
|---|---|---|
| Local stdio & explicit egress | The MCP transport is local stdio, with no telemetry and no automatic network egress. fc_web_fetch makes outbound HTTP(S) requests only when a client explicitly invokes it; private targets are blocked by default unless allow_private is enabled. | Makes the network boundary visible to clients while retaining a local, port-free server transport. |
| Safe Deletion & Trash Protection | fc_safe_delete moves items to Windows Recycle Bin / macOS Trash / Linux FreeDesktop Trash. fc_set_safe_mode routes all deletes safely. | Prevents irreversible data loss from accidental recursive or bulk deletions. |
Cloud-Lock Resilient Move (fc_move) | Automatic detection of cloud sync filters (OneDrive, Dropbox, iCloud reparse points) with seamless copy+verify+delete fallback. | Eliminates EPERM / EBUSY failures during automated agent operations in sync directories. |
Cloud-Lock Diagnosis (fc_check_cloud_lock) | Read-only report of static cloud-path context plus target existence/type; Cloud Files hydration and process handles are explicitly reported as not checked when unavailable. | Agents can distinguish static OneDrive risk from an actual detected rename lock. |
| Bounded Multi-File Content Search | fc_search_content strictly caps inputs (max 50 explicit files, 10 MB per file, 200 matches, 200k chars) without glob recursion. | Prevents out-of-memory errors and catastrophic CPU lockups during large repository searches. |
| Automated Secret & Token Redaction | Content search excerpts automatically mask common API keys, bearer tokens, AWS credentials, and authorization headers. | Prevents LLM context contamination and accidental credential leakage in prompt history. |
| Interactive REPL & Session Isolation | Stateful interactive sessions (fc_start_session, fc_send_input, fc_read_output) for Python, Node.js, bash, and PowerShell with bounded buffers. | Allows multi-turn REPL debugging without unconstrained background process buildup. |
| Lossless Multi-Format Engine | Declarative conversion (fc_convert_format) across 7 structured formats (JSON, YAML, TOML, XML, CSV, INI, TOON). | Clean data normalization across heterogeneous configuration formats without data loss. |
| Mojibake & File Repair Engine | fc_fix_encoding, fc_fix_json, and fc_cleanup_file repair broken UTF-8 encoding (27+ patterns), malformed JSON syntax, BOMs, and NUL bytes. | Self-healing pipelines for corrupted files generated across divergent OS platforms. |
| Unprivileged Non-Elevation Execution | Designed and verified to run in standard unprivileged user-mode. Never requires administrative or root privileges. | Minimal attack surface; adheres to the principle of least privilege. |
| Six-language Runtime i18n Engine | Dynamic language switching and introspection (fc_set_language, fc_get_language) for German (de), English (en), Spanish (es), Chinese (zh), Japanese (ja), and Russian (ru). | Native multilingual developer experience and localized error reporting. |
| Multi-OS Verified Matrix | Tested across Windows, Ubuntu Linux, and macOS on Node.js 20, 22, and 24 with 283 automated assertions. | Continuous cross-platform parity and reliability. |
Add to your claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Restart Claude Desktop after saving.
The server communicates via stdio transport. Point your MCP client to the dist/index.js entry point or the ellmos-filecommander binary.
| Tool | Description |
|---|---|
fc_read_file | Read file contents with optional line limit |
fc_preview_file | Inspect MIME type and size first, then explicitly request bounded inline MCP content |
fc_read_multiple_files | Read up to 20 files in a single call |
fc_write_file | Write/create/append to files |
fc_edit_file | Line-based editing (replace, insert, delete lines) |
fc_str_replace | Replace a unique string in a file with context validation |
fc_list_directory | List directory contents (recursive, configurable depth) |
fc_create_directory | Create directories (including parents) |
fc_delete_file | Delete a file (permanent) |
fc_delete_directory | Delete a directory (with optional recursive flag) |
fc_safe_delete | Move to Recycle Bin / Trash (recoverable!) |
fc_move | Move or rename files and directories (cloud-lock safe) |
fc_copy | Copy files and directories |
fc_file_info | Get detailed file metadata (size, dates, type) |
fc_search_files | Synchronous file search with wildcard patterns |
fc_preview_file is the remote/headless fallback for local files. Its default call returns structured metadata only: resolved path, file:// URI, MIME type, byte size, preview kind, fixed 1 MiB limit, and the exact follow-up call. Content is read only after include_content=true. Eligible text and raster images use standard MCP text/image content blocks; PDFs use a bounded embedded resource. Files above 1 MiB and unsupported types remain metadata-only and are never read or Base64-encoded by the preview path.
| Tool | Description |
|---|---|
fc_search_content | Read-only literal or regex search within an explicit ordered list of files, with case, context, global, and per-file limits |
fc_search_content never expands globs, traverses directories, or recursively discovers files. It accepts at most 50 explicit UTF-8 text files, skips binary and files over 10 MB, and returns deterministic JSON. Matches are limited to 200 globally and 100 per file, context to 10 lines, excerpts to 500 characters, and serialized output to 200,000 characters. Missing, cloud-only, permission, encoding, binary, and size failures are reported per file so readable files still produce results. Common secret formats are redacted from excerpts.
| Tool | Description |
|---|---|
fc_start_search | Start a background search (returns immediately) |
fc_get_search_results | Retrieve results with pagination |
fc_stop_search | Cancel a running search |
fc_list_searches | List all active/completed searches |
fc_clear_search | Remove completed searches from memory |
| Tool | Description |
|---|---|
fc_execute_command | Execute a shell command (blocking, with timeout) |
fc_start_process | Start a background process (non-blocking) |
fc_open_path | Validate and open an existing local file or directory with the OS default application |
fc_list_processes | List running system processes |
fc_kill_process | Terminate a process by PID or name |
fc_open_path accepts only an existing file or directory and sends it to a fixed native default-handler launcher. Its structured result reports launcher_accepted=true|false, always reports user_visible="unknown", and identifies a machine-readable fallback: fc_preview_file with metadata-only arguments for files or fc_list_directory for directories. Launcher acceptance never claims that a GUI became visible. fc_start_process instead lets the caller choose an executable and arguments. fc_execute_command accepts an arbitrary shell command: Node's default shell is used for ordinary commands (COMSPEC/cmd.exe on Windows), while FileCommander's Windows special-character path can route through Windows PowerShell.
| Tool | Description |
|---|---|
fc_start_session | Start an interactive process (Python, Node, shell...) |
fc_read_output | Read session output |
fc_send_input | Send input to a running session |
fc_list_sessions | List all sessions |
fc_close_session | Terminate a session |
| Tool | Description |
|---|---|
fc_fix_json | Repair broken JSON (BOM, trailing commas, comments, single quotes) |
fc_validate_json | Validate JSON with detailed error position and context |
fc_cleanup_file | Remove BOM, NUL bytes, trailing whitespace, normalize line endings |
fc_fix_encoding | Fix Mojibake / double-encoded UTF-8 (27+ character patterns) |
fc_folder_diff | Track directory changes with snapshots (new/modified/deleted) |
fc_batch_rename | Pattern-based batch renaming (prefix/suffix, replace, auto-detect) |
fc_convert_format | Convert between JSON, CSV, INI, YAML, TOML, XML, and TOON formats |
fc_detect_duplicates | Find duplicate files using SHA-256 hashing |
fc_checksum | File hashing (MD5, SHA-1, SHA-256, SHA-384, SHA-512) with optional compare |
| Tool | Description |
|---|---|
fc_archive | Create, extract, and list ZIP archives |
| Tool | Description |
|---|---|
fc_ocr | Extract text from images via tesseract.js (optional dependency) |
| Tool | Description |
|---|---|
fc_check_cloud_lock | Report static cloud-sync context and target state; never claim an active lock without evidence (Windows) |
| Tool | Description |
|---|---|
fc_get_time | Get current system time with timezone info |
fc_set_safe_mode | Toggle safe mode: all deletes go through Recycle Bin / Trash |
fc_set_language | Set the runtime language (de, en, es, zh, ja, or ru) |
fc_get_language | Read the active runtime language and all supported language codes |
| Tool | Description |
|---|---|
fc_md_to_html | Markdown to standalone HTML with CSS styling (headers, code blocks, tables, nested lists, blockquotes, images, checkboxes) |
fc_md_to_pdf | Markdown to PDF via headless browser (Edge/Chrome). Falls back to HTML if no browser is available |
| Tool | Description |
|---|---|
fc_web_fetch | Fetch a web page and return content by mode: extract (clean main text), raw (HTTP body), links, forms, or headers. Read-only network tool; SSRF guard blocks internal/private targets by default. |
Total: 50 tools
| Feature | FileCommander | Desktop Commander | Official Filesystem |
|---|---|---|---|
| File read/write/copy/move | 14 tools | Yes | Yes |
| Safe delete (Recycle Bin) | Yes | No | No |
| Explicit multi-file content search | Yes | No | No |
| Async background search | 5 tools | No | No |
| Interactive sessions (REPL) | 5 tools | Yes | No |
| Process management | 5 tools | Yes | No |
| Shell command execution | Yes | Yes | No |
| String replace with validation | Yes | Yes | No |
| Line-based file editing | Yes | No | No |
| JSON repair & validation | 2 tools | No | No |
| Encoding fix (Mojibake) | Yes | No | No |
| Duplicate detection (SHA-256) | Yes | No | No |
| Folder diff / change tracking | Yes | No | No |
| Batch rename (pattern-based) | Yes | No | No |
| Format conversion (JSON/CSV/INI/YAML/TOML/XML/TOON) | Yes | No | No |
| ZIP archive (create/extract/list) | Yes | No | No |
| File checksums (MD5/SHA-1/SHA-256/SHA-384/SHA-512) | Yes | No | No |
| OCR (image to text) | Optional | No | No |
| Safety mode (delete → Recycle Bin) | Yes | No | No |
| Path allowlist / sandboxing | No | No | Yes |
| Excel / PDF support | PDF (via browser) | Yes | No |
| HTTP transport | No | No | No |
| Markdown to HTML/PDF export | Yes | No | No |
| Total tools | 50 | ~15 | ~11 |
| Servers needed | 1 | 1 | + extra for processes |
Key differentiators:
All tools use the fc_ prefix (FileCommander) to avoid conflicts with other MCP servers.
FileCommander is designed to be discoverable by both people and AI agents:
package.json exposes the official mcpName (io.github.ellmos-ai/ellmos-filecommander-mcp) and MCP-specific npm keywords.server.json follows the official MCP Registry schema and points to the npm package.glama.json provides MCP-directory metadata for Glama-compatible indexes.llms.txt gives compact context for LLMs, agent catalogs, and documentation crawlers.Primary search terms: ellmos-filecommander-mcp, FileCommander MCP, filesystem MCP server, multi-file content search MCP, safe delete MCP, async file search MCP, process management MCP, Markdown PDF MCP.
External discovery notes: npm and jsDelivr may briefly lag behind the current release. LobeHub indexes the GitHub repo as an MCP server. Use the package description and this README as the canonical 50-tool source for the current repository.
This server has full filesystem access with the running user's permissions.
See SECURITY.md for detailed security information and recommendations.
Key points:
fc_execute_command runs arbitrary shell commandsfc_open_path invokes the operating system's associated application for a caller-selected existing path; that application runs with the user's permissionsfc_open_path reports launcher acceptance separately from the invariant user_visible="unknown"; fc_preview_file is the metadata-first remote fallback with an explicit 1 MiB inline-content boundaryfc_start_session starts an arbitrary interactive command, and subsequent fc_send_input calls can execute additional actionsfc_delete_* tools perform permanent deletion by default (use fc_safe_delete or enable safe mode via fc_set_safe_mode to route all deletes through Recycle Bin / Trash)fc_delete_file and fc_delete_directory; it does not sandbox commands or interactive sessionsfc_web_fetch call performs outbound HTTP(S) accessThe project includes 212 Vitest tests plus 71 standalone i18n checks (283 total) covering filesystem operations, metadata-first inline preview, bounded content search, native default-handler launching, format conversion, encoding repair, archive handling, duplicate detection, language packs, tool annotations, real stdio behavior, and security boundaries.
Tests are verified on Windows, macOS, and Linux.
Pushes and pull requests run CI on Node.js 20, 22, and 24 with npm ci, TypeScript build, Vitest, and an npm package dry-run.
See CONTRIBUTING.md for contribution guidelines.
See CHANGELOG.md for the full version history.
MIT - Lukas Geiger (ellmos-ai)
This project was originally developed as BACH FileCommander (bach-filecommander-mcp). It has been renamed to ellmos FileCommander (ellmos-filecommander-mcp) as part of the ellmos-ai organization.
The legacy package name bach-filecommander-mcp is deprecated. Please use ellmos-filecommander-mcp instead:
This MCP server is part of the ellmos-ai ecosystem — AI infrastructure, MCP servers, and intelligent tools.
| Server | Tools | Focus | npm |
|---|---|---|---|
| FileCommander | 50 | Filesystem, bounded inline preview, content search, default-app opening, process management, interactive sessions, cloud-lock-safe operations | ellmos-filecommander-mcp |
| CodeCommander | 22 | Code analysis, JSON repair, imports, diffs, regex | ellmos-codecommander-mcp |
| Clatcher | 12 | File repair, format conversion, batch operations | ellmos-clatcher-mcp |
| n8n Manager | 19 | n8n workflow management via AI assistants | n8n-manager-mcp |
| ControlCenter | 31 | MCP stack discovery, profile management, control plane | ellmos-controlcenter-mcp |
| Homebase | 45 | Local-first LLM memory, knowledge, state, routing, swarm orchestration | ellmos-homebase-mcp (alpha) |
| ServerCommander | 8 | Server operations: health checks, log analysis, deploy dry-runs, mail diagnostics | ellmos-servercommander-mcp (alpha) |
| Blender Use | 5 | Headless Blender asset QA and FBX reimport verification | ellmos-blender-use-mcp (alpha) |
| Open Compute | 16 | Model-agnostic computer use: capture, safety-gated actions, Windows UIA | open-compute-mcp (alpha) |
| Project | Description |
|---|---|
| BACH | Local-first text-based OS for LLM agents — 113+ handlers, 550+ tools, SQLite memory |
| open-compute | Model-agnostic computer-use core powering Open Compute MCP |
| clutch | Provider-neutral LLM orchestration with auto-routing and budget tracking |
| rinnsal | Lightweight agent memory, connectors, and automation infrastructure |
| ellmos-stack | Self-hosted AI research stack (Ollama + n8n + Rinnsal + KnowledgeDigest) |
| MarbleRun | Autonomous agent chain framework for Claude Code |
| gardener | Minimalist database-driven LLM OS prototype (4 functions, 1 table) |
| ellmos-tests | Testing framework for LLM operating systems (7 dimensions) |
Our partner organization open-bricks and its line organizations provide AI-native desktop applications and developer utilities:
| Application | Category | Organization | Focus |
|---|---|---|---|
| ProFiler | File Management | file-bricks | High-speed dual-pane file manager with AI integration |
| ExplorerPro | File Exploration | file-bricks | Smart file explorer with semantic filters & preview |
| WinStorePackager | Packaging | file-bricks | MSIX & Store packaging for Windows desktop applications |
| SoftwareCenter | App Store | file-bricks | Centralized desktop package management & distribution |
| SQLiteViewer | Database Tool | file-bricks | Lightweight SQLite exploration & querying |
| DokuZen | Markdown Suite | doc-bricks | Markdown editor, PDF export & document conversion |
| MediaBrain | Document / Media | doc-bricks | Audio/video transcription, metadata extraction & cataloging |
| UniversalInvoiceMail | Document / Mail | doc-bricks | Automated invoice parsing, PDF extraction & mail routing |
| DevCenter | Developer Suite | dev-bricks | Integrated developer toolbox, code analyzers & generators |
| CodeBox | Code Editor | dev-bricks | Multi-language code editor with LLM augmentation |
| safe-start-for-codex | Security & Audit | dev-bricks | Hardened runtime environment & pre-flight checker for Codex |
| automation-master | Task Automation | dev-bricks | High-reliability background automation runner & scheduler |
Dieses Projekt ist eine unentgeltliche Open-Source-Schenkung im Sinne der §§ 516 ff. BGB. Die Haftung des Urhebers ist gemäß § 521 BGB auf Vorsatz und grobe Fahrlässigkeit beschränkt. Ergänzend gilt der Haftungsausschluss der MIT-Lizenz.
Nutzung auf eigenes Risiko. Keine Wartungszusage, keine Verfügbarkeitsgarantie, keine Gewähr für Fehlerfreiheit oder Eignung für einen bestimmten Zweck.
This project is an unpaid open-source donation. Liability is limited to intent and gross negligence (§ 521 German Civil Code). The MIT license disclaimer also applies. Use at your own risk. No warranty, no maintenance guarantee, no fitness-for-purpose assumed.