OOMCP
模型上下文协议(MCP)服务器,使AI助手能够读取和修改OmniOutliner文档。
概述
OmniOutliner MCP作为macOS菜单栏应用程序运行,提供一个本地主机HTTP服务器,通过MCP协议公开OmniOutliner的脚本功能。这允许像Claude这样的人工智能工具与你的大纲进行交互——阅读内容、搜索、添加项目和重新组织结构。该项目由Claude Code建造。我不是Mac开发人员,所以欢迎反馈。
需求
- macOS 13.0或更高版本
- OmniOutliner Pro(脚本编写需要Pro版本)
- Swift 5.9+(用于从源代码构建)
安装
来自图片
下载OOMCP.dmg文件并将其拖动到应用程序文件夹中。
来自源头
# Clone the repository
git clone https://github.com/chefbob/OOMCP.git
cd OOMCP
# Build
swift build -c release
# Run
.build/release/OOMCPXcode
在Xcode中打开项目并构建/运行 OOMCP 方案。
用法
- 从应用程序启动OOMCP或构建输出
- 该应用程序出现在您的菜单栏中,并带有状态指示器:
- 绿色:在打开文档的情况下连接到OmniOutliner - 黄色:OmniOutliner正在运行,但没有打开文档,或应用程序未运行 - 红:服务器已停止或发生错误
- 配置您的MCP客户端以连接到
http://127.0.0.1:3000
Claude桌面配置
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"omnioutliner": {
"url": "http://127.0.0.1:3000"
}
}
}可用工具
大多数工具都接受可选 documentName 参数以针对特定的打开文档。如果省略,则使用最前面的文档。
查询工具
| 工具 | 说明 |
|---|---|
list_documents | 列出所有打开的OmniOutliner文档,包括名称、路径和行数 |
get_all_documents_content | 在一次通话中获取所有打开文档的完整大纲结构 |
get_current_document | 获取最前面的OmniOutliner文档的元数据 |
get_outline_structure | 获取包含文本、注释和结构的完整大纲层次结构 |
get_row | 按ID获取特定行的详细信息 |
get_row_children | 得到一排直系子女 |
search_outline | 搜索与主题或注释中的文本匹配的行 |
check_connection | 检查OmniOutliner是否正在运行且可访问 |
修改工具
| 工具 | 说明 |
|---|---|
create_document | 创建一个新的空OmniOutliner文档 |
add_row | 在指定位置添加带有文本的新行 |
update_row | 更新行的主题、注释或复选框状态 |
move_row | 将行(和子行)移动到新位置 |
delete_row | 删除一行及其所有子行(需要确认) |
合成工具
| 工具 | 说明 |
|---|---|
get_section_content | 获取节的格式化内容以进行摘要 |
insert_content | 在某个位置插入单个或分层内容 |
配置
从菜单栏图标访问首选项:
- 服务器端口:默认值3000,必要时可配置
- 自动启动:应用程序启动时自动启动服务器
安全
- 服务器仅绑定到本地主机(127.0.0.1)
- 不接受远程连接
- CORS仅限于本地主机源
- 所有更改都可以在OmniOutliner(Cmd+Z)中撤消
- 破坏性操作需要明确确认
应用沙箱
此应用程序与macOS应用程序沙盒一起运行 残疾的这是必需的,因为:
- AppleScript/JXA执行:应用程序使用
NSAppleScript和osascript通过JavaScript for Automation(JXA)与OmniOutliner通信。沙盒应用程序无法执行任意脚本或控制其他应用程序,除非苹果公司没有为一般AppleScript使用授予特定权限。
- 应用程序间通信:控制OmniOutliner需要发送Apple事件,这些事件在沙盒环境中受到限制。
缓解措施到位:
- HTTP服务器仅绑定到localhost(127.0.0.1),防止远程访问
- 所有用户输入在传递给脚本之前都经过验证和净化
- 正确转义字符串输入以防止脚本注入攻击
- 该应用程序仅请求所需的最低自动化权限
建筑
OOMCP/
├── App/ # Entry point, AppState, Preferences
├── Views/ # SwiftUI menu bar and settings
├── Server/ # Vapor HTTP server, MCP protocol, JSON-RPC
├── Tools/ # MCP tool implementations
├── OmniOutliner/ # JXA script bridge to OmniOutliner
└── Resources/ # Assets服务器使用:
- 蒸汽4.x 用于HTTP处理
- JSON-RPC 2.0 用于MCP协议通信
- JXA(JavaScript自动化) 通过NSAppleScript控制OmniOutliner
发展
# Build debug
swift build
# Run tests
swift test
# Build release
swift build -c release故障排除
“OmniOutliner Pro必需”错误
- 脚本是Pro独有的功能。升级到OmniOutliner Pro或订阅OmniOutliner/Omni Pro。
服务器无法启动
- 检查端口3000是否正在使用中。在首选项中更改端口。
- 确保没有其他实例正在运行。
无法连接到OmniOutliner
- 确保OmniOutliner在打开文档的情况下运行。
- 在“系统设置”>“隐私和安全”>“自动化”中授予自动化权限。
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
