@roebot0/things-mcp
v1.0.0
Published
MCP server for Things 3 task manager on macOS.
Maintainers
Readme
things-mcp
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.
Requirements
- macOS
- Things 3 installed
- Node.js >= 18
Install
Claude Code
claude mcp add things-mcp -- node /path/to/things-mcp/start-mcp-server.jsclaude_desktop_config.json
{
"mcpServers": {
"things-mcp": {
"command": "node",
"args": ["/path/to/things-mcp/start-mcp-server.js"]
}
}
}From source
git clone https://github.com/AaronRoeF/things-mcp.git
cd things-mcp
npm install
npm run buildTools
| 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 (12)
Read tools query the Things 3 SQLite database directly in read-only mode. No authentication required.
Write tools (3)
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.
How it works
- 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.
License
MIT
