cairn-mcp-server
MCP server exposing Cairn's local-first file-organization tools to Claude Code, Codex, Cursor, and any MCP client.
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| get_file_tree Return the nested file/folder tree under a directory (default: whole workspace). | read | false | unknown |
| get_file_tags Return a document's tags — from a .uni's tags array or a text file's YAML frontmatter. | read | false | unknown |
| list_templates List available document templates (built-ins + workspace .cairn/templates). | read | false | unknown |
| update_file_tags Replace a document's tags — in a .uni's tags array or a text file's YAML frontmatter. | write | true | unknown |
| multi_edit Replace a single, unique occurrence of `old_string` with `new_string` in a file. | write | true | unknown |
| list_dir List files and folders directly under a workspace-relative directory. | read | false | unknown |
| grep Search file contents for `pattern`; returns {path, line, text} matches. | read | false | unknown |
| read_detail Read a file. For .uni docs returns HTML content, flattened text, and tags;
for text/.md files returns raw text plus any YAML frontmatter tags & metadata. | read | false | unknown |
| get_tag_tree Return {tag: [file paths]} aggregated across the workspace. | read | false | unknown |
| search_files Find files/folders whose name contains `query` (case-insensitive). | read | false | unknown |
| find_by_meta Find documents whose metadata matches all `filters` (exact, not fuzzy).
Reads .uni JSON fields and .md YAML frontmatter alike. Scalar fields match
case-insensitively; `tags` (or any list field) matches when every requested
value is present. Example: {"status": "to-read", "project": "amazon"}.
| read | false | unknown |
| create_file Create a file under `path`. If `name` ends in .uni, wraps content as a .uni doc.
Pass `template` (e.g. "paper", "note" — see list_templates) with `fields` to
stamp out a document with frontmatter pre-filled; `content` is then ignored.
| write | true | unknown |
| digest_workspace Return a token-efficient map of the workspace: one entry (title, date,
tags, summary) per document, grouped by `folder`, `tag`, or a metadata field
like `status`/`project`. Read this before loading individual files. | read | false | unknown |
| create_folder Create a new folder `name` under `path`. | write | true | unknown |
| reindex Build/refresh the embedding index (no-op if no embedder is configured). | unknown | unknown | unknown |
| semantic_retrieve Return the documents most relevant to `query`.
Uses embeddings when an embedding endpoint is configured (env), else
lexical scoring.
| read | false | unknown |
| import_document Convert a docx/pdf/pptx/csv/xlsx/md/text file into an editable .uni doc.
The original file is kept. Returns the new .uni item.
| read | false | unknown |
| rename_item Rename a file or folder in place (bare name, not a path). | write | true | unknown |
| import_folder Import every convertible (non-.uni) file under a folder into .uni docs.
Returns a summary with counts and per-file results (including skips).
| read | false | unknown |
| move_item Move a file or folder into `target_dir`. | write | true | unknown |
| delete_item Delete a file or folder (recursive for folders). | destructive | true | true |
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
Add the “as seen on MCPExplorer” badge to your README.
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →