任务管理协议服务器

一个为Things任务管理器提供的原生Swift MCP服务器,允许AI助手创建、更新和管理待办事项与项目。

  • by ulfschnabel
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 ulfschnabel/things-mcp

使用说明

MCP服务器

Swift原生MCP(模型上下文协议)服务器 事物 macOS上的任务管理器。允许像Claude这样的人工智能助手在Things中创建、更新和管理待办事项和项目。

注: 这个项目是用vibe编码的 克劳德代码 (克劳德作品4.5)。

特性

  • Swift原生实现 -快速、轻便、无依赖性
  • 两种操作模式:
    • stdio模式 -本地AI工具的标准MCP协议(Claude Code等)
    • HTTP模式 -具有SSE传输的网络可访问服务器,用于远程访问
  • 菜单栏应用程序 -带设置UI的macOS菜单栏应用程序
  • 全方位集成 通过URL方案:
    • 创建待办事项和项目
    • 更新现有项目(标记完成、修改等)
    • 搜索和导航
    • 批量操作

安装

先决条件

  • macOS 13.0或更高版本
  • Swift 5.10或更高版本
  • 已安装Things 3应用程序

从源头构建

# Clone the repository
git clone https://github.com/yourusername/things-mcp.git
cd things-mcp

# Build release binaries
swift build -c release

# The CLI tool is at: .build/release/things-mcp
# The menu bar app is at: .build/release/ThingsMCPApp

设置菜单栏应用程序

# Copy the app bundle to Applications (optional)
cp -r ThingsMCP.app /Applications/

# Or run directly
open ThingsMCP.app

用法

CLI工具(stdio模式)

用于Claude Code或其他MCP客户端:

# Add to ~/.mcp.json
{
  "mcpServers": {
    "things": {
      "command": "/path/to/things-mcp",
      "env": {
        "THINGS_AUTH_TOKEN": "your-token-here"
      }
    }
  }
}

CLI工具(HTTP模式)

作为网络服务器运行:

# Start HTTP server on default port 3000
THINGS_AUTH_TOKEN="your-token" things-mcp --http

# Or specify a custom port
THINGS_AUTH_TOKEN="your-token" things-mcp --http 8080

菜单栏应用程序

  1. 发射 ThingsMCP.app
  2. 单击菜单栏中的检查表图标
  3. 选择 设置。.. 配置:
    • 身份验证令牌 -您的Things URL方案认证令牌
    • 端口 -服务器端口(默认值:3333)
  4. 服务器自动启动

获取您的身份验证令牌

  1. 打开 事物 → 设置 → 将军
  2. 启用 事物URL
  3. 点击 管理 显示您的身份验证令牌

更新操作(标记待办事项完成、修改项目等)需要身份验证令牌。

可用工具

工具 说明
add_todo 创建一个新的待办事项,包括标题、注释、时间、截止日期、标签、清单项目
add_project 使用可选的嵌套待办事项创建新项目
update_todo 更新现有todo(需要身份验证令牌)
update_project 更新现有项目(需要身份验证令牌)
search 搜索待办事项/项目
show 导航到列表(今天、收件箱等)或特定项目
json_batch 批量执行多个操作(需要身份验证令牌)

API示例

添加到所有

curl -X POST "http://localhost:3333/message?sessionId=test" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "id": 1,
    "params": {
      "name": "add_todo",
      "arguments": {
        "title": "Buy groceries",
        "notes": "Milk, eggs, bread",
        "when": "today",
        "tags": ["errands"]
      }
    }
  }'

标记全部完成

curl -X POST "http://localhost:3333/message?sessionId=test" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "id": 1,
    "params": {
      "name": "update_todo",
      "arguments": {
        "id": "ABC123...",
        "completed": true
      }
    }
  }'

项目结构

things-mcp/
├── Package.swift              # Swift package manifest
├── Sources/
│   ├── ThingsMCP/            # CLI tool
│   │   ├── main.swift        # Entry point
│   │   ├── MCPServer.swift   # MCP protocol (JSON-RPC over stdio)
│   │   ├── HTTPServer.swift  # HTTP server with SSE transport
│   │   ├── ThingsClient.swift# Things URL scheme wrapper
│   │   └── Tools.swift       # MCP tool definitions
│   └── ThingsMCPApp/         # Menu bar app
│       ├── main.swift        # App entry point
│       ├── AppDelegate.swift # Menu bar UI
│       ├── SettingsWindow.swift # Settings UI
│       └── ... (shared files)
├── ThingsMCP.app/            # Built app bundle
└── README.md

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

致谢