这是一个用于将 OmniFocus 与 Claude Desktop 集成的模型上下文协议(MCP)服务器。该服务器允许 Claude 访问你的 OmniFocus 任务和项目,从而实现由人工智能驱动的任务管理和每周回顾。
克隆仓库:
git clone https://github.com/mdoel/omnifocus-mcp
cd omnifocus-mcp
安装依赖:
npm install
构建项目:
npm run build
配置 Claude Desktop:
将以下内容添加到你的 Claude Desktop MCP 配置中:
{
"mcpServers": {
"omnifocus": {
"command": "/path/to/omnifocus/run-server.sh",
"args": []
}
}
}
重要提示:请将 /path/to/omnifocus/
替换为你项目目录的实际路径。
授予自动化权限:
首次运行服务器时,macOS 会提示你授予 OmniFocus 自动化权限。请在提示时点击“允许”。
注意:如果你遇到权限问题,可能需要临时取消 run-server.sh
中 osascript
行的注释以触发权限对话框。授予权限后,再次注释掉这些行,以免每次启动时都弹出对话框。
重启 Claude Desktop 以加载新的 MCP 服务器。
配置完成后,你可以向 Claude 提出以下请求:
omnifocus:get_all_tasks
从 OmniFocus 检索所有任务,并支持过滤选项:
includeCompleted
(布尔值):是否包含已完成的任务(默认值:false)limit
(数字):返回的最大任务数(默认值:100)omnifocus:get_active_tasks
仅检索活跃(未完成)任务,自动过滤掉以下任务:
«
, »
)的任务⚙️
)的任务omnifocus:get_projects
从 OmniFocus 检索所有活跃项目。
OmniFocusClient
:通过 Omni Automation 处理与 OmniFocus 的通信。OmniFocusJXA
:用于构建和执行 JXA 脚本的实用工具。OmniFocusMCPServer
:主要的 MCP 服务器实现。src/
├── index.ts # 主入口点
├── server.ts # MCP 服务器实现
├── omnifocus/
│ ├── client.ts # OmniFocus 自动化客户端
│ └── omnifocus-jxa.ts # JXA 脚本实用工具
└── types/
└── omnifocus.ts # TypeScript 定义
# 构建项目
npm run build
# 开发模式下的监听模式
npm run dev
你可以在本地测试服务器:
# 使用命令行参数进行测试
node dist/index.js all # 获取所有任务
node dist/index.js active # 仅获取活跃任务
node dist/index.js projects # 仅获取项目
直接测试 OmniFocus 自动化:
# 测试基本连接
osascript -l JavaScript -e "Application('OmniFocus').running()"
# 测试任务检索
osascript -l JavaScript -e "
const app = Application('OmniFocus');
const doc = app.defaultDocument;
const tasks = doc.flattenedTasks();
console.log('Found ' + tasks.length + ' tasks');
"
如果 Claude Desktop 无法连接到服务器:
run-server.sh
脚本具有可执行权限:chmod +x run-server.sh
如果你遇到自动化权限错误:
如果服务器运行缓慢或超时:
limit
参数减少返回的任务数量。本项目设计为可扩展的。若要添加新功能,请按以下步骤操作:
src/omnifocus/
目录中 添加新工具。本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
如果你遇到问题或有疑问: