MCP server for Things 3 on macOS. Gives Claude (and any MCP client) read/write access to your tasks, projects, areas, and tags via the Things SQLite database and URL scheme.
- macOS
- Things 3 installed
- Node.js >= 18
claude mcp add things-mcp -- node /path/to/things-mcp/start-mcp-server.js{
"mcpServers": {
"things-mcp": {
"command": "node",
"args": ["/path/to/things-mcp/start-mcp-server.js"]
}
}
}git clone https://github.com/AaronRoeF/things-mcp.git
cd things-mcp
npm install
npm run build| Tool | Description |
|---|---|
things_today |
List all to-dos in the Today list |
things_inbox |
List all to-dos in the Inbox |
things_upcoming |
List to-dos scheduled for future dates |
things_anytime |
List open to-dos in the Anytime list |
things_someday |
List to-dos in the Someday list |
things_logbook |
List completed to-dos |
things_projects |
List all projects with status and open to-do count |
things_areas |
List all areas with project and to-do counts |
things_tags |
List all tags |
things_search |
Search to-dos by keyword (title and notes) |
things_get |
Get a specific to-do by ID with full details and checklist |
things_project_todos |
List all to-dos in a specific project |
things_create |
Create a new to-do |
things_complete |
Mark a to-do as complete |
things_update |
Update an existing to-do |
Read tools query the Things 3 SQLite database directly in read-only mode. No authentication required.
things_create, things_complete, and things_update use JXA (JavaScript for Automation) and the Things URL scheme. If you use the Things URL scheme auth token, set the THINGS_AUTH_TOKEN environment variable.
- SQLite reads: The server opens the Things 3 database at
~/Library/Group Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-1YQ4E/Things Database.thingsdatabase/main.sqlitein read-only mode usingbetter-sqlite3. - JXA writes: Create and update operations use
osascript -l JavaScriptto invoke the Things URL scheme. - Date encoding: Things stores dates as packed integers
(year << 16) | (month << 12) | (day << 7). The server handles encoding/decoding transparently.
MIT