Robot on Wheels

Things MCP

working on it

An MCP server for the popular Mac task management app Things lets users use an LLM to understand and manage their todo list.

Updated August 11, 2025

August 11, 2025

Today I merged a couple PRs from a generous contributor to add support for checklists and headings, which came together in release version 0.3.0. The checklist feature was on my "roadmap," the lack of support for headings wasn't something I was aware of. I've understood the power of open source software communities but it's another thing to see it firsthand on a project I am personally involved in.

August 5, 2025

I decided to pick this project back up again and just released version 0.2.0. This version uses the FastMCP library which will make it easier to maintain going forward. It also implements a few ideas that were suggested by users. There are still some Things features that haven't been implemented yet (eg checklists) and I think there's room for improving how the tools are organized to make them more useful to the LLM...fodder for future releases.

I think the Things UI across all the Apple platforms is nearly perfect, one of the best examples of a UI that just fades into the background and lets you get work done (which belies the attention to detail that must have gone into its design). If you are familiar with David Allen's "Getting Things Done" approach, Things handles all the fundamentals–inbox, ticker, someday/maybe list, etc. but avoids being overly rigid or prescriptive.

So what's the benefit of connecting Things to AI via an MCP server? Initially I thought it might help me "manage" my tasks. This was a letdown–if anything, it encouraged over-planning instead of just doing. But recently I used Claude Code to connect Things and Obsidian in a single project, and the LLM's ability to keep the two in sync felt immediately useful. That new use case, along with the power of Claude Code to help me develop and maintain the MCP server code, inspired me to release a new version, and hopefully future ones...

I have two insights from using it so far. First, having a clean UI (such as Things) still has a lot of benefits to the user. I can scan a list of projects or tasks in Things in seconds, but an LLM is slow (for now) and often too verbose, itching to turn today's tasks into a minor novella. Second, there is a big difference between interacting with Things via Claude Desktop ("traditional" chat UI) and the more agentic Claude Code. The chat UI feels constrained compared to the open-ended, scriptable "canvas" of Claude Code. (I'll add a third insight–the first two insights seem to be in tension with each other!)

July 1, 2025

I haven't been actively maintaining this project since completing it, but it's great to see that it's gotten some love and interest on Github.

January 10, 2025

The Model Context Protocol (MCP), recently published by Anthropic, creates an open standard for building bridges between AI models and other applications, giving assistants the power to access and interact with relevant information in other apps.

To explore the practical impact of this new standard, I built a connection between the Claude Desktop app and my favorite task manager, Things. Now, when I chat with Claude it knows what's on my todo list in Things, and it can modify that information just like I can when I use the app.

This integration opens up new ways to interact with a task manager, especially when combined with other MCP integrations (such as calendar access). Instead of working through menus and lists, you can have natural conversations about your work.

For example, let’s ask Claude to help me plan out my day for tomorrow. I already have a workout penciled in for the afternoon, and I’m talking to Claude inside a Project that gives it some general information about how I like to work, such as preferring to do “deep” work in the morning.


Me: Block out time on my calendar tomorrow for focused work on my most pressing task

Claude: I'll help you schedule focused work time for tomorrow (January 10th). First, let me check your calendar and tasks to see what's already scheduled and what your most pressing work is.

Claude: [Uses MCP integrations to see what’s on my todo list and calendar.]

Claude: I notice you have a task with a deadline tomorrow ("Finalize post" in the "Write: Things MCP Server Post" project) and another high-priority task to prototype the diet assistant project. Since you prefer intellectual work in the morning and already have a workout scheduled for 4:00-5:00 PM, I suggest blocking out focused time in the morning. Here's my proposed plan:

Block out 9:00 AM - 12:00 PM for focused work, with the description mentioning both the post finalization (priority due to deadline) and the diet assistant prototype This gives you the morning for deep work while you're fresh, and still leaves the afternoon for other tasks around your workout

Would you like me to create this calendar block? I can adjust the timing if you prefer a different schedule. Also, I notice tomorrow is a dog walking day - would you like me to schedule the lunch break walk as well?


Claude identified the tasks that are “due” tomorrow, decided that they should be scheduled for the morning, and also realized that my calendar was missing my midday walk with Charlie 🐶.

What else can we do with this? We could ask Claude to create a task to pack for the vacation on my calendar next month, and expect it to learn the destination from the calendar entry and create an appropriate packing list. Or ask Claude to analyze our tasks and visualize them in the classic Eisenhower matrix, giving us a quick overview of how we’re allocating our time. It feels like having a hybrid coach/assistant on call.

Things-MCP is open source and published on Github.