Krusch Fs
FreeNot checkedStandalone OS filesystem & multi-node SSH fleet RAG MCP server. Indexes PDFs, docs, and system configs in-place—anchoring every agent memory and citation direct
About
Standalone OS filesystem & multi-node SSH fleet RAG MCP server. Indexes PDFs, docs, and system configs in-place—anchoring every agent memory and citation directly to a 1-based KruschNexus page with per-page SHA-256 drift detection and .env secret redaction.
README
PGit + KruschNexus for Your Operating System & Multi-Node Fleet — Standalone, opt-in OS Filesystem & Page-Anchored Memory MCP Server (
v0.3.1).
License: MIT Python 3.11+ MCP Behavioral Annotations
krusch-fs is a lightweight, opt-in Model Context Protocol (MCP) server that indexes files across your local operating system and optional remote SSH fleet nodes in-place (zero file duplication) and binds every semantic memory, configuration rule, and retrieved snippet directly to a 1-based KruschNexus page ((host_node, file_id, page_number, anchor_page_hash)).
✨ Core Architectural Pillars
1. Universal 1-Based KruschNexus Page Spine
- Consumes
krusch_nexusin Zero-Config Library Mode (parse_file,chunk_document_pages,format_citation) without running duplicate OCR workers or copying files into a staging vault. - Every indexed file (PDF, DOCX, CSV, HTML, Markdown, systemd
.service,.conf,/etc/fstab, and redacted.env) is segmented into deterministic 1-based pages (fs_pages) with a per-page SHA-256page_hash. - Single-Page Delta Re-Indexing: Editing page 42 of a 120-page PDF or section 3 of a Markdown runbook only re-embeds page 42 and only flags memories anchored to page 42 as
is_drifted=True, leaving pages1..41and43..120untouched. - Pointer-Slice Chunk Deduplication (
v0.3.1): Becausefs_pages.page_textalready stores the normalized text for each 1-based page,fs_chunksstores onlychar_start..char_endoffsets (content="") whenever a chunk is a clean slice ofpage_text, slicing snippets in-memory duringsearch()to eliminate 2x SQLite database bloat. - Inode Move & Rename Resilience: Moving or renaming a file on the same filesystem updates
file_pathand citations in-place via(host_node, device_id, inode, file_hash)without re-parsing or losing page-anchored memories.
2. 3-Zone Workspace Isolation & Zero-Trust Privacy Shield
user_docs: PDFs, DOCX contracts, spreadsheets, notes, and manuals in~/Documents,~/Downloads, and projectdocs/.system_config:/etc/systemd/system,/etc/fstab,/etc/hosts,.conf, and.envfiles..envValue Redaction (KEYS_ONLY): Secret values are replaced withKEY=[REDACTED](on the remote node before crossing SSH) while indexing variable names asconfig_rulepage memories so agents can ask "Where isDATABASE_URLconfigured?" without ever exposing secret values.- Private Key Vault Lock (
VAULT_LOCKED): SSH keys (id_rsa,id_ed25519),.pem/.key/.kdbxfiles, and browser cookie DBs are never read or embedded.
repo_boundaries: Any directory containing.gitis automatically recorded as a lightweight boundary pointer (handoff_repo="krusch-git:<repo>") and skipped sokrusch-gitremains the single source of truth for source code.
3. Multi-Node SSH Fleet Indexing
- Works out of the box on a single workstation, or indexes an entire fleet of Linux/macOS machines via
~/.krusch-fs/fleet.json(see fleet.example.json) using agentless SSH stdlib streaming (stream_remote_node_entries). - Sleeping or offline machines are probed in
<2s(probe_node_ssh) and cleanly skipped (status="offline_skipped") until powered on.
🛠️ 6 Canonical MCP Tools
All 6 tools declare explicit MCP behavioral annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint):
| Tool | Purpose | Annotations |
|---|---|---|
krusch_fs_search |
Hybrid RRF search across OS page chunks & page-anchored memories (host_node, workspace, category) |
readOnlyHint=True |
krusch_fs_page_tree |
Return the 1-based Page Spine (1..N pages, page_hash, memory counts, drift status) for a file |
readOnlyHint=True |
krusch_fs_read_page |
Hydrate exact text, bounding boxes, and attached memories for page_number (or end_page range) |
readOnlyHint=True |
krusch_fs_remember_on_page |
Anchor a verified fact/rule (INV-12 verbatim quoted_sentence) onto (host_node, file_path, page_number) |
idempotentHint=True |
krusch_fs_locate |
Fast metadata/inode search by filename, extension, size, mtime window, or SHA-256 duplicates | readOnlyHint=True |
krusch_fs_sync |
Scan a local path, a specific remote host_node, or synchronize the entire fleet (action="sync_fleet") |
idempotentHint=True |
⚙️ MCP Server Configuration
Add krusch-fs to your mcp_config.json (Claude Desktop, Cursor, Windsurf, or Antigravity):
{
"mcpServers": {
"krusch-fs": {
"command": "krusch-fs-mcp",
"env": {
"KRUSCH_FS_DB_URL": "sqlite:////home/your-user/.krusch-fs/fs_memory.db",
"KRUSCH_FS_FLEET_CONFIG": "/home/your-user/.krusch-fs/fleet.json"
}
}
}
}
🚀 Quickstart & CLI
# Install in editable mode
pip install -e .
# (Optional) Configure multi-node SSH targets outside the repo
mkdir -p ~/.krusch-fs
cp fleet.example.json ~/.krusch-fs/fleet.json
# Synchronize local workstation and all online fleet nodes
krusch-fs sync-fleet
# Inspect fleet-wide index statistics
krusch-fs status
# Search across all fleet nodes (or pass --node compute-node-01)
krusch-fs search "ExecStart" --workspace system_config
# Inspect the 1-based page tree of any indexed file
krusch-fs tree /etc/fstab --node compute-node-01
# Run the MCP server over stdio
krusch-fs-mcp
🧪 Testing
pytest tests/ -v
Installing Krusch Fs
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/kruschdev/krusch-fs-mcpFAQ
Is Krusch Fs MCP free?
Yes, Krusch Fs MCP is free — one-click install via Unyly at no cost.
Does Krusch Fs need an API key?
No, Krusch Fs runs without API keys or environment variables.
Is Krusch Fs hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Krusch Fs in Claude Desktop, Claude Code or Cursor?
Open Krusch Fs on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Postgres
Query your database in natural language
by Anthropicwenb1n-dev/SmartDB_MCP
Connect to multiple databases at once (MySQL, PostgreSQL, SQL Server, MariaDB, Dameng, Oracle) for operations, health analysis and SQL optimization.
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolRedis
Interact with Redis key-value stores.
by modelcontextprotocolSQLite
Database interaction and business intelligence capabilities.
by modelcontextprotocolmxcp
Open-source framework for building enterprise-grade MCP servers using just YAML, SQL, and Python, with built-in auth, monitoring, ETL and policy enforcement.
by raw-labsjulien040/anyquery
Query apps with SQL from a single local-first binary; also connects to PostgreSQL, MySQL and SQLite-compatible databases.
by julien040drakonkat/wizzy-mcp-tmdb
Search and retrieve movie, TV show and person information from The Movie Database (TMDB) API.
by drakonkatlongevity-genie/opengenes-mcp
Query the OpenGenes database for aging and longevity research.
by longevity-genieCompare Krusch Fs with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
