使用说明
mcp全聚焦
用于与OmniFocus Pro交互的MCP(模型上下文协议)服务器,使人工智能助手能够通过OmniFocus自动化API读取和管理您的OmniFocus项目和任务。
特性
-
读取操作
- 列出所有项目及其状态和元数据
- 列出任务(所有任务或按项目筛选)
- 列出所有标签
-
写入操作
- 创建新任务(收件箱或特定项目中)
- 创建新项目
- 更新现有任务(名称、注释、状态、截止日期等)
- 完成任务
- 为任务和项目添加标签
-
演出
- 内置缓存层,加速重复查询
- 可配置缓存TTL(默认值:30秒)
- 写入操作时自动缓存失效
需求
- macOS(OmniFocus仅适用于macOS/iOS)
- OmniFocus Pro已安装并可访问
- 转到1.21或更高版本
- 自动化的系统权限(macOS将在首次使用时提示)
安装
选项1:下载预构建二进制文件(推荐)
- 从以下网址下载适用于您平台的最新版本 发布页面
- 提取存档:
tar -xzf mcp-omnifocus_*_darwin_*.tar.gz - 将二进制文件移动到所需位置:
mkdir -p ~/mcp-servers/omnifocus mv mcp-omnifocus ~/mcp-servers/omnifocus/ mv scripts ~/mcp-servers/omnifocus/
选项2:从源代码构建
-
克隆此存储库:
git clone https://github.com/conall/mcp-omnifocus.git cd mcp-omnifocus -
安装依赖项:
make deps -
构建服务器:
make build这将在以下位置创建二进制文件
bin/mcp-omnifocus
配置
要将此MCP服务器与Claude Desktop或其他MCP客户端一起使用,请将其添加到配置文件中:
Claude 桌面版
编辑您的Claude Desktop配置文件(通常在 ~/Library/Application Support/Claude/claude_desktop_config.json):
如果您下载了预构建的二进制文件:
{
"mcpServers": {
"omnifocus": {
"command": "/Users/YOUR_USERNAME/mcp-servers/omnifocus/mcp-omnifocus",
"args": ["-scripts", "/Users/YOUR_USERNAME/mcp-servers/omnifocus/scripts"]
}
}
}
如果你从源代码构建:
{
"mcpServers": {
"omnifocus": {
"command": "/absolute/path/to/mcp-omnifocus/bin/mcp-omnifocus",
"args": ["-scripts", "/absolute/path/to/mcp-omnifocus/scripts"]
}
}
}
将路径替换为您安装或构建二进制文件和脚本的实际位置。
注: 这 -scripts 参数是可选的。如果没有提供,服务器将尝试自动检测脚本目录。但是,为了可靠性,建议明确指定路径。
配置选项
服务器支持以下命令行标志:
-scripts <path>:JXA脚本目录的路径(可选,如果未指定,则自动检测)-cache-ttl <seconds>:缓存TTL(秒)(默认值:30,设置为0以禁用缓存)
自定义缓存TTL示例:
{
"mcpServers": {
"omnifocus": {
"command": "/path/to/mcp-omnifocus",
"args": ["-scripts", "/path/to/scripts", "-cache-ttl", "60"]
}
}
}
您还可以通过环境变量设置缓存TTL:
{
"mcpServers": {
"omnifocus": {
"command": "/path/to/mcp-omnifocus",
"args": ["-scripts", "/path/to/scripts"],
"env": {
"MCP_OMNIFOCUS_CACHE_TTL": "60"
}
}
}
}
可用工具
阅读工具
-
list_项目:列出OmniFocus中的所有项目
- 可选的
filter项目状态参数(活动、搁置、已完成、已删除)
- 可选的
-
list_tasks:在OmniFocus中列出任务
- 可选的
project_id按项目筛选任务的参数
- 可选的
-
list_tags:列出OmniFocus中的所有标签
写入工具
-
创建任务:创建新任务
- 必修的:
name - 可选:
note,project_id,due_date,flagged,estimated_minutes,tags
- 必修的:
-
创建项目:创建新项目
- 必修的:
name - 可选:
note,status,tags
- 必修的:
-
update_task:更新现有任务
- 必修的:
id - 可选:
name,note,completed,flagged,due_date,estimated_minutes
- 必修的:
-
完成任务:将任务标记为已完成
- 必修的:
id
- 必修的:
建筑学
该服务器内置于Go中,并使用:
- JXA(JavaScript自动化) 与OmniFocus的自动化API交互
- mcp走 用于实现MCP协议的SDK
- stdio传输 用于与MCP客户端通信
- 内存缓存 使用TTL来提高性能并减少OmniFocus API调用
缓存行为
缓存层通过存储读取操作的结果来提高性能:
- 缓存操作:
list_projects,list_tasks,list_tags - 缓存密钥:不同查询类型的单独键(例如,所有任务与特定于项目的任务)
- 默认TTL:30秒(可配置)
- 自动失效:写入操作会自动使受影响的缓存无效
- 创建任务会使任务缓存(以及添加到项目中的项目缓存)无效
- 创建项目会使项目缓存无效
- 更新/完成任务会使任务和项目缓存无效
- 内存管理:过期的条目每分钟自动清理一次
- 禁用缓存:将缓存TTL设置为0以完全禁用缓存
项目结构
.
├── cmd/mcp-omnifocus/ # Main server executable
├── internal/omnifocus/ # OmniFocus client library
│ ├── client.go # Go wrapper for JXA scripts
│ └── types.go # Data structures
├── scripts/ # JXA scripts for OmniFocus automation
│ ├── list_projects.jxa
│ ├── list_tasks.jxa
│ ├── create_task.jxa
│ └── ...
└── Makefile # Build configuration
发展
建筑物
make build
运行测试
make run
清理构建工件
make clean
macOS权限
首次使用时,macOS会提示您授予以下自动化权限:
osascript(运行JXA脚本)- 访问OmniFocus
这些权限是服务器运行所必需的。
许可证
有关详细信息,请参阅LICENSE文件。