Sandbox
@szaffarano/org-mcp-server

MCP server for org-mode notes and tasks

This repo connects agent tools to org-mode files through MCP. It exposes resources for files, outlines, headings, IDs, and agenda views, and tools for search, capture, and TODO updates. The workspace also ships a CLI for scripting and testing, plus plugin and instruction files for Claude Code, Codex, Cursor, and OpenCode.

42 starsβ€’6 forksβ€’Rustβ€’Updated 6d ago
Who it's for

Builders who keep an org-mode knowledge base and want an agent to search, read, capture, and update it.

What it delivers

You can manage org-mode notes and tasks from your agent instead of switching back to Emacs or editing files by hand.

What it does

Org-mode MCP resources

Provides `org://`, `org-outline://`, `org-heading://`, `org-id://`, and `org-agenda://` resources for listing files, reading content, and browsing structure.

Search and agenda tools

Includes `org-search` for fuzzy full-text search and `org-agenda` for filtering tasks by date, state, tags, and priority.

Capture and update commands

Adds `org-capture` to append headings with planning data and properties, and `org-update-todo` to change TODO state, title, body, timestamps, and properties in place.

Agent skills and plugin packs

Ships skills for Claude Code, Codex, Cursor, and OpenCode so agents know how to use the server for agenda, search, capture, and TODO updates.

CLI for scripting and testing

Includes `org-cli`, which mirrors the server features for shell use, config inspection, search, agenda queries, capture, and updates.

How to get it

  1. 1Download the latest pre-built binaries from GitHub Releases
    curl -LO https://github.com/szaffarano/org-mcp-server/releases/latest/download/org-mcp-server-x86_64-unknown-linux-gnu.tar.gz
    tar xzf org-mcp-server-x86_64-unknown-linux-gnu.tar.gz
    sudo mv org-mcp-server /usr/local/bin/
  2. 2Run
    cargo install org-mcp-server --locked
    cargo install org-cli --locked
  3. 3Run
    nix run github:szaffarano/org-mcp-server       # run directly
    nix profile install github:szaffarano/org-mcp-server  # install to profile
    nix develop github:szaffarano/org-mcp-server   # development shell
  4. 4Run
    git clone https://github.com/szaffarano/org-mcp-server
    cd org-mcp-server
    cargo build --release

README

org-mcp-server

CI Coverage codecov License: MIT Rust Dependency Status

🚧 Work in Progress: This project is under active development.

A Model Context Protocol (MCP) server for org-mode knowledge management. Provides search, content access, and note linking capabilities for your org-mode files through the MCP protocol.

Features

MCP Resources

  • org:// β€” List all org-mode files in configured directories
  • org://{file} β€” Access raw content of {file}
  • org-outline://{file} β€” Get hierarchical structure of {file} as JSON
  • org-heading://{file}#{heading} β€” Access specific headings by path
  • org-id://{id} β€” Find content by org-mode ID properties
  • org-agenda:// β€” List all agenda items and tasks
  • org-agenda://today β€” Today's scheduled agenda items
  • org-agenda://week β€” This week's scheduled agenda items
  • org-agenda://day/{YYYY-MM-DD} β€” Agenda for a specific day
  • org-agenda://week/{N} β€” Agenda for week number N
  • org-agenda://month/{N} β€” Agenda for month number N
  • org-agenda://query/from/{YYYY-MM-DD}/to/{YYYY-MM-DD} β€” Custom date range

MCP Tools

  • org-file-list β€” List all org files in configured directories
  • org-search β€” Full-text fuzzy search across all org files
  • org-agenda β€” Query agenda items with filtering by dates, states, tags, and priorities
  • org-capture β€” Append a heading to an org file. Supports TODO state, priority, tags, body, SCHEDULED/DEADLINE/CLOSED timestamps (with repeater and warning suffixes), property drawer entries, and datetree expansion.
  • org-update-todo β€” Update an existing heading in place. Set or clear todo_state, priority, tags, planning timestamps, heading title, body text, and property drawer entries (per-key upsert/remove).

Agent Skills Plugin

This repository ships skills for Claude Code, Codex, Cursor, and OpenCode that guide agents to use the MCP server effectively.

SkillPurpose
org-agendaQuery agenda items by date, state, priority, and tags
org-searchSearch and browse org files and headings
org-captureCreate new headings, tasks, and journal entries
org-update-todoUpdate TODO state, title, body, properties, and timestamps

Claude Code

claude plugin install github:szaffarano/org-mcp-server

Or add to .claude/settings.json:

{ "plugins": ["github:szaffarano/org-mcp-server"] }

Codex / Cursor

Add to your plugin configuration using .codex-plugin/plugin.json or .cursor-plugin/plugin.json from this repository.

OpenCode

{ "plugin": ["org-mcp-server@git+https://github.com/szaffarano/org-mcp-server.git"] }

See .opencode/INSTALL.md for full setup instructions.

Setup

Pre-built Binaries

Download the latest pre-built binaries from GitHub Releases:

curl -LO https://github.com/szaffarano/org-mcp-server/releases/latest/download/org-mcp-server-x86_64-unknown-linux-gnu.tar.gz
tar xzf org-mcp-server-x86_64-unknown-linux-gnu.tar.gz
sudo mv org-mcp-server /usr/local/bin/

Binaries are available for Linux, macOS, and Windows. Check the releases page for all targets.

Cargo

cargo install org-mcp-server --locked
cargo install org-cli --locked

Nix

nix run github:szaffarano/org-mcp-server       # run directly
nix profile install github:szaffarano/org-mcp-server  # install to profile
nix develop github:szaffarano/org-mcp-server   # development shell

