Cairn vs Markitdown

A side-by-side look at the Cairn and Markitdown MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Cairn logoCairnFile Systems · Local subprocess (stdio)Local-first file-organization tools for your AI agent: tag, query, and digest a folder. No cloud.56GoodAuth: not declaredMarkitdown logoMarkitdownFile Systems · Local subprocess (stdio)MCP tool access to MarkItDown -- a library that converts many file formats (local or remote) to Markdown for LLM consumption.67GreatAuth: no auth required

Verdict: choose Cairn for file systems work as a local process; choose Markitdown for file systems as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Cairn logoChoose Cairn when

  • You need dedicated capabilities in the File Systems domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like list_dir, get_file_tree, read_detail.
Explore Cairn

Markitdown logoChoose Markitdown when

  • You need dedicated capabilities in the File Systems domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like convert_to_markdown.
Explore Markitdown

Feature & specification comparison

Rows where the two servers differ are marked.

SpecCairn logoCairnMarkitdown logoMarkitdown
CategoryFile SystemsFile Systems
Quality signal56/100 · Good67/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNo auth required
PricingNot declaredFree
Required env varsNone listedNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars2191,985
Directory activity 3 views 0 installs 0 upvotes 6 views 0 installs 0 upvotes
Tools481

Tools & capabilities

Cairn tools 48

  • list_dirList files and folders directly under a workspace-relative directory.
  • get_file_treeReturn the nested file/folder tree under a directory (default: whole workspace).
  • read_detailRead 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.
  • search_filesFind files/folders whose name contains `query` (case-insensitive).
  • grepSearch file contents for `pattern`; returns {path, line, text} matches.
  • get_file_tagsReturn a document's tags — from a .uni's tags array or a text file's YAML frontmatter.
  • get_tag_treeReturn {tag: [file paths]} aggregated across the workspace.
  • find_by_metaFind 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"}.
  • list_tasksList tasks (documents with `category: task`), sorted by due date. A task is an ordinary frontmatter note with a lifecycle; this is the task view over it. `status` defaults to the open set (todo/doing/blocked) — pass "all" to include done, or a specific status / comma-separated list. `project` and `context` (e.g. "@errand") are exact case-insensitive filters; `due_before` (YYYY-MM-DD) keeps only tasks due before that date. Each result carries derived `overdue` and `today` flags relative to the current date.
  • digest_workspaceReturn 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.
  • list_templatesList available document templates (built-ins + workspace .cairn/templates).
  • semantic_retrieveReturn the documents most relevant to `query`. Uses embeddings when an embedding endpoint is configured (env), else lexical scoring.
  • +36 more on the listing page

Markitdown tools 1

  • convert_to_markdownConvert a resource described by an http:, https:, file: or data: URI to markdown

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Cairn

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "cairn-4": {
      "command": "uvx",
      "args": [
        "cairn-mcp-server"
      ]
    }
  }
}

Markitdown

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "microsoft-markitdown": {
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}

Frequently asked questions

Cairn is categorized under File Systems and uses a local stdio subprocess. Markitdown belongs to File Systems and uses a local stdio subprocess. Pick Cairn for file systems work and Markitdown for file systems.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Cairn has no declared pricing — check the project's own site. Markitdown is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add cairn-4 and microsoft-markitdown as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Cairn has a quality signal of 56/100 (Good) with 3 views, 0 installs and 2 GitHub stars. Markitdown has 67/100 (Great) with 6 views, 0 installs and 191,985 GitHub stars.