Emacs Org-Mode MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ORG_DIR | No | Base org directory | ~/org |
| JOURNAL_DIR | No | Journal files directory | $ORG_DIR/journal |
| PROJECTS_DIR | No | Project files directory | $ORG_DIR/projects |
| ACTIVE_SECTION | No | Section name for active/TODO tasks | Tasks |
| EMACSCLIENT_PATH | No | Custom path to emacsclient (optional) | |
| COMPLETED_SECTION | No | Section name for completed/DONE tasks | Completed Tasks |
| HIGH_LEVEL_SECTION | No | Section name for the high-level task checklist | High Level Tasks (in order) |
| EMACS_EDIFF_APPROVAL | No | Visual approval via Emacs ediff | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tasksA | List all tasks in a section of tasks.org. Returns task names, headlines, status, and full content. Use this to check for existing tasks before creating new ones, or to get an overview of work in progress. For detailed format specifications, read the emacs-org://guide/task-format resource. |
| get_taskA | Get a specific task by identifier (#+NAME like 'task-gh-28', ticket ID like 'GH-28', or headline substring). Returns full task content including all properties, subsections, and task items. For format specifications, read emacs-org://guide/task-format. |
| create_taskA | Create a new task in a section. Provide the complete org-formatted task entry with PROPERTIES drawer and subsections. The :ID: property is auto-generated if not provided. Always search for duplicates before creating. CREATED and MODIFIED timestamps are managed automatically. For format specifications, read emacs-org://guide/task-format. |
| update_taskA | Update an existing task with new content. Provide the complete new task entry including all properties and subsections. Automatic behaviors: (1) TODO→DONE moves to Completed section and sets CLOSED timestamp, (2) DONE→TODO moves to Tasks section and clears CLOSED timestamp, (3) MODIFIED timestamp updated automatically. Preserve all PROPERTIES including :ID:, :CUSTOM_ID:, and :CREATED:. For format specifications, read emacs-org://guide/task-format. |
| move_taskA | Move a task between sections (e.g., Active to Completed) without modifying content. |
| search_tasksA | Search tasks by query string across all sections. Returns complete matching tasks. Use this to check for existing tasks before creating new ones, or to find tasks related to a topic. |
| list_journal_entriesA | List all journal entries for a specific date. Returns entry times, headlines, content, and tags. Use this to check what's already logged before creating new entries to avoid duplicates. For format specifications, read emacs-org://guide/journal-format. |
| get_journal_entryA | Get a specific journal entry by date and time or headline substring. Returns complete entry content. For format specifications, read emacs-org://guide/journal-format. |
| create_journal_entryA | Create a new journal entry with format: ** HH:MM [TICKET-ID] headline :tags:. Always check for existing entries first using list_journal_entries to avoid duplicates. Include ticket IDs (GH-123), PR links ([[url][#123]]), and task links ([[file:~/org/tasks.org::#task-id][Display]]) as appropriate. Use current system time for timestamp. Common tags: daily_summary, meeting, decision, blocked. For format specifications, read emacs-org://guide/journal-format. |
| update_journal_entryA | Update an existing journal entry with new content. Finds the entry by time (HH:MM), using existing_headline to disambiguate if multiple entries share the same time. Use this to correct or enhance existing entries, or add forgotten details like task links. For format specifications, read emacs-org://guide/journal-format. |
| search_journalA | Search journal entries by query string across recent days. Returns complete matching entries. Use this to find past work on a topic, review recent activity, or look up when something was done. Searches last 30 days by default. |
| list_projectsC | List all projects, optionally filtered by status. Returns project titles, slugs, status, and description previews. For detailed format specifications, read the emacs-org://guide/project-format resource. |
| get_projectA | Get a specific project by identifier (slug like 'booklore', CUSTOM_ID like 'project-booklore', or title substring). Returns full project content including all properties and sections. For format specifications, read emacs-org://guide/project-format. |
| create_projectA | Create a new project file from a complete org-formatted string. Auto-generates :ID: (UUID), :CREATED:, and defaults :STATUS: to 'planning'. The project_entry should include a level-1 heading, :PROPERTIES: drawer with :CUSTOM_ID:, and level-2 sections (Description, Design, Goals, etc.). For format specifications, read emacs-org://guide/project-format. |
| update_projectA | Update a project's section content, properties, headline, or tags. Supports section-level updates to avoid rewriting the entire file. At least one of section+content, properties, headline, or tags must be provided. Always updates :MODIFIED: timestamp automatically. For format specifications, read emacs-org://guide/project-format. |
| search_projectsA | Search across all projects by query string. Case-insensitive substring match on project titles and all section content. Returns matching projects. |
| link_task_to_projectA | Add a task link to a project's Related Tasks section. The task_link should be an org-mode link like '- [[file:~/org/tasks.org::#task-gh-28][GH-28 Task name]]'. |
| regenerate_project_indexA | Regenerate ~/org/projects/index.org from all project files. Call this once after initial setup or if the index becomes out of sync. |
| diagnostic_envB | Diagnostic tool to check environment variables for ediff approval |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Active Tasks | Tasks in the Active Task List |
| Completed Tasks | Tasks in the Completed Task List |
| Today's Journal | Journal entries for today |
| Task Format Guide | Complete specification for task format and properties |
| Journal Format Guide | Complete specification for journal entry format |
| Project Format Guide | Complete specification for project format and management |
| Project Index | Index of all projects with status and descriptions |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scanner/emacs-org-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server