任务管理协议服务器

一个通过Emacs org-mode为AI助手提供可靠任务管理的MCP服务器。

  • by jamesdp3
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jamesdp3/spacecadet

使用说明

太空学员

MCP(模型上下文协议)服务器,通过Emacs组织模式为AI助手提供可靠的任务管理。

太空学员不再依赖LLM在对话环境中跟踪任务(在计数、时间推理和过滤方面失败),而是将任务存储和检索委托给组织模式——一个具有100%准确性的确定性、结构化系统。

先决条件

  • Emacs (任何内置组织模式的最新版本)
  • Python 3.10+
  • Linux或macOS (Windows在WSL下工作;本机Windows没有文件锁定)

Emacs附带了组织模式。如果你没有安装Emacs:

brew install emacs              # macOS
sudo apt install emacs-nox      # Ubuntu/Debian/WSL
sudo dnf install emacs-nox      # Fedora
sudo pacman -S emacs-nox        # Arch

这 -nox 由于太空学员不需要GUI,因此建议使用变体。

设置

git clone https://github.com/jamesdp3/spacecadet.git
cd spacecadet
./setup.sh

安装脚本安装依赖项并打印MCP客户端的配置说明。

配置

克劳德桌面版

添加到MCP设置(~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "spacecadet": {
      "command": "python3",
      "args": ["/path/to/spacecadet/server.py"]
    }
  }
}

克劳德代码

claude mcp add spacecadet python3 /path/to/spacecadet/server.py

任务存储器

在第一次运行中,太空学员创建了一个 tasks.org 归档 ~/spacecadet-tasks/ 并将此路径保存到 .spacecadet.conf。任务在重新启动后仍然存在。

要更改任务目录,请设置 SPACECADET_ORG_DIR 环境变量:

export SPACECADET_ORG_DIR=~/org

或者在MCP客户端配置中传递它:

{
  "mcpServers": {
    "spacecadet": {
      "command": "python3",
      "args": ["/path/to/spacecadet/server.py"],
      "env": {
        "SPACECADET_ORG_DIR": "/home/you/org"
      }
    }
  }
}

您还可以编辑 .spacecadet.conf directly——它包含一行路径。

云同步

点 SPACECADET_ORG_DIR 在云同步文件夹中,从任何计算机访问您的任务:

服务 示例路径
苹果云 ~/Library/Mobile Documents/com~apple~CloudDocs/org
Dropbox ~/Dropbox/org
Google 云端硬盘 ~/Google Drive/My Drive/org
OneDrive ~/OneDrive/org
同步 ~/Sync/org

因为任务很简单 .org 文本文件,任何文件同步服务都可以工作。如果您已经使用了org模式,请将spacecadent指向您现有的org目录,它将直接读取您的文件。

工具

每个任务在创建时都会被分配一个唯一的ID。执行特定任务的工具接受以下任一条件 id (首选)或 heading 以识别目标任务。

任务CRUD

工具 说明
add_task 创建一个具有可选优先级、标签、截止日期和计划日期的新任务。返回任务的 id.
update_task 更新任务的状态(例如标记为“完成”)、优先级或截止日期
delete_task 删除任务
list_tasks 列出所有任务,可选择按状态、优先级或标签进行筛选。每个任务包括 id.
get_task 获取特定任务的完整详细信息

查询

工具 说明
get_agenda 获取日期或日期范围的组织模式议程视图
search_tasks 使用完整的组织模式匹配语法进行搜索

时间跟踪

工具 说明
clock_in 在任务上启动时钟
clock_out 停止当前计时任务的时钟
clock_report 获取显示每个任务记录的小时数的时间报告

组织

工具 说明
add_note 在任务的日志中添加带时间戳的注释
set_property 在任务上设置自定义属性(工作量、受让人、URL等)
refile_task 将任务移动到其他标题下或其他文件中

运作原理

AI Client (Claude Desktop, Claude Code, etc.)
    |  MCP protocol (stdio)
    v
server.py  (Python, FastMCP)
    |  emacsclient --eval
    v
Emacs daemon  (persistent, started on first request)
    |  org-mode API
    v
~/spacecadet-tasks/*.org  (plain text)

在第一次工具调用中,spacecadent会启动一个具有隔离配置的专用Emacs守护进程(不会干扰您的个人Emacs设置)。后续通话使用 emacsclient 针对正在运行的守护进程评估elisp,将响应时间控制在500ms以下。服务器退出时,守护进程会自动关闭。

任务ID

每个任务在通过创建时都会自动分配一个UUID add_taskID以组织模式存储 ID 属性,并在所有工具响应中返回。使用 id 参数而不是 heading 对于可靠的查找,如果重复,标题可能会含糊不清,但ID始终是唯一的。

任务状态

任务遵循以下工作流程:

TODO -> NEXT -> WAITING -> DONE
                        -> CANCELLED

优先事项

  • A. -最高优先级
  • B -高优先级
  • C -默认优先级
  • D -低优先级

运行测试

pip install -e ".[dev]"
pytest

单元测试(路径验证)在没有emacs的情况下运行。如果未安装emacs,则会自动跳过集成测试。

文档

完整文档: https://jamesdp3.github.io/spacecadet

许可证

麻省理工学院