| Crates.io | org-cli |
| lib.rs | org-cli |
| version | 0.0.5 |
| created_at | 2025-10-07 08:42:13.039381+00 |
| updated_at | 2026-01-05 20:26:25.957053+00 |
| description | Command-line tool for searching, reading, and managing org-mode knowledge bases with fuzzy text search and structured content access |
| homepage | |
| repository | https://github.com/szaffarano/org-mcp-server |
| max_upload_size | |
| id | 1871349 |
| size | 139,641 |
π§ 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.
org:// β List all org-mode files in configured directoriesorg://{file} β Access raw content of {file}org-outline://{file} β Get hierarchical structure of {file} as JSONorg-heading://{file}#{heading} β Access specific headings by pathorg-id://{id} β Find content by org-mode ID propertiesorg-agenda:// β List all agenda items and tasksorg-agenda://today β Today's scheduled agenda itemsorg-agenda://week β This week's scheduled agenda itemsorg-file-list β List all org files in configured directoriesorg-search β Search for text content across all org files using fuzzy matchingorg-agenda β Query agenda items with filtering by dates, states, tags, and prioritiesorg-cli config init β Create default configuration fileorg-cli config show β Display current configurationorg-cli config path β Show configuration file locationorg-cli list β List all .org files in configured directoryorg-cli init β Initialize or validate an org directoryorg-cli read β Read the contents of an org fileorg-cli outline β Get the outline (headings) of an org fileorg-cli heading β Extract content from a specific heading in an org fileorg-cli element-by-id β Extract content from an element by ID across all
org filesorg-cli search β Search for text content across all org files using fuzzy
matchingorg-cli agenda list β List all tasks (TODO/DONE items)org-cli agenda today β Show today's scheduled tasksorg-cli agenda week β Show this week's scheduled tasksorg-cli agenda range β Show tasks in custom date rangeThe project uses a TOML configuration file located at
~/.config/org-mcp/config.toml (or $XDG_CONFIG_HOME/org-mcp/config.toml).
Configuration is resolved in the following order (highest priority first):
ORG_* prefixed variables[org]
# Root directory containing org-mode files
org_directory = "~/org/"
# Default notes file for new notes
org_default_notes_file = "notes.org"
# Agenda files to include
org_agenda_files = ["agenda.org", "projects.org"]
# Extra files for text search beyond regular org files
org_agenda_text_search_extra_files = ["archive.org"]
org_todo_keywords = [
"TODO",
"|",
"DONE",
]
[logging]
# Log level: trace, debug, info, warn, error
level = "info"
# Log file location (MCP server only, CLI logs to stderr)
file = "~/.local/share/org-mcp-server/logs/server.log"
[cli]
# Default output format for CLI commands
default_format = "plain" # plain | json
ORG_ORG__ORG_DIRECTORY β Root directory for org filesORG_ORG__ORG_DEFAULT_NOTES_FILE β Default notes file nameORG_ORG__ORG_AGENDA_FILES β Comma-separated list of agenda filesORG_ORG__ORG_AGENDA_TEXT_SEARCH_EXTRA_FILES β Comma-separated extra search filesORG_LOGGING__LEVEL β Log level (debug, info, warn, error, trace)ORG_LOGGING__FILE β Log file locationORG_SERVER__MAX_CONNECTIONS β Maximum number of concurrent connections (default: 10)ORG_CLI__DEFAULT_FORMAT β Default output format for CLI commands (plain, json)# Create default configuration file
org config init
# Show current resolved configuration
org config show
# Show configuration file path
org config path
# List all org files using configuration
org list
# List with JSON output
org list --format json
# Search across all configured org files
org search "project planning"
# Search with custom parameters
org search "TODO" --limit 5 --format json --snippet-size 75
# Override root directory for a single command
org --root-directory ~/documents/org search "meeting notes"
# List all tasks (TODO/DONE items)
org agenda list
# List tasks with specific TODO states
org agenda list --states TODO,IN_PROGRESS
# Filter tasks by priority
org agenda list --priority A
# Filter by tags
org agenda list --tags work,urgent
# Show today's scheduled tasks
org agenda today
# Show this week's tasks
org agenda week
# Show tasks in custom date range
org agenda range --start 2025-10-20 --end 2025-10-27
# JSON output for agenda
org agenda list --format json --limit 10
Multi-crate Rust workspace:
Built with:
Download the latest pre-built binaries from GitHub Releases:
# Download org-cli
curl -LO https://github.com/szaffarano/org-mcp-server/releases/latest/download/org-cli-x86_64-unknown-linux-gnu.tar.gz
tar xzf org-cli-x86_64-unknown-linux-gnu.tar.gz
sudo mv org-cli /usr/local/bin/
# Download org-mcp-server
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/
Pre-built binaries are available for multiple platforms. Check the releases page for all available downloads.
Install from crates.io using Cargo:
# Install CLI tool
cargo install org-cli --locked
# Install MCP server
cargo install org-mcp-server --locked
# Run directly with nix
nix run github:szaffarano/org-mcp-server
# Install to profile
nix profile install github:szaffarano/org-mcp-server
# Development environment
nix develop github:szaffarano/org-mcp-server
# Clone and build
git clone https://github.com/szaffarano/org-mcp-server
cd org-mcp-server
cargo build --release
# Run MCP server
cargo run --bin org-mcp-server
# Test with CLI
cargo run --bin org-cli -- list
Add the following to your agent configuration (e.g.,
~/.config/opencode/opencode.json, ~/.claude.json, etc.):
{
"mcpServers": {
"org-mode": {
"command": "/path/to/org-mcp-server",
"args": [],
"env": {}
}
}
}
Or if installed via Nix:
{
"mcpServers": {
"org-mode": {
"command": "nix",
"args": ["run", "github:szaffarano/org-mcp-server"],
"env": {}
}
}
}
You can configure the MCP server through environment variables in your agent configuration:
{
"mcpServers": {
"org-mode": {
"command": "/path/to/org-mcp-server",
"args": [],
"env": {
"ORG_ORG__ORG_DIRECTORY": "/path/to/your/org/files",
"ORG_LOGGING__LEVEL": "info",
"ORG_SERVER__MAX_CONNECTIONS": "20"
}
}
}
}
# Run all tests
cargo test
# Run specific crate tests
cargo test -p org-core
# Format and lint
cargo fmt
cargo clippy
# Run examples
cargo run --example <name>
MIT License - see LICENSE file for details.