Labsco
MCP SERVER

Things

by hald

Read every Things 3 list, search across them, and create or reschedule to-dos, projects and areas without leaving the conversation.

Project & Task ManagementVerified
Summary
A weekly review becomes a conversation rather than an hour of dragging things around.

The combination that earns its place is search_advanced plus bulk_update_todos: find every stale inbox item by tag, area or creation window, then move, reschedule or complete the whole set in one call. Two things to plan around — the writes go through the Things URL scheme, so bulk changes need the auth token enabled first, and everything reads and writes the local database, which means the Mac running Things is the only place this works.

What it is

A read-and-write surface over the Things 3 database on your Mac. Reads come straight from the local database; writes go through the Things URL scheme, with Areas handled over AppleScript because the URL scheme has no command for them.

What you get
  • Every built-in list as its own tool: get_inbox, get_today, get_upcoming, get_anytime, get_someday, get_logbook and get_trash
  • Projects, areas, headings and tags listed, optionally with the items they contain
  • search_advanced filters by status, start date, deadline, tag, area, item type and creation window — 3d, 1w, 2m, 1y
  • get_tag_usage counts how many items use each tag and can return only the unused ones, which is what makes a tag cleanup finite
  • add_todo and add_project create with notes, tags, deadline, checklist items and a when value that accepts today, tomorrow, evening, anytime, someday, YYYY-MM-DD or YYYY-MM-DD@HH:MM for a reminder
  • add_area and update_area create and rename areas and set their tags — there is deliberately no delete_area
  • update_todo replaces or appends tags and rewrites, prepends or appends checklist items
  • bulk_update_todos applies one change — move, tag, reschedule, deadline, heading, complete or cancel — to a list of to-do ids in a single round trip
  • Read tools take limit and offset and return a Showing X-Y of Z header plus structured content, so a client can consume the raw dicts instead of parsing text
  • Tasks inside Someday projects are kept out of Today, Upcoming and Anytime, matching what the Things window shows
  • show_item and search_items bring the app itself to the right list or result
Requirements

macOS with Things 3 installed and opened at least once, and Enable Things URLs switched on under Things → Settings → General. It runs as uvx things-mcp, which needs uv (brew install uv). bulk_update_todos additionally needs the Things auth token that the same Enable Things URLs panel manages; the server reads it itself. Default transport is stdio; setting THINGS_MCP_TRANSPORT=http switches it to HTTP, with THINGS_MCP_HOST and THINGS_MCP_PORT defaulting to 127.0.0.1 and 8000.

Setup effort

One command — uvx things-mcp