Using Things 3 as an MCP Server with Claude Code
I already had a script that synced completed Things tasks into my Obsidian daily notes — a nightly one-way pull that gave me a log of what I’d finished. Useful for reviews, but limited. Claude could see what I did yesterday. It couldn’t see what’s on my plate right now, help me process my inbox, or create a task from the middle of a conversation. The sync script was a report. What I needed was a live connection.
MCP servers solve this. They let Claude talk to apps the way it talks to your filesystem — as tools it can reach for when the conversation needs them. Wire up Things as an MCP server, and your task manager stops being a separate window you switch to. It becomes part of the conversation.
What Opens Up
The MCP server exposes three layers of access:
See your world. Claude can pull your inbox, today list, upcoming tasks, someday list, logbook, projects, and areas. Any of these, mid-conversation, without you copying and pasting anything.
Find things. Search by keyword, or filter by area, tag, deadline, or status. “What’s overdue in Finance?” becomes a tool call, not a manual hunt through Things.
Act on things. Create todos and projects, update titles and dates, reassign to different areas, mark items complete or canceled. Claude does this as part of a larger workflow — not as a standalone command you issue, but as a natural step in whatever you’re working through together.
The key shift: this isn’t an API you call explicitly. It’s ambient context. Claude reaches for Things when the conversation calls for it, the same way it reads a file or checks your calendar.
How I Actually Use It
GTD Inbox Processing
I have a /gtd skill in Claude Code that runs a full GTD processing session. Claude pulls my Things inbox, categorizes each item — actionable, reference material, vague, stale — and walks through them one at a time.
Actionable items get sharpened into physical next actions. Not “figure out insurance” but “email Reyes at Feather about enrollment.” Claude updates the title, assigns it to a project, sets a start date — all through the MCP server.
Reference material gets extracted to my Obsidian vault (a dated entry on the relevant note, or a new note if nothing exists) and the Things item gets marked complete. The MCP server handles both directions: reading what’s in the inbox, writing the changes back.
The part that makes this work isn’t any single tool call. It’s that Claude can do the whole loop — read the item, search the vault for where it belongs, write the vault entry, mark the task done, create a follow-up if needed — without me switching apps or copying text between windows.
Weekly Reviews
My weekly review skill scans all open projects in my vault and flags stale ones for triage. The Things MCP fills in the task-level picture. Claude can check whether a project that looks active in the vault actually has next actions in Things, or whether a project flagged as stale still has tasks piling up that nobody’s touched. The vault tells you the project story; Things tells you the task reality. Having both in the same conversation means the review catches gaps that either system alone would miss.
Conversational Task Capture
The simplest use case, and maybe the most useful. Mid-conversation — while planning a trip, processing an email, catching up on a project — Claude creates a task in the right project with the right start date. No context switch to Things, no “remind me to do this later.” The task lands where it belongs as a side effect of the conversation that produced it.
What It Doesn’t Do
The MCP server reads the Things SQLite database directly, so reads are fast and comprehensive. But it can’t do everything the app can. Repeating task schedules can’t be created through the MCP server — you’d set those up in Things directly. Reminders and alerts aren’t supported either; if a task needs a 3pm nudge, Claude will note it and I set the alert manually. Area assignment on new tasks works, but some of the finer organizational features (headings within projects, task reordering) are Things-native.
None of these have been real blockers. The MCP server covers the actions that matter in a conversation — reading state, creating tasks, updating them, marking them done — and everything else is a one-time setup you do in Things itself.
The section above describes the workflow. Below is how to set it up. If you’re handing this URL to Claude Code, the information below is what it needs.
Technical Setup
Prerequisites
- Things 3 (macOS) — the MCP server reads its SQLite database directly
- Python 3.10+ and uv (for running the server without manual dependency management)
- Claude Code — with MCP server support
Install the MCP Server
Clone hald/things-mcp:
git clone https://github.com/hald/things-mcp.git ~/dev/third-party/mcp-servers/things-mcpConfigure Claude Code
Add the server to your project’s .mcp.json (or your global Claude config):
{
"mcpServers": {
"things": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/path/to/things-mcp",
"run",
"things_server.py"
]
}
}
}Replace /path/to/things-mcp with wherever you cloned the repo. Using uv run means dependencies are resolved automatically — no virtualenv setup needed.
Verify It Works
Start a Claude Code session and ask something that requires Things data:
What's in my Things inbox right now?If the MCP server is connected, Claude will call mcp__things__get-inbox and show your items. If it’s not, you’ll get an error about the tool not being available — check that the path in .mcp.json is correct and that uv is on your PATH.
Available Tools
Once connected, Claude has access to:
| Tool | What it does |
|---|---|
get-inbox | Pull all inbox items |
get-today | Tasks due today |
get-upcoming | Upcoming scheduled tasks |
get-someday | Someday/maybe items |
get-logbook | Completed tasks (with time period filter) |
get-projects | All projects, optionally with their tasks |
get-areas | All areas |
get-tags | All tags |
add-todo | Create a new task |
add-project | Create a new project |
update-todo | Update title, dates, tags, completion status |
update-project | Update project details |
search-items | Keyword search across items |
search-advanced | Filter by area, deadline, status, tag, type |
You don’t need to memorize these — Claude discovers them automatically and uses whichever ones fit the conversation.
Caveats
macOS only. Things 3 is a Mac/iOS app and the MCP server reads its local SQLite database. No Windows or Linux support.
Things must be installed. The MCP server reads the database file Things creates locally. If Things isn’t installed or hasn’t synced, there’s nothing to read.
No reminders or repeating tasks. The MCP server can create and update tasks, but can’t set alerts or configure repeat schedules. Set those in Things directly.