Cairn

io.github.luckyjackluoPublished by GitHub account luckyjackluov0.2.0Updated Oct 24, 2026

Local-first file-organization tools for your AI agent: tag, query, and digest a folder. No cloud.

The publisher's own server: Cairn.ink Memory

VerifiedSTDIODesktop onlyFiles & StorageKnowledge & Memory

Overview

AI-generated overview

Cairn gives an AI assistant local tools to list, read, search, tag, edit, move, and semantically retrieve files in a chosen folder.

What you can do
Cairn is a local-first file-organization toolset exposed over MCP. It offers read-only tools such as list, read, search, grep, and retrieve, plus destructive tools such as move, delete, and edit that the client confirms first. It can also import documents like docx, pdf, pptx, xlsx, and md into editable .uni documents, with tags stored inside the files. Everything runs over a plain directory, with no external database.
When to use it
Use it when you want an assistant to organize, tag, and search a folder of notes or documents on your own machine. It suits Claude Code, Codex, Cursor, or any MCP client where you want local file operations with approval prompts. It is not for cloud sync or shared team storage.
Requirements
Runs locally over stdio via the PyPI package cairn-mcp-server, typically launched with uvx, so uv must be installed. Set CAIRN_WORKSPACE or pass --workspace to point at the folder to operate on; if unset it defaults to the current working directory. No account or API key is needed for the default lexical retriever; optional embeddings require an OpenAI-compatible endpoint key.
Before you install
Cairn can move, rename, delete, and edit files in the workspace, so point it at a copy for a first run. Destructive tools are meant to be confirmed by the client, but the workspace is the source of truth and changes are real. Optional embeddings send content to a configured OpenAI-compatible endpoint and store vectors in a local SQLite index under the workspace.

Installation

In SourceWeft

  1. Open Cairn in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Cairn

A local-first, open-source harness for organizing your files with an AI agent.

Point Claude Code, Codex, Cursor — any MCP client — at a folder, and your agent gains a full file-organization toolset: list, read, search, grep, edit, move, tag, import documents, and semantically retrieve. No account, no cloud, no UI required. Your files never leave your machine.

bash
claude mcp add cairn -- uvx cairn-mcp-server --workspace ~/Documents/notes

Then ask your agent to "organize this folder and tag everything" — it will, using tools that run locally over your own files.

A cairn is a stack of stones that marks a trail. This one keeps your files in order and shows the way through them.


Quickstart (2 minutes)

If you use Claude Code, setup is one command — the only prerequisite is uv, which provides uvx:

bash
# 1. Install uv if you don't have it (provides uvx)curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Add Cairn to Claude Code, pointed at a folder you want organizedclaude mcp add cairn -- uvx cairn-mcp-server --workspace ~/Documents/notes

Reopen Claude Code and ask:

"Organize this folder and tag everything."

Cairn's tools run locally over your files — reads happen freely, and any move/rename/edit asks for confirmation first. The first run auto-downloads the package (~5s); no clone, no build, no account.

[!TIP] Point --workspace at a copy of some notes for your first run — Cairn can move, rename, and edit files.

Using Codex? Same one-command flow (then run /mcp in a session to confirm):

bash
codex mcp add cairn -- uvx cairn-mcp-server --workspace ~/Documents/notes

Using Cursor or another MCP client? Same package, JSON config:

json
{ "mcpServers": { "cairn": { "command": "uvx",  "args": ["cairn-mcp-server", "--workspace", "~/Documents/notes"] } } }

~ is expanded by Cairn, so ~/Documents/notes works in the CLI and in config files alike.

Just want to poke at it, no agent?

bash
uvx cairn-cli --workspace ~/Documents/notes tree

Why a harness

The agent-harness ecosystem converged on a clear pattern: the model and the agent loop are commodities supplied by the client (Claude Code, Codex, OpenCode). The durable value is the tools and the local data. So Cairn ships tools, not an agent — the client provides the loop, the approval prompts (driven by our tool annotations), and the chat. Cairn is just the local file-organization toolset that snaps into whatever harness you already use.

Architecture

Everything is a thin adapter over one standard-library core, so the faces can never drift.

core/          cairn-core — the engine (stdlib only): the .uni document format,               file operations, tags, retrieval; optional document ingestion               (docx/pdf/pptx/xlsx/md) and embeddings-based search.mcp-server/    cairn-mcp-server  — MCP server: 26 tools with read-only/destructive               annotations, resources, and prompts.        ← the flagshipcli/           cairn-cli  — scriptable CLI, a local HTTP API (`serve`),               and an `mcp` launcher.web/           cairn-web  — optional zero-build local web UI               (browse / edit / view / tag / search).

Use it

In Claude Code / Codex / Cursor (primary):

bash
claude mcp add cairn -- uvx cairn-mcp-server --workspace ~/Documents/notes# with real-document import: uvx --with "cairn-core[convert]" cairn-mcp-server ...

The server exposes read-only tools (list, read, search, grep, retrieve) that the client runs freely, and destructive tools (move, delete, edit) that it confirms first — driven by MCP tool annotations, so you get approval prompts with no UI of ours.

As a CLI:

bash
uvx cairn-cli --workspace ~/Documents/notes treeuvx cairn-cli --workspace ~/Documents/notes retrieve "budget planning"

With the optional web UI:

bash
pip install cairn-cli cairn-webcairn --workspace ~/Documents/notes serve   # → http://127.0.0.1:4177/

The .uni format

A .uni file is a small JSON document — { uuid, content: "<html>", metadata, tags } — with tags stored in the file. A workspace is just a directory: fully portable, no external database. Source documents (docx/pdf/pptx/…) import into editable .uni docs; the originals are kept by default.

Local-first & bring-your-own-key

  • No account, no login, no cloud sync. The filesystem is the source of truth.
  • The default retriever is lexical and needs nothing. Embeddings are opt-in and bring-your-own-key (any OpenAI-compatible endpoint, including local servers like Ollama or LM Studio); vectors live in a local SQLite index under <workspace>/.cairn/ and never leave your machine.

Roadmap

Cairn is young. Rough direction, and where help is most welcome:

  • More document faces — richer frontmatter support (nested metadata, dates), and round-tripping edits back into imported source formats.
  • Smarter digests — summaries that use an embedding model when one is configured, and saved views (.cairn/views/*.md).
  • More retrieval backends — pluggable rerankers; first-class local-model presets (Ollama, LM Studio) beyond the generic OpenAI-compatible path.
  • Editor/agent integrations — thin recipes for wiring Cairn into common MCP clients and note-taking setups.
  • Packaging — signed releases and a Homebrew formula.

Have a use case that doesn't fit? Open an issue or start a discussion.

Contributing

Contributions of every size are welcome — see CONTRIBUTING.md for the project layout, dev setup, and how to add a tool. Good first issues are labeled good first issue.

Develop

bash
make setup      # uv venv (3.11) + editable install of all packages + extrasmake test       # run the suitemake serve WORKSPACE=~/Documents/notes   # web UI

License

MIT — see LICENSE.

Source: README.md at commit c43c16c

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Cairn integrations