Things MCP
Things MCP connects MCP clients to Things 3 on macOS to find, manage, and organize tasks, projects, areas, and tags with read-only defaults and permission-gated writes.
Read/search items: find and get to-dos, projects, areas, tags; filter by list, status, tag, date, parent, selected; count matches; check existence, health, capabilities, and request status.
Create and edit: create to-dos, projects, areas, tags; update titles, notes, tags, deadlines, status; schedule calendar dates; complete, cancel, or reopen items.
Organize: move to-dos between lists/projects/areas; move projects to areas/Today/Someday; detach parents; project moves report descendant impact.
Checklists and templates: create structured to-dos/projects from templates with checklist rows and headings; append/prepend/replace checklist rows; set reminders/Evening via Things URLs.
Duplicate, trash, restore: duplicate tasks/projects; move individual open tasks to recoverable Trash; restore open tasks/projects from Trash.
Destructive actions with extra permission: preview and apply deletion of projects/areas/tags, empty Trash, log completed items.
Navigation: show built-in views/search or item, open item for editing, show Quick Entry.
Safety: writes require permission, request IDs, and current revisions; native edits verify read-back, URL operations confirm dispatch only; no repeat-rule editing, full checklist reads, arbitrary ordering, or verified whole-library maintenance.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Things MCP Create an Inbox task called 'Buy groceries' for tomorrow."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Things MCP connects compatible MCP clients to the Things app on your Mac through its supported automation interfaces. Manage tasks, projects, areas and tags. Create checklists and project templates, set reminders, duplicate items and move projects with descendant summaries. The bridge runs on your Mac without a companion app or project-operated service.
Open Things 3 before launching your LLM client.
Things must already be running on the Mac hosting Things MCP before you open your AI app or browser conversation. Otherwise, you may see “unable to connect to server”. Keep Things running while you use the connection.
Already seeing the error? Open Things, fully quit and reopen your desktop client (or reload your browser client), then start a new conversation and check the connection.
Install
Your client | Setup route |
Claude Desktop on macOS | Download the |
Cowork on a Mac | Use the same desktop extension, then check the connection in a new Cowork task. |
ChatGPT in a browser | Set up a private tunnel. First-time setup requires developer commands. |
Other MCP clients | Configure the local transport. Setup and compatibility depend on the host. |
Claude Desktop
Download the
.mcpbpackage from Releases.Open Things 3 first, then launch Claude Desktop. If the client is already open and cannot connect, fully quit and reopen it after Things is running. Open the downloaded package and select Install. The desktop client supplies the runtime; no configuration editing or Terminal commands are needed.
Open Settings > Extensions > Things MCP > Configure. Enable Allow changes if you want to manage tasks, then select Save. New installations start read-only.
Start a new conversation and ask: Use Things MCP to check the connection without reading or changing tasks. Allow macOS Automation access to Things if prompted.
With Allow changes enabled, try: Use Things MCP to create an Inbox task called “Try Things MCP”, then read it back.
Cowork on a Mac
For Cowork on a Mac, use the same extension, start a new task, and select Cowork. Follow the Cowork installation and connection check for the steps, permission setting, and tested versions.
ChatGPT browser chats
Open Things 3 on your Mac before opening ChatGPT. Follow ChatGPT setup to connect a private tunnel on your Mac to your own account. First-time setup is currently an advanced installation.
Enable Allow changes from remote connections in the extension settings and select Save if you want to manage tasks through the tunnel.
Start a new conversation with the connection enabled and ask it to check the Things MCP connection. After setup, the background connection starts at login and does not need an open Terminal.
Other clients can use the standard local MCP transport. See other MCP clients. A model needs a client that supports tools; support for MCP alone does not guarantee compatibility with every host.
Related MCP server: Things MCP
What works
Workflow | What you can do |
Find and review | Search tasks, projects, areas and tags; query built-in lists and date filters. |
Plan your day | Create tasks, edit notes, schedule dates, set deadlines, complete and reopen tasks. |
Organize your work | Manage projects, areas and tags; move projects with task counts and descendant summaries. |
Checklists and templates | Create checklists and project templates, duplicate items, set reminders and Evening through Things URLs. |
Clean up deliberately | Move items to recoverable Trash with separate permission; restore open tasks and projects. |
Operation | Version 1.0.3 |
Search and read to-dos, projects, areas, and tags | Available |
Create an Inbox to-do | Available |
Edit a to-do's title and notes | Available |
Set or clear a deadline | Available |
Schedule a to-do on a calendar date | Available |
Complete, cancel, or reopen a to-do | Available |
Create and edit projects, areas, and tags | Available |
Built-in list queries and project/area filters | Available |
Moves between supported lists, projects, and areas | Available |
Delete an individual task to Trash | Available with Trash permission |
Create, replace, append or prepend checklist rows | Available through Things URLs |
Create project templates with headings | Available through Things URLs |
Move a task to an existing heading | Available through Things URLs |
Duplicate a task or project | Available through Things URLs |
Set Evening or a reminder time | Available through Things URLs |
Restore open tasks and projects from Trash | Available |
Delete projects, areas and tags | Available with container permission |
Tag assignment, hierarchy and keyboard shortcuts | Available |
Counts, selection, date filters and resumable searches | Available |
Edit section headings inside a project | Not available |
Create or change repeating schedules | Not available |
Project moves return task counts and observed descendant changes in the same receipt. See project move results for the counts, changed-task details and read-back limits.
URL operations require one-time local setup for edits and duplication. Their receipts say “Sent to Things; result not verified” because Things does not expose complete read-back for those fields.
Native repeat-rule editing, full checklist/heading reads, arbitrary ordering and verified whole-library maintenance are unavailable. The capability reference explains field limits, search behavior, and unavailable features. Tools return their current implementation status through things_capabilities.
Try it in a conversation
Start with a connection check:
Use Things MCP to check the connection without reading or changing tasks.
Then try a read:
Show up to ten open Inbox tasks, without notes.
With Allow changes enabled:
Create one Inbox task called “Try Things MCP”, then read it back.
Requirements
A Mac with Things 3 installed and running before you launch your LLM client. Native checks used Things 3.23.3 and 3.23.4.
A client that supports the chosen connection. The packaged local route uses Claude Desktop; remote use depends on your ChatGPT account's available plugin and tunnel features.
macOS Automation permission to control Things when requested.
For remote access, the Mac must remain awake, online, and signed in.
Things and client subscriptions are separate products. This repository does not include Things, a subscription, or a vendor runtime license grant.
Your data and permissions
Task content requested in a conversation is shared with that client and its provider. The bridge does not collect Things Cloud credentials, write to the Things database, or provide a shell tool. No telemetry destination is bundled.
Writes require your local grant. Moving a task to Things’ recoverable Trash requires an additional permission so you can allow editing without allowing deletion. Every mutation checks permission and uses a durable request ID. Native task edits verify the exposed result in Things. URL tools report dispatch separately and do not claim a verified result. Edits also require the current item revision. Uncertain writes are never automatically repeated with a new request ID. These checks reduce duplicate and stale edits; Things automation is not transactional and cannot promise automatic rollback.
Local and remote connections share the same permission store, write lock, and request journal. See Security for the trust boundary and private vulnerability reporting.
Explore the project
Guide | What you will find |
Step-by-step setup, permissions, updates and removal | |
Available fields, read-back limits and unsupported operations | |
Data handling, trust boundaries and private vulnerability reporting | |
Tested environments, remaining checks and release history | |
Development setup and architecture |
Support and contribution
For a bug or feature request, open an issue with versions and a synthetic example. Keep task contents and credentials out of reports.
To contribute, follow Contributing. Developers can run the tests without Things, provider accounts, or personal configuration.
Financial support is optional and does not unlock features.
If Things MCP is useful to you, buy me a coffee.
Things MCP is an independent project. Product names identify compatibility; the project is not affiliated with or endorsed by the named vendors. Released under the MIT License. You may use, modify, and redistribute the code, including commercially, provided you retain its copyright and license notice. The software is provided without warranty. Third-party notices apply to their respective dependencies.
Available Tools
20 toolsthings_apply_destructiveCDestructiveIdempotent
Apply a previously reviewed scope using its current scope revision. Requires ordinary writes and the separate local owner grant for this action. Container deletion can cascade; empty Trash is permanent and global. Open-project, area and tag-hierarchy deletion are native verified. Global-command gates remain disabled pending their separate checks.
Inputs: action (required), requestId (required), expectedScopeRevision (required), target. Returns: result
things_capabilitiesARead-onlyIdempotent
Read the implementation and verification status of every operation family. Unavailable features cannot be invoked.
Inputs: no named parameters. Returns: result
things_count_itemsARead-onlyIdempotent
Count matches in a scan segment. Follow nextScanOffset and sum counts until scanComplete; concurrent Things edits can change totals. Uses the same filters as find. Offset must be zero.
Inputs: kind, list, text, limit, +13 more. Returns: result
things_create_from_templateAIdempotent
Send one structured to-do or project to Things. Supports checklist rows and initial project headings. Requires writes. URL receipt confirms dispatch only: Things exposes no complete read-back or returned IDs here. Inspect Things; never retry with a new request ID.
Inputs: item (required), requestId (required). Returns: result
things_create_itemBIdempotent
Create a to-do, project, area, or tag. Supply a unique UUID requestId. Creation of all four kinds is native verified. Local write permission is required and disabled by default.
Inputs: kind (required), title (required), requestId (required), notes, +13 more. Returns: result
things_duplicate_itemAIdempotent
Ask Things to duplicate a to-do or project through its documented URL command. Requires writes, current revision and the local Keychain URL token. Repeating items cannot be duplicated. Receipt contains the source ID, not a new item ID, and does not confirm completion. Inspect Things before another request.
Inputs: target (required), requestId (required), expectedRevision (required), title. Returns: result
things_edit_extrasADestructiveIdempotent
Send checklist replacement/append/prepend, heading placement or scheduling including reminders/Evening/clearing to Things. Requires writes, current revision and the local Keychain URL token. Checklist replacement replaces every row. These fields cannot be read back; receipt is unverified dispatch. Repeat templates may reject these changes.
Inputs: target (required), changes (required), requestId (required), expectedRevision (required). Returns: result
things_existsARead-onlyIdempotent
Check whether an item exists by kind and ID. Automation errors are not reported as absence.
Inputs: id (required), kind (required). Returns: result
things_find_itemsARead-onlyIdempotent
Find items by type, text, status, tag ID, date range, selected items, list or parent. Optional sorting changes result order only. Follow nextScanOffset with offset zero to continue beyond 5000 objects. Results are not a snapshot. Fetch before editing.
Inputs: kind, list, text, limit, +13 more. Returns: result
things_get_itemARead-onlyIdempotent
Read one Things item by kind and stable ID, including its revision for safe editing.
Inputs: id (required), kind (required). Returns: result
things_healthARead-onlyIdempotent
Check the local Things connection, timezone, ordinary-write permission, and separate Trash permission.
Inputs: no named parameters. Returns: result
things_move_itemADestructiveIdempotent
Move a to-do to a project or area, a project to an area, detach a parent, or move a to-do to Inbox, Today, Anytime, or Someday. Projects support Today and Someday. Project Anytime and direct Logbook moves are unavailable. Project moves return descendantImpact with compared/changed task counts and up to 20 changed IDs with field names. Counts describe exposed fields, not every inherited effect. Requires the latest revision and write permission. Does not reorder items, address headings, or restore Trash.
Inputs: target (required), requestId (required), destination (required), expectedRevision (required). Returns: result
things_preview_destructiveARead-onlyIdempotent
Inspect the exposed scope of project/area/tag deletion, emptying Trash, or logging completed items. Returns a scope revision. Never grants permission. Checklist, heading and repeat-template content cannot be enumerated; Things does not provide atomic scope locking. Check health for native execution gates.
Inputs: action (required), target. Returns: result
things_request_statusARead-onlyIdempotent
Check the local receipt for a mutation request ID. Pending or unknown means inspect Things before any further write; do not create a new ID as an automatic retry.
Inputs: requestId (required). Returns: result
things_restore_itemAIdempotent
Restore one open to-do to Inbox or one open project to Today from Trash. Requires normal writes, a current revision and a unique request ID. Closed items are not enabled. Restore a trashed project before addressing its children. Trashed project children cannot be enumerated before restoration; the receipt verifies exposed root fields and destination.
Inputs: target (required), requestId (required), expectedRevision (required). Returns: result
things_schedule_itemADestructiveIdempotent
Schedule a to-do or project on an explicit calendar date in the Mac timezone. Requires its current revision and a unique UUID requestId. Does not set reminders or repeating rules.
Inputs: date (required), target (required), requestId (required), expectedRevision (required). Returns: result
things_show_viewAIdempotent
Open search or a built-in Things view, optionally filtering by tags. This changes the Mac's view only. Requires writes and a request ID; receipt confirms URL dispatch, not a visible result or returned task data.
Inputs: view (required), requestId (required), tags, query. Returns: result
things_trash_itemADestructiveIdempotent
Move one open to-do, including any checklist it contains, to Things Trash on the Mac. Read it and review the target first. Requires the latest revision, a unique request ID, ordinary write permission, and the separate local Trash grant. Does not permanently delete, empty Trash, or delete projects, areas or tags.
Inputs: target (required), requestId (required), expectedRevision (required). Returns: result
things_update_itemADestructiveIdempotent
Edit supported fields, or complete/cancel/reopen a to-do or project. Use the latest revision and a unique UUID requestId. Omitted fields stay unchanged; deadline null clears it. No deletion or arbitrary property editing.
Inputs: target (required), changes (required), requestId (required), expectedRevision (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Most tools map to a distinct resource and action, and the paired destructive preview/apply flow is clearly separated. Minor overlap exists between create_item and create_from_template, and between schedule_item and edit_extras, so an agent must read descriptions carefully to pick the right one.
All tools share the things_ prefix and use snake_case, with mostly verb_noun names like get_item, create_item, and restore_item. A few names are noun-only or less conventional (things_capabilities, things_health, things_exists, things_request_status), making the pattern slightly inconsistent.
20 tools falls into the 16-25 range that feels heavy for a server. That said, each tool addresses a distinct operation or safety gate, so the count is still defensible for a full Things integration.
The surface covers create, read, update, move, schedule, duplicate, trash/restore, and reviewed destructive actions, which is strong lifecycle coverage for the domain. Minor gaps remain, such as no direct read-back for template-created items, no project-to-Logbook move, and disabled global destructive gates.
Maintenance
Related MCP Connectors
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
Headless task management for bots, apps and AI agents. Remote MCP server, OAuth or access token.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables integration with Things3, allowing the creation and management of tasks and projects via the MCP protocol, including synchronization with Agenda projects.76-
- AlicenseAqualityCmaintenanceAn MCP server for Things 3 on macOS that enables AI assistants to create, read, update, and manage tasks and projects. It utilizes the Things URL scheme for write operations and AppleScript for querying data from the app.1522 npm2MIT
- AlicenseBqualityDmaintenanceMCP server that gives AI agents read/write access to your Things3 tasks via the Things API.321Apache 2.0
- AlicenseAqualityDmaintenanceComposite MCP server for Things 3 on macOS that bundles multiple read calls into single requests, enables batch writes, and provides a self-healing read path to handle TCC protection issues.8MIT