ellmos-filecommander-mcp
<p align="center">
<img src="assets/filecommander_banner.jpg" alt="FileCommander banner" width="700">
</p>
# ellmos FileCommander MCP Server
**🇩🇪 [Deutsche Version](README_de.md)**
*Part of the [ellmos-ai](https://github.com/ellmos-ai) family.*
[](https://opensource.org/licenses/MIT)
[](https://github.com/ellmos-ai/ellmos-filecommander-mcp/actions/workflows/tests.yml)
[](https://www.npmjs.com/package/ellmos-filecommander-mcp)
[](https://nodejs.org/)
[](#tools-overview)
[-brightgreen.svg)](#testing)
[](SECURITY.md)
[](SECURITY.md)
[](#why-filecommander)
[](https://github.com/ellmos-ai)
[](https://github.com/open-bricks)
[](llms.txt)
> **Quick Navigation:** [Tools Overview](#tools-overview) | [System Architecture](#system-architecture) | [Core Capabilities & Safety Invariants](#core-capabilities--safety-invariants) | [Target Personas](#target-personas--discoverability) | [Available Tools](#tools-overview) | [Installation](#installation) | [Configuration](#configuration) | [Comparative Matrix](#comparative-matrix--alternatives) | [Testing & Verification](#testing) | [Governance & Runtime Invariants](#governance--runtime-invariants) | [Security](#security) | [Ecosystem](#ellmos-ai-ecosystem) | [Security Policy](SECURITY.md) | [Third-Party Licenses](THIRD_PARTY_LICENSES.md) | [Marketing Log](MARKETING-LOG.txt) | [llms.txt](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](https://www.npmjs.com/package/ellmos-filecommander-mcp), indexed by [jsDelivr](https://www.jsdelivr.com/package/npm/ellmos-filecommander-mcp), visible on [LobeHub](https://lobehub.com/mcp/ellmos-ai-ellmos-filecommander-mcp), listed on [Glama](https://glama.ai/mcp/servers/ellmos-ai/ellmos-filecommander-mcp), and prepared for the official MCP Registry via [`server.json`](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 in [`llms.txt`](llms.txt) and [`server.json`](server.json).
---
## Why FileCommander?
Most filesystem MCP servers only cover basic read/write operations. FileCommander goes further:
- **Safe Delete** - Moves files to Recycle Bin (Windows) or Trash (macOS/Linux) instead of permanent deletion
- **Interactive Sessions** - Start and interact with REPLs (Python, Node.js, shells) through the MCP protocol
- **Async Search** - Search large directory trees in the background while the AI continues working
- **Explicit Content Search** - Search literal text or regex across a bounded list of files without recursion or glob expansion
- **Process Management** - List, start, and terminate system processes
- **String Replace** - Edit files by matching unique strings with context validation
- **Format Conversion** - Convert between JSON, CSV, INI, YAML, TOML, XML, and TOON
- **ZIP Archives** - Create, extract, and list ZIP archives
- **File Checksums** - MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hashing with compare
- **OCR** - Extract text from images (optional tesseract.js dependency)
- **Safety Mode** - Toggle to route all deletes through Recycle Bin / Trash
- **Markdown Export** - Convert Markdown to professional HTML/PDF with code blocks, tables, nested lists, blockquotes
- **Cloud-Lock Safe** - Automatic copy+delete fallback when cloud sync filters (OneDrive, Dropbox, Google Drive, iCloud) block rename operations
- **Cloud Lock Diagnosis** - Check whether a path is at risk of sync-filter conflicts before operating
- **Cross-platform** - Works on Windows, macOS, and Linux with platform-specific optimizations
---
## System Architecture
```mermaid
flowchart TD
subgraph Client["MCP Client Layer"]
Claude["Claude Desktop / Claude Code"]
Custom["Custom LLM Agents / Frameworks"]
end
subgraph Transport["Transport Layer"]
Stdio["Stdio Transport (JSON-RPC)"]
end
subgraph Core["ellmos FileCommander Engine (50 Tools)"]
FS["Filesystem Engine\n(15 tools: read, bounded preview, write, edit, safe-delete, cloud-lock safe)"]
Search["Search Engine\n(6 tools: explicit content search plus 5 async filename-search tools)"]
Proc["Process & REPL Sessions\n(10 tools: exec, default-app opening, background proc, interactive REPLs)"]
Repair["Repair & Format Converter\n(9 tools: JSON fix, Mojibake fix, duplicates, format convert, checksum)"]
Export["Export & Web Fetch\n(3 tools: Markdown->HTML/PDF, web_fetch)"]
Sys["System, Utilities & i18n\n(7 tools: OCR, ZIP, cloud-lock check, safe-mode, time, language set/get)"]
end
Client -->|JSON-RPC| Stdio
Stdio --> Core
Core --> FS
Core --> Search
Core --> Proc
Core --> Repair
Core --> Export
Core --> Sys
```
```mermaid
sequenceDiagram
autonumber
participant AI as AI Assistant (Client)
participant FC as FileCommander Engine
participant FS as Host Filesystem
participant Trash as Recycle Bin / Trash
participant Cloud as Cloud Sync Filter
Note over AI,FC: 1. Safe Deletion & Recovery Protection
AI->>FC: fc_delete_file / fc_safe_delete(targetPath)
alt Safety Mode Active or fc_safe_delete invoked
FC->>Trash: Move item to Recycle Bin / Trash
Trash-->>FC: Moved safely (recoverable)
FC-->>AI: Success (item preserved in Trash/Recycle Bin)
else Permanent Unlink requested
FC->>FS: Direct unlink
FS-->>FC: Removed permanently
FC-->>AI: Success
end
Note over AI,Cloud: 2. Resilient Cloud-Lock Handling (OneDrive/Dropbox)
AI->>FC: fc_move(sourcePath, destPath)
alt Cloud Filter Locks Destination
FC->>Cloud: Attempt standard rename
Cloud-->>FC: EPERM / EBUSY (Cloud Filter Error)
FC->>FS: Fallback: copyFileSync + SHA-256 verify
FC->>FS: unlinkSync source
FC-->>AI: Move succeeded via resilient fallback
else Local Native Filesystem
FC->>FS: Rename (atomic)
FS-->>FC: Done
FC-->>AI: Move succeeded
end
```
---
## Core Capabilities & Safety Invariants
| 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 291 automated assertions. | Continuous cross-platform parity and reliability. |
---
## Target Personas & Discoverability
<a id="target-personas--discoverability"></a>
FileCommander is purpose-built and validated for four core developer, agentic, and operations personas:
### 1. Autonomous AI Coding Agents & LLM Swarms
- **Profile:** Multi-agent swarms and standalone agentic runtimes (Claude Code, Antigravity/Gemini, OpenAI Codex, AutoGen, CrewAI) executing recursive code editing, project refactoring, and directory audits.
- **Key Operational Pain Points:** Rapid context window bloat caused by reading multi-megabyte files, unhandled process crashes from locked files (`EPERM`/`EBUSY`) in cloud-synced folders, and unrecoverable repository corruption from accidental `rm -rf` cleanup routines.
- **FileCommander Solution:**
- `fc_preview_file`: Metadata-first inspection with strict 1 MiB inline content ceiling preventing LLM context blowout.
- `fc_search_content`: Bounded multi-file search (max 50 files, 10 MB per file, 200 matches) with automatic secret/token redaction.
- `fc_safe_delete` & `fc_set_safe_mode`: Preserves deleted files in OS Recycle Bin / Trash for zero-risk file operations.
- `fc_move` & `fc_check_cloud_lock`: Automatic copy + SHA-256 verify + unlink fallback on file locks, preventing agent failure.
### 2. DevOps, Toolchain & Multi-Host Automation Engineers
- **Profile:** Systems and automation engineers constructing cross-platform CLI tools, CI/CD validation pipelines, and multi-machine sync scripts across Windows, Linux, and macOS.
- **Key Operational Pain Points:** Heterogeneous operating system semantics (Windows backslashes vs POSIX slashes, line-ending corruption, shell-specific syntax), zombie child processes, and file locking in shared OneDrive/Dropbox workspaces.
- **FileCommander Solution:**
- Cross-platform unified tool semantics across Windows, Linux, and macOS.
- Stateful interactive REPL sessions (`fc_start_session`, `fc_send_input`, `fc_read_output`) with bounded circular ring buffers.
- Batch file renaming (`fc_batch_rename`) and background directory search (`fc_start_search`, `fc_get_search_results`).
- Process lifecycle management (`fc_execute_command`, `fc_start_process`, `fc_kill_process`) without process leaks.
### 3. SecOps, Governance & Compliance Officers
- **Profile:** Security officers, compliance auditors, and privacy teams overseeing AI tool integrations in enterprise and production environments.
- **Key Operational Pain Points:** Undisclosed background telemetry beacons, unvetted network access from local plugins, credential/token leakage into model training or prompt histories, and unprivileged user privilege escalation.
- **FileCommander Solution:**
- Local stdio transport with strictly zero telemetry and zero open network listening ports.
- Explicit outbound network egress strictly restricted to caller-invoked `fc_web_fetch` (internal/private IPs blocked by default).
- Automated secret and bearer token masking in search excerpts (`INV-MASK-06`).
- Strict unprivileged user execution (`INV-PROC-09`) and binding 48-hour vulnerability response SLA (`security@open-bricks.org`, `security@ellmos.ai`).
### 4. Enterprise Platform Architects & Data Pipeline Developers
- **Profile:** Solutions architects and data engineers integrating local files, normalizing heterogeneous configuration formats, validating cryptographic hashes, and generating reports.
- **Key Operational Pain Points:** MCP server sprawl requiring 4-6 disparate single-purpose servers, corrupted UTF-8 byte sequences (Mojibake) across tools, and bespoke parsing scripts.
- **FileCommander Solution:**
- Comprehensive 50-tool single-server deployment eliminating multi-server sprawl and process overhead.
- Lossless declarative conversion across 7 structured formats (`fc_convert_format`: JSON, YAML, TOML, XML, CSV, INI, TOON).
- Built-in file repair engines (`fc_fix_encoding`, `fc_fix_json`, `fc_cleanup_file`) for self-healing pipelines.
- Cryptographic checksums (`fc_checksum`: SHA-256, SHA-512, MD5, SHA-1) and Markdown to PDF/HTML rendering (`fc_md_to_pdf`, `fc_md_to_html`).
---
## Installation
### Prerequisites
- [Node.js](https://nodejs.org/) 20 or higher
- npm
### Option 1: Install from NPM
```bash
npm install -g ellmos-filecommander-mcp
```
### Option 2: Install from Source
```bash
git clone https://github.com/ellmos-ai/ellmos-filecommander-mcp.git
cd ellmos-filecommander-mcp
npm install
npm run build
```
---
## Configuration
### Claude Desktop
Add to your `claude_desktop_config.json`:
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
#### If installed globally via NPM:
```json
{
"mcpServers": {
"filecommander": {
"command": "ellmos-filecommander"
}
}
}
```
#### If installed from source:
```json
{
"mcpServers": {
"filecommander": {
"command": "node",
"args": ["/absolute/path/to/filecommander-mcp/dist/index.js"]
}
}
}
```
Restart Claude Desktop after saving.
### Other MCP Clients
The server communicates via **stdio transport**. Point your MCP client to the `dist/index.js` entry point or the `ellmos-filecommander` binary.
---
## Tools Overview
### Filesystem Operations (15 tools)
| 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.
### Content Search (1 tool)
| 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.
### Async Search (5 tools)
| 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 |
### Process Management (5 tools)
| 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.
### Interactive Sessions (5 tools)
| 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 |
### File Maintenance & Repair (9 tools)
| 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 |
### Archive (1 tool)
| Tool | Description |
|------|-------------|
| `fc_archive` | Create, extract, and list ZIP archives |
### OCR (1 tool)
| Tool | Description |
|------|-------------|
| `fc_ocr` | Extract text from images via tesseract.js (optional dependency) |
### Cloud Sync (1 tool)
| Tool | Description |
|------|-------------|
| `fc_check_cloud_lock` | Report static cloud-sync context and target state; never claim an active lock without evidence (Windows) |
### System (4 tools)
| 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 |
### Export (2 tools)
| 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 |
### Web (1 tool)
| 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**
---
## Comparative Matrix & Alternatives
<a id="comparative-matrix--alternatives"></a>
<a id="comparison-with-alternatives"></a>
FileCommander combines filesystem manipulation, bounded search, process control, data repair, format conversion, and document rendering into a single unified MCP interface. Below is an architectural comparison against standard alternatives across 10 key operational dimensions:
| Operational Dimension | ellmos FileCommander MCP (50 Tools) | Official Filesystem MCP (`@modelcontextprotocol/server-filesystem`) | Desktop Commander MCP | Direct Host Shell (`bash` / PowerShell) | Ad-Hoc Scripts & Cloud APIs |
|-----------------------|:-----------------------------------:|:------------------------------------------------------------------:|:---------------------:|:---------------------------------------:|:---------------------------:|
| **Tool Breadth & Scope** | **50 unified tools** across 6 domains | ~11 basic file I/O tools | ~15 tools (file + process) | Unconstrained CLI commands | Fragmented bespoke scripts |
| **Safe Deletion & Recovery** | **Native OS Recycle Bin / Trash** (`fc_safe_delete`, Safety Mode) | Permanent deletion only (`unlink`) | Permanent deletion only | Irreversible `rm -rf` / `Remove-Item` | Custom trash implementations |
| **Cloud-Lock & Sync Resilience** | **Automatic fallback** (copy + SHA-256 verify + unlink on EPERM/EBUSY) | Fails on locked files / reparse points | Fails on locked files | Fails or blocks indefinitely | Sync collision / conflict copies |
| **Bounded Search & Secret Redaction** | **Bounded search** (max 50 files, 10 MB, auto API token redaction) | Directory walk only (no content regex) | Unbounded regex search | Unbounded `grep` (leaks secrets in context) | Custom regex without redaction |
| **Async Long-Running Search** | **Token-paginated background scans** (`fc_start_search`) | Synchronous only (blocks agent) | Synchronous only | Background job control (`&`) | Polling loops / slow network calls |
| **Interactive REPL & Session Control** | **Stateful REPLs** (Node, Python, Shell) with circular buffers | Not supported | Basic terminal sessions | Raw subprocesses (zombie process risk) | Complex IPC piping |
| **Self-Healing & Data Repair** | **Built-in** Mojibake fix (27+ patterns) & JSON repair | Not supported | Not supported | Manual `iconv` / `sed` pipeline | Custom error recovery code |
| **Multi-Format Transformation** | **Declarative conversion** (JSON, YAML, TOML, XML, CSV, INI, TOON) | Not supported | Not supported | Requires external `jq` / `yq` / `xmlstarlet` | Third-party Python libraries |
| **Document & Archive Utilities** | **Built-in** ZIP lifecycle, OCR (Tesseract), Markdown to HTML/PDF | Not supported | Excel/PDF via desktop app | Requires `pandoc`, `zip`, `tesseract` | Fragmented utility dependencies |
| **Governance & Security SLAs** | **Local stdio**, zero telemetry, explicit egress, binding 48h SLA | Standard stdio, community SLA | Stdio, unvetted telemetry/logs | Unrestricted elevation & script injection risk | Ad-hoc SaaS cloud exposure |
**Key differentiators:**
- Only MCP server with **recoverable delete** (Recycle Bin / Trash) and global **Safety Mode**
- Only MCP server with **async background search** with pagination and token management
- Only MCP server with **automated secret & bearer token redaction** in search snippets
- Built-in **JSON repair**, **Mojibake encoding fix**, and **duplicate detection**
- Built-in **cloud-lock-safe file operations** with automatic copy+verify+delete fallback
- Most comprehensive single-server solution (**50 tools**) eliminating multi-server sprawl
---
## Tool Prefix
All tools use the `fc_` prefix (FileCommander) to avoid conflicts with other MCP servers.
---
## Discoverability
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`](server.json) follows the official MCP Registry schema and points to the npm package.
- [`glama.json`](glama.json) provides MCP-directory metadata for Glama-compatible indexes.
- [`llms.txt`](llms.txt) gives compact context for LLMs, agent catalogs, and documentation crawlers.
- [`MARKETING-LOG.txt`](MARKETING-LOG.txt) records discoverability positioning, 4 target personas, and verification contracts.
- [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md) documents license compliance for all runtime and development dependencies.
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.
---
## Governance & Runtime Invariants
The server enforces 10 strict runtime invariants guaranteeing safety, predictability, and least privilege:
| Invariant ID | Name | Guarantee & Implementation Details | Operational Safety Benefit |
|--------------|------|-----------------------------------|----------------------------|
| **INV-LOCAL-01** | **Local stdio & explicit egress** | Local stdio transport, zero telemetry, no open listening ports. Outbound HTTP(S) requests strictly occur via explicit client calls to `fc_web_fetch`. | Zero unauthorized background network leakage; local-first isolation. |
| **INV-SAFE-02** | **Safe Deletion & Trash Protection** | `fc_safe_delete` and global `fc_set_safe_mode` route file and directory deletions through OS Recycle Bin (Windows) / Trash (macOS/Linux). | Eliminates irreversible accidental data loss from AI agent actions. |
| **INV-LOCK-03** | **Cloud-Lock Resilient Move** | `fc_move` automatically executes copy + SHA-256 verify + source unlink fallback when sync filters (OneDrive, Dropbox, iCloud) cause EPERM/EBUSY. | Guarantees file operations succeed reliably inside cloud-synchronized workspaces. |
| **INV-DIAG-04** | **Cloud-Lock Diagnosis** | `fc_check_cloud_lock` provides read-only static path inspection and reparse point detection without mutating filesystem state. | Enables agents to assess sync conflict risks before performing modifications. |
| **INV-SRCH-05** | **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 crashes and unconstrained CPU consumption. |
| **INV-MASK-06** | **Automated Secret & Token Redaction** | Content search excerpts automatically detect and mask API keys, bearer tokens, AWS credentials, and authorization headers. | Protects credentials from prompt leakage and context contamination. |
| **INV-PREV-07** | **Bounded Inline Preview & Safe Open** | `fc_preview_file` is metadata-first with a strict 1 MiB inline content ceiling; `fc_open_path` invokes default application via shell-safe OS launchers. | Safe inspection of remote and local files without UI freeze or payload bloat. |
| **INV-REPL-08** | **Interactive REPL & Session Isolation** | Stateful interactive sessions (`fc_start_session`, `fc_send_input`, `fc_read_output`) employ bounded circular ring buffers. | Enables multi-turn REPL debugging while preventing zombie process buildup. |
| **INV-PROC-09** | **Unprivileged Non-Elevation Execution** | Executes entirely in standard unprivileged user-mode; never requests or requires administrative elevation or root rights. | Minimal attack surface; adheres strictly to the principle of least privilege. |
| **INV-SLA-10** | **48h Security Response & 5-Day Triage SLA** | Formal vulnerability commitment with multi-channel contacts (`security@open-bricks.org`, `security@ellmos.ai`). | Predictable, enterprise-ready incident response and triage lifecycle. |
---
## Security
**This server has full filesystem access with the running user's permissions.**
See [SECURITY.md](SECURITY.md) for detailed security information and recommendations.
Key points:
- `fc_execute_command` runs arbitrary shell commands
- `fc_open_path` invokes the operating system's associated application for a caller-selected existing path; that application runs with the user's permissions
- `fc_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 boundary
- `fc_start_session` starts an arbitrary interactive command, and subsequent `fc_send_input` calls can execute additional actions
- `fc_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)
- Safe mode protects only `fc_delete_file` and `fc_delete_directory`; it does not sandbox commands or interactive sessions
- The server transport is local stdio and emits no telemetry, but an explicit `fc_web_fetch` call performs outbound HTTP(S) access
- No built-in sandboxing - security is delegated to the MCP client layer
---
## Development
```bash
# Install dependencies
npm install
# Watch mode (auto-rebuild on changes)
npm run dev
# One-time build
npm run build
# Start the server
npm start
# Run test suite
npm test
```
### Testing
The project includes **220 Vitest tests plus 71 standalone i18n checks (291 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.
```bash
npm test # Run all tests
node test-i18n.mjs # Run standalone i18n checks
npx vitest run # Same as above
npx vitest --watch # Watch mode
```
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](CONTRIBUTING.md) for contribution guidelines.
---
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for the full version history.
---
## License
[MIT](LICENSE) - Lukas Geiger ([ellmos-ai](https://github.com/ellmos-ai))
---
## History
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](https://github.com/ellmos-ai) organization.
The legacy package name `bach-filecommander-mcp` is deprecated. Please use [`ellmos-filecommander-mcp`](https://www.npmjs.com/package/ellmos-filecommander-mcp) instead:
```bash
npm uninstall -g bach-filecommander-mcp
npm install -g ellmos-filecommander-mcp
```
---
## ellmos-ai Ecosystem
This MCP server is part of the **[ellmos-ai](https://github.com/ellmos-ai)** ecosystem — AI infrastructure, MCP servers, and intelligent tools.
### MCP Server Family
| Server | Tools | Focus | npm |
|--------|-------|-------|-----|
| **[FileCommander](https://github.com/ellmos-ai/ellmos-filecommander-mcp)** | **50** | **Filesystem, bounded inline preview, content search, default-app opening, process management, interactive sessions, cloud-lock-safe operations** | **[`ellmos-filecommander-mcp`](https://www.npmjs.com/package/ellmos-filecommander-mcp)** |
| [CodeCommander](https://github.com/ellmos-ai/ellmos-codecommander-mcp) | 22 | Code analysis, JSON repair, imports, diffs, regex | [`ellmos-codecommander-mcp`](https://www.npmjs.com/package/ellmos-codecommander-mcp) |
| [Clatcher](https://github.com/ellmos-ai/ellmos-clatcher-mcp) | 12 | File repair, format conversion, batch operations | [`ellmos-clatcher-mcp`](https://www.npmjs.com/package/ellmos-clatcher-mcp) |
| [n8n Manager](https://github.com/ellmos-ai/n8n-manager-mcp) | 19 | n8n workflow management via AI assistants | [`n8n-manager-mcp`](https://www.npmjs.com/package/n8n-manager-mcp) |
| [ControlCenter](https://github.com/ellmos-ai/ellmos-controlcenter-mcp) | 31 | MCP stack discovery, profile management, control plane | [`ellmos-controlcenter-mcp`](https://www.npmjs.com/package/ellmos-controlcenter-mcp) |
| [Homebase](https://github.com/ellmos-ai/ellmos-homebase-mcp) | 45 | Local-first LLM memory, knowledge, state, routing, swarm orchestration | [`ellmos-homebase-mcp`](https://www.npmjs.com/package/ellmos-homebase-mcp) (alpha) |
| [ServerCommander](https://github.com/ellmos-ai/ellmos-servercommander-mcp) | 8 | Server operations: health checks, log analysis, deploy dry-runs, mail diagnostics | [`ellmos-servercommander-mcp`](https://www.npmjs.com/package/ellmos-servercommander-mcp) (alpha) |
| [Blender Use](https://github.com/ellmos-ai/ellmos-blender-use-mcp) | 5 | Headless Blender asset QA and FBX reimport verification | [`ellmos-blender-use-mcp`](https://www.npmjs.com/package/ellmos-blender-use-mcp) (alpha) |
| [Open Compute](https://github.com/ellmos-ai/open-compute-mcp) | 16 | Model-agnostic computer use: capture, safety-gated actions, Windows UIA | [`open-compute-mcp`](https://www.npmjs.com/package/open-compute-mcp) (alpha) |
### AI Infrastructure
| Project | Description |
|---------|-------------|
| [BACH](https://github.com/ellmos-ai/bach) | Local-first text-based OS for LLM agents — 113+ handlers, 550+ tools, SQLite memory |
| [open-compute](https://github.com/ellmos-ai/open-compute) | Model-agnostic computer-use core powering Open Compute MCP |
| [clutch](https://github.com/ellmos-ai/clutch) | Provider-neutral LLM orchestration with auto-routing and budget tracking |
| [rinnsal](https://github.com/ellmos-ai/rinnsal) | Lightweight agent memory, connectors, and automation infrastructure |
| [ellmos-stack](https://github.com/ellmos-ai/ellmos-stack) | Self-hosted AI research stack (Ollama + n8n + Rinnsal + KnowledgeDigest) |
| [MarbleRun](https://github.com/ellmos-ai/MarbleRun) | Autonomous agent chain framework for Claude Code |
| [gardener](https://github.com/ellmos-ai/gardener) | Minimalist database-driven LLM OS prototype (4 functions, 1 table) |
| [ellmos-tests](https://github.com/ellmos-ai/ellmos-tests) | Testing framework for LLM operating systems (7 dimensions) |
### Desktop Software & Sibling Applications
Our partner organization **[open-bricks](https://github.com/open-bricks)** and its line organizations provide AI-native desktop applications and developer utilities:
| Application | Category | Organization | Focus |
|-------------|----------|--------------|-------|
| [ProFiler](https://github.com/file-bricks/ProFiler) | File Management | file-bricks | High-speed dual-pane file manager with AI integration |
| [ExplorerPro](https://github.com/file-bricks/ExplorerPro) | File Exploration | file-bricks | Smart file explorer with semantic filters & preview |
| [WinStorePackager](https://github.com/file-bricks/WinStorePackager) | Packaging | file-bricks | MSIX & Store packaging for Windows desktop applications |
| [SoftwareCenter](https://github.com/file-bricks/SoftwareCenter) | App Store | file-bricks | Centralized desktop package management & distribution |
| [SQLiteViewer](https://github.com/file-bricks/SQLiteViewer) | Database Tool | file-bricks | Lightweight SQLite exploration & querying |
| [DokuZen](https://github.com/doc-bricks/DokuZen) | Markdown Suite | doc-bricks | Markdown editor, PDF export & document conversion |
| [MediaBrain](https://github.com/doc-bricks/MediaBrain) | Document / Media | doc-bricks | Audio/video transcription, metadata extraction & cataloging |
| [UniversalInvoiceMail](https://github.com/doc-bricks/UniversalInvoiceMail) | Document / Mail | doc-bricks | Automated invoice parsing, PDF extraction & mail routing |
| [DevCenter](https://github.com/dev-bricks/DevCenter) | Developer Suite | dev-bricks | Integrated developer toolbox, code analyzers & generators |
| [CodeBox](https://github.com/dev-bricks/CodeBox) | Code Editor | dev-bricks | Multi-language code editor with LLM augmentation |
| [safe-start-for-codex](https://github.com/dev-bricks/safe-start-for-codex) | Security & Audit | dev-bricks | Hardened runtime environment & pre-flight checker for Codex |
| [automation-master](https://github.com/dev-bricks/automation-master) | Task Automation | dev-bricks | High-reliability background automation runner & scheduler |
## Haftung / Liability
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.
TDQS
Scored across 22 tools
Each tool has a distinct purpose with no overlapping functionality. Even similar tools like fc_read_file and fc_read_multiple_files are clearly differentiated for single vs batch reads, and fc_edit_file vs fc_str_replace handle different editing approaches.
All tools use the consistent 'fc_' prefix and mostly follow a verb_noun pattern (e.g., fc_read_file, fc_create_directory). Minor deviations like 'fc_str_replace' and 'fc_folder_diff' are still readable and do not cause confusion.
22 tools is slightly above the typical well-scoped range, but each tool serves a clear and necessary function within the broader file commander domain. The count is justified by the inclusion of process/session management and cleanup utilities.
The tool set covers the core file operations (CRUD, move, copy, edit) and extends to useful utilities like encoding repair, folder diff, and cloud lock checking. Some advanced features like file search or symlink handling are missing, but the surface is solid for everyday file management.