update_project
Modify existing project details in Things 3 task management app by updating title, notes, deadlines, tags, status, or other attributes using project ID.
Instructions
更新现有的项目。需要提供项目ID和授权令牌。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 项目的ID(必需) | |
| authToken | No | 授权令牌(如未提供,将使用环境变量THINGS_AUTH_TOKEN) | |
| title | No | 新标题 | |
| notes | No | 新备注(替换现有) | |
| prependNotes | No | 在现有备注前添加 | |
| appendNotes | No | 在现有备注后添加 | |
| when | No | 时间安排 | |
| deadline | No | 截止日期 | |
| tags | No | 标签(替换所有) | |
| addTags | No | 添加标签 | |
| areaId | No | 区域ID | |
| area | No | 区域标题 | |
| completed | No | 完成状态 | |
| canceled | No | 取消状态 | |
| reveal | No | 是否显示 |
Implementation Reference
- src/index.js:521-539 (handler)The main handler function for executing the update_project tool. It validates the auth token, spreads args into params, builds the Things 'update-project' URL using buildThingsUrl, opens the URL to perform the update, and returns a success text response.async handleUpdateProject(args) { const authToken = args.authToken || DEFAULT_AUTH_TOKEN; if (!authToken) { throw new Error('需要授权令牌。请设置环境变量THINGS_AUTH_TOKEN或在参数中提供authToken'); } const params = { ...args, authToken }; const url = buildThingsUrl('update-project', params); await this.openThingsUrl(url); return { content: [ { type: 'text', text: `✅ 项目更新命令已发送 (ID: ${args.id})`, }, ], }; }
- src/index.js:248-317 (registration)Tool registration in the ListTools response, defining the name, description, and input schema (JSON Schema) for the update_project tool.{ name: 'update_project', description: '更新现有的项目。需要提供项目ID和授权令牌。', inputSchema: { type: 'object', properties: { id: { type: 'string', description: '项目的ID(必需)', }, authToken: { type: 'string', description: '授权令牌(如未提供,将使用环境变量THINGS_AUTH_TOKEN)', }, title: { type: 'string', description: '新标题', }, notes: { type: 'string', description: '新备注(替换现有)', }, prependNotes: { type: 'string', description: '在现有备注前添加', }, appendNotes: { type: 'string', description: '在现有备注后添加', }, when: { type: 'string', description: '时间安排', }, deadline: { type: 'string', description: '截止日期', }, tags: { type: 'string', description: '标签(替换所有)', }, addTags: { type: 'string', description: '添加标签', }, areaId: { type: 'string', description: '区域ID', }, area: { type: 'string', description: '区域标题', }, completed: { type: 'boolean', description: '完成状态', }, canceled: { type: 'boolean', description: '取消状态', }, reveal: { type: 'boolean', description: '是否显示', }, }, required: ['id'], }, },
- src/index.js:433-434 (registration)Dispatch case in the CallToolRequest handler switch statement that routes update_project calls to the handleUpdateProject method.case 'update_project': return await this.handleUpdateProject(args);
- src/utils.js:84-93 (helper)Utility function used by the handler to construct the Things URL scheme for 'update-project' command with encoded parameters.export function buildThingsUrl(command, params = {}) { const baseUrl = `things:///${command}`; const queryString = buildQueryString(params); if (!queryString) { return baseUrl; } return `${baseUrl}?${queryString}`; }