From Source

git clone https://github.com/szaffarano/org-mcp-server
cd org-mcp-server
cargo build --release

MCP Server Integration

Add to your AI agent configuration (e.g., ~/.claude.json, opencode.json):

{
  "mcpServers": {
    "org-mode": {
      "command": "/path/to/org-mcp-server",
      "args": [],
      "env": {
        "ORG_ORG__ORG_DIRECTORY": "/path/to/your/org/files"
      }
    }
  }
}

Or via Nix:

{
  "mcpServers": {
    "org-mode": {
      "command": "nix",
      "args": ["run", "github:szaffarano/org-mcp-server"]
    }
  }
}

Configuration

Config file: ~/.config/org-mcp/config.toml (or $XDG_CONFIG_HOME/org-mcp/config.toml).

[org]
org_directory = "~/org/"
org_default_notes_file = "notes.org"
org_agenda_files = ["agenda.org", "projects.org"]
org_todo_keywords = ["TODO", "|", "DONE"]
# Auto-prepend :CREATED: property on capture (default: true)
org_auto_created_property = true
# Auto-stamp CLOSED on done transitions (default: true)
org_auto_closed_timestamp = true

[logging]
level = "info"
file = "~/.local/share/org-mcp-server/logs/server.log"

[cli]
default_format = "plain"  # plain | json

Configuration is resolved in order: CLI flags β†’ environment variables (ORG_ prefix, __ separator, e.g. ORG_ORG__ORG_DIRECTORY) β†’ config file β†’ defaults.

org-cli config init   # create default config file
org-cli config show   # display current resolved config
org-cli config path   # show config file location

CLI Tool

org-cli mirrors the MCP server's capabilities for scripting and testing. Run org-cli --help or org-cli <subcommand> --help for full usage.

Quick examples:

# Search across all org files
org-cli search "project planning"

# Agenda
org-cli agenda today
org-cli agenda list --states TODO,IN_PROGRESS --tags work

# Capture a TODO with planning
org-cli capture "Fix login bug" --todo-state TODO --priority A \
    --scheduled "2026-05-15" --deadline "2026-05-20 -3d"

# Capture under a datetree
org-cli capture "Standup notes" --file journal.org --target-heading Logs --datetree

# Update an existing heading
org-cli update-todo --id abc123 --todo-state DONE
org-cli update-todo --file projects.org --heading-path "Work/Task" \
    --title "Renamed task" --property "EFFORT=2h"

Timestamp grammar for --scheduled, --deadline, --closed: YYYY-MM-DD [HH:MM] [+N{h|d|w|m|y} | ++N{u} | .+N{u}] [-N{u}]

Architecture

Multi-crate Rust workspace:

  • org-core β€” Business logic and org-mode parsing
  • org-mcp-server β€” MCP protocol implementation
  • org-cli β€” CLI interface for testing and direct usage

Built with orgize (org-mode parsing), rmcp (MCP protocol), tokio (async runtime), and nucleo-matcher (fuzzy search).

Development

cargo test                                              # run all tests
cargo test -p org-core                                  # test specific crate
cargo fmt && cargo clippy --all-targets --all-features  # format and lint
cargo run --bin org-cli -- --help                       # run CLI

Roadmap

Phase 1: Core Functionality βœ…

  • File discovery and listing
  • Basic content access via MCP resources
  • Org-mode parsing with orgize
  • ID-based element lookup
  • CLI tool for testing
  • Full-text search across org files

Phase 2: Advanced Features 🚧

  • Configuration file support with TOML format
  • Environment variable configuration
  • Unified CLI interface with global configuration
  • Tag-based filtering and querying
  • Agenda-related Functionality
  • Link following and backlink discovery (org-roam support)
  • Metadata caching for performance

Phase 3: Extended Capabilities 🚧

  • Content creation via org-capture (heading + planning + properties + datetree)
  • Content modification: TODO state, priority, tags, and planning updates via org-update-todo / org-cli update-todo
  • Content modification: property drawer updates (upsert/remove individual keys)
  • Content modification: CLOCK / LOGBOOK entries
  • org-promote / org-demote β€” relative heading level change
  • org-clock β€” clock in / clock out / cancel clock
  • org-refile β€” move heading to different file or location
  • org-archive β€” archive heading to archive file or toggle ARCHIVE tag
  • Media file reference handling
  • Integration with org-roam databases
  • Real-time file watching and updates
  • Advanced query language

License

MIT License - see LICENSE file for details.

Files in the repo

Repository payloadβ€’24 top-level entries
  • .claude-plugin
  • .codex-plugin
  • .cursor-plugin
  • .github
  • .opencode
  • org-cli
  • org-core
  • org-mcp-server
  • skills
  • test-utils
  • .envrc
  • .gitignore
  • .release-plz.toml
  • Cargo.lock
  • Cargo.toml
  • CLAUDE.md
  • codecov.yml
  • flake.lock
  • flake.nix
  • justfile
  • LICENSE
  • package.json
  • README.md
  • renovate.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300Β΅s in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547

Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

62k
1 add
noskillish/
bankmcp

BankMCPβ„’: your AI can now read your bank. Self-hosted, read-only MCP server for your own bank accounts via open banking (Enable Banking). Standard MCP; tested with Claude and Ollama.

177

Minimal Coding Agent Harness on MCP for ChatGPT, Claude, Hermes, Grok Bot, OpenClaw

4.6k

Fast and Accurate Code Search for Agents. Uses 99% fewer tokens than grep+read

6k
memorax-ai/
memorax-code

A memory plugin for AI coding that turns engineering experience, repository knowledge, and your way of working into memory that remains useful in future tasks.

1.2k