一个提供与 macOS 上 Things3 完整集成的 MCP(模型上下文协议)服务器。此服务器使 AI 助手和其他 MCP 客户端能够通过 25 个专用工具与 Things3 进行交互,提供全面的任务管理功能,包括智能错误纠正和自动标签创建。
无需安装即可使用该服务器:
{
"mcpServers": {
"things3": {
"command": "npx",
"args": ["things3-mcp@latest"],
"env": {
"THINGS3_AUTH_TOKEN": "your_auth_token_here"
}
}
}
}
npm install -g things3-mcp
然后添加到您的 MCP 客户端配置中:
{
"mcpServers": {
"things3": {
"command": "things3-mcp",
"env": {
"THINGS3_AUTH_TOKEN": "your_auth_token_here"
}
}
}
}
# 克隆仓库
git clone https://github.com/urbanogardun/things3-mcp.git
cd things3-mcp
# 安装依赖
npm install
# 构建项目
npm run build
对于更新操作(修改、完成、删除),您需要设置您的 Things3 授权令牌:
export THINGS3_AUTH_TOKEN="your_auth_token_here"
要找到您的授权令牌:
您也可以创建一个 .env 文件(参见 .env.example)。
打开 Claude Desktop 配置:
~/Library/Application Support/Claude/claude_desktop_config.json使用以下方法之一添加 Things3 MCP 服务器:
方法 1:使用 npx(最简单,无需安装)
{
"mcpServers": {
"things3": {
"command": "npx",
"args": ["things3-mcp@latest"],
"env": {
"THINGS3_AUTH_TOKEN": "your_auth_token_here"
}
}
}
}
方法 2:全局 npm 安装
{
"mcpServers": {
"things3": {
"command": "things3-mcp",
"env": {
"THINGS3_AUTH_TOKEN": "your_auth_token_here"
}
}
}
方法 3:本地安装
{
"mcpServers": {
"things3": {
"command": "node",
"args": ["/absolute/path/to/things3-mcp/dist/index.js"]
}
}
}
重启 Claude Desktop
使用上述任一方法,根据您的 MCP 客户端格式调整配置。
todos_list列出待办事项,具有灵活的筛选选项。
参数:
filter: "inbox" | "today" | "upcoming" | "anytime" | "someday" | "logbook"(可选)searchText: 在标题和备注中搜索(可选)示例:
{
"filter": "today",
"searchText": "会议"
}
todos_get获取特定待办事项的详细信息。
参数:
id: 待办事项的唯一标识符(必需)todos_create创建一个新的待办事项,支持所有属性(如果不存在则自动创建标签)。
参数:
title: 任务标题(必需)notes: 额外备注(可选)whenDate: ISO 8601 格式的调度日期字符串(可选)deadline: ISO 8601 格式的截止日期字符串(可选)tags: 标签名称数组(可选)checklistItems: 检查项标题数组(可选)*projectId: 分配给项目(可选)areaId: 分配给区域(可选)heading: 项目内的标题,用于添加到其中(可选)示例:
{
"title": "审查 Q4 报告",
"notes": "关注收入指标",
"whenDate": "2024-12-15T09:00:00Z",
"deadline": "2024-12-20T17:00:00Z",
"tags": ["工作", "紧急"],
"checklistItems": ["审查收入", "检查支出", "更新预测"],
"projectId": "project-id-here"
}
* 关于检查项:当提供 checklistItems 时,待办事项是使用 Things3 的 URL 方案而不是 AppleScript 创建的。这种方法有一些限制:
todos_update更新现有待办事项的属性(如果不存在则自动创建标签)。
参数:
id: 待办事项标识符(必需)todos_create 中的所有参数(可选)todos_complete标记一个或多个待办事项为已完成。
参数:
ids: 单个 ID 或 ID 数组(必需)todos_uncomplete标记一个或多个待办事项为未完成。
参数:
ids: 单个 ID 或 ID 数组(必需)todos_delete永久删除一个或多个待办事项。
参数:
ids: 单个 ID 或 ID 数组(必需)projects_list列出项目,具有可选的筛选条件。
参数:
areaId: 按区域筛选(可选)includeCompleted: 包含已完成的项目(可选,默认值:false)projects_get获取详细的项目信息。
参数:
id: 项目标识符(必需)projects_create创建一个新的项目(如果不存在则自动创建标签)。
参数:
name: 项目名称(必需)notes: 项目描述(可选)areaId: 分配给区域(可选)whenDate: 开始日期(可选)deadline: 截止日期(可选)tags: 标签名称数组(可选)headings: 部分标题数组(可选)projects_update更新项目属性(如果不存在则自动创建标签)。
参数:
id: 项目标识符(必需)projects_create 中的所有参数,除了 headings(可选)projects_complete标记项目为已完成。
参数:
id: 项目标识符(必需)projects_delete从 Things3 中完全删除项目。
参数:
ids: 单个项目 ID 或项目 ID 数组(必需)areas_list列出所有区域。
参数:
includeHidden: 包含隐藏的区域(可选,默认值:false)areas_create创建一个新的区域。
参数:
name: 区域名称(必需)areas_delete从 Things3 中完全删除区域。
参数:
ids: 单个区域 ID 或区域 ID 数组(必需)tags_list列出所有标签及其层级信息。
返回值:带有嵌套标签的 parentTagId 的标签数组
tags_create创建一个新的标签。
参数:
name: 标签名(必需)parentTagId: 用于嵌套的父标签(可选)tags_add向项目添加标签(如果不存在则自动创建标签)。
参数:
itemIds: 单个 ID 或待办事项/项目 ID 数组(必需)tags: 要添加的标签名称数组(必需)tags_remove从项目中移除标签。
参数:
itemIds: 单个 ID 或待办事项/项目 ID 数组(必需)tags: 要移除的标签名称数组(必需)tags_delete从 Things3 中完全删除标签。
参数:
names: 单个标签名称或标签名称数组(必需)bulk_move将多个待办事项移动到项目或区域。
参数:
todoIds: 待办事项 ID 数组(必需)projectId: 目标项目(可选)areaId: 目标区域(可选)bulk_updateDates更新多个待办事项的日期。
参数:
todoIds: 待办事项 ID 数组(必需)whenDate: 新的调度日期或 null 清除(可选)deadline: 新的截止日期或 null 清除(可选)logbook_search在日志中搜索已完成的项目。
参数:
searchText: 在标题和备注中搜索(可选)fromDate: 范围的起始日期(可选)toDate: 范围的结束日期(可选)limit: 最大结果数(可选,默认值:50)system_launch确保 Things3 正在运行并准备好。
服务器自动纠正常见的问题:
人类:为网站重新设计创建一个新项目,其中包括规划、设计和实施的任务
Claude:我将为您创建一个包含这些任务的网站重新设计项目。
[使用 Things3 MCP 工具创建项目和任务]
创建一个待办事项:
{
"tool": "todos_create",
"parameters": {
"title": "准备演示",
"notes": "包括 Q4 指标和预测",
"whenDate": "2024-12-10T14:00:00Z",
"tags": ["工作", "演示"]
}
}
列出今天的任务:
{
"tool": "todos_list",
"parameters": {
"filter": "today"
}
}
# 安装依赖
npm install
# 以监视模式运行开发
npm run dev
# 运行测试
npm test
# 运行集成测试(需要 Things3)
npm run test:integration
# 代码检查
npm run lint
# 类型检查
npm run type-check
things3-mcp/
├── src/
│ ├── index.ts # 入口点
│ ├── server.ts # MCP 服务器实现
│ ├── config.ts # 配置管理
│ ├── tools/ # 工具实现
│ │ ├── todos.ts # 待办事项操作
│ │ ├── projects.ts # 项目操作
│ │ ├── areas.ts # 区域操作
│ │ ├── tags.ts # 标签操作
│ │ ├── bulk.ts # 批量操作
│ │ ├── logbook.ts # 日志搜索
│ │ └── system.ts # 系统实用工具
│ ├── templates/ # AppleScript 模板
│ ├── utils/ # 实用函数
│ │ ├── applescript.ts # AppleScript 桥接
│ │ ├── cache-manager.ts # 缓存系统
│ │ ├── error-correction.ts # 错误纠正
│ │ └── date-handler.ts # 日期格式化
│ └── types/ # TypeScript 定义
├── tests/
│ ├── unit/ # 单元测试
│ └── integration/ # 集成测试
└── dist/ # 编译后的 JavaScript
osascript -e 'tell application "Things3" to return name of first to do'
npm run buildnode dist/index.js欢迎贡献!请遵循常规提交格式,并确保所有测试通过后再提交拉取请求。