KiwiFS MCP
An MCP server and filesystem for markdown: an agent writes notes while people read the same files in a web UI with git history
- 877 ★ on the repository
- Last commit
Extended access
Why this level
- The agent gets write access to the knowledge folder, and with web access on the files are exposed over the network with no encryption on disk.
Install
- Works in
Manual install
{"mcpServers": {"kiwifs": {"command": "kiwifs", "args": ["mcp", "--root", "/path/to/knowledge"]}}}Install the binary first: `brew install kiwifs/tap/kiwifs` or `curl -fsSL https://raw.githubusercontent.com/kiwifs/kiwifs/main/install.sh | sh`. The store is created with `kiwifs init --root ./knowledge`.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The agent gets write access to the knowledge folder, and with web access on the files are exposed over the network with no encryption on disk.
This is third-party code. Review the repository files before installing.
What it does
KiwiFS keeps knowledge as plain Markdown files in a folder on disk and adds search, structure and history to them. A single Go binary opens a web UI on port 3333 and a REST API. An agent reads and writes files over MCP, REST or ordinary `cat` and `echo` on a mount, while a person sees the same pages with wiki links, backlinks and a link graph. Every write becomes an atomic git commit, so there is history, `git blame` and restore to any point in time. Full-text search uses BM25 on SQLite FTS5 with a pluggable vector layer: OpenAI, Ollama, Cohere, Qdrant, pgvector and others. DQL queries work over frontmatter and support `TABLE`, `LIST`, `COUNT`, `WHERE` and `GROUP BY`. The MCP server exposes more than 60 tools and starts with `kiwifs mcp --root <folder>`. The other access protocols are NFS, S3, WebDAV and FUSE. There are 19 importers from Postgres, MySQL, MongoDB, Notion, Obsidian and CSV, schema validation on write, webhooks and detection of stale pages and contradictions.
Who it is for. Teams building shared agent memory and a Markdown wiki who want it on their own infrastructure with change history and a web editor.
Good fit when
- Agent context vanishes between sessions and knowledge has to go into files the agent reads and extends itself
- A Confluence or Notion wiki is due to be replaced by a Markdown folder you can clone whole through git
- You need a trail of every agent edit: who changed a page and when, with the option to roll back
- An export from Postgres, Notion or Obsidian has to become pages with search and frontmatter queries
- One server has to serve several isolated spaces, each with its own repository and index
Not a fit when
- You only need a personal note app: for one person Obsidian without a server is enough
- You need a relational database with transactions: DQL reads frontmatter and does not replace Postgres
- You plan paid KiwiFS hosting for customers: the BSL 1.1 license forbids commercial hosting
- The data must not sit in plain text: Markdown files on disk are not encrypted
Example request
Write a pages/auth.md page into KiwiFS describing sign-in with OAuth2 and JWT, then find every page that mentions a timeout.MCP
- Transport
- stdio, http
- Authentication
- not required
Environment variables
KIWI_API_KEYsecret- KiwiFS Cloud workspace key, needed only for the remote MCP.
Limitations
The BSL 1.1 license allows use, self-hosting and modification but forbids offering KiwiFS as a commercial hosted service. Each release converts to Apache 2.0 after four years.
The `X-Actor` header is accepted as client-supplied data. On REST, scoped tokens and OIDC overwrite it, and for WebDAV and S3 access is set by keys, so enable authentication on a shared server.
The documentation disagrees on numbers: one place says 62 MCP tools and another says 69. Vector search needs an embedding model chosen and configured separately. The KiwiFS Cloud variant needs a `KIWI_API_KEY` and is not covered here as a local server.
How to disable. Remove the kiwifs block from the mcpServers section of the client config and stop `kiwifs serve`. The Markdown folder and its git repository stay with you and remain usable.
FAQ
How do I connect KiwiFS to Claude Desktop or Cursor?
Add the `kiwifs` command with the arguments `mcp --root <folder>` to mcpServers. The `kiwifs connect <workspace> --write auto` command configures every detected client itself.
Where is my data stored?
In plain Markdown files in the folder you pass as `--root`. Search indexes are derived and rebuilt from the files.
How does change history work?
Every write is recorded as an atomic git commit. The commit author comes from the `X-Actor` header, and rollback uses ordinary git tools.
Can I run KiwiFS in Docker?
Yes: `docker run -p 3333:3333 -v ./knowledge:/data ameliaanhlam/kiwifs`. The web UI opens on port 3333.
Is KiwiFS paid?
It is free for self-use under BSL 1.1. Only offering it as a commercial hosted service is forbidden, and that needs a separate license.
Discussion
No questions or reviews yet.
Related
MCP serversA CLI and MCP server that builds a local wiki with a knowledge graph from documents, code and links, so the agent searches it instead of scanning files
A self-hosted long-term memory server for AI: a model gateway with vector search, fading memories and MCP tools
Local memory for AI agents in plain Markdown files: it keeps only what you approve and serves it through MCP
ai-memory retains session knowledge in a Markdown wiki, exposes MCP retrieval and passes context between agents and machines.
An MCP server and REST API with shared memory for Claude Code, Codex and Gemini: Obsidian notes, sessions, bug fixes, lean search.
A personal LLM wiki with a knowledge graph, cited RAG and memory, served to Claude Code and Cursor by an MCP server
README in short
The pitch is that Markdown is the best common format for agents and people and everything else in KiwiFS is a derived index. The repository has a comparison table against git, Postgres, Obsidian and Chroma, MCP setup examples and a section on write identity through `X-Actor`. The license is BSL 1.1.