Skip to main content

Production-ready Model Context Protocol server for Things 3, enabling AI assistants to interact with your task management system through natural language

Project description

Things 3 GTD MCP Server

A Model Context Protocol (MCP) server for Things 3 that brings Getting Things Done (GTD) methodology to AI assistants. macOS only.

PyPI License: MIT

What it is

This server exposes Things 3 to AI assistants (Claude Desktop, Claude Code, Claude Mobile, ChatGPT, n8n, Cursor, OpenClaw) over MCP. The tools are organized around David Allen's five GTD stages — Capture, Clarify, Organize, Reflect, Engage — so an assistant can help you practice GTD, not just CRUD a task database.

The shift from "database wrapper" to "GTD assistant" reflects a key insight about MCP design: tools should match how agents think about problems, not how the underlying APIs are structured.

Requirements

Requirement Notes
macOS Required. The server uses AppleScript and the Things URL scheme — neither work in Linux containers.
Things 3 Installed, with scripting permissions enabled.
Python 3.12+ Modern type hints and f-strings.
uv Recommended package manager. pip works too.

Installation

pip install things3-mcp-gtd
# or, no install:
uvx things3-mcp-gtd

For a local development install, see docs/DEVELOPERS.md.

Review the Privacy Notice and Terms of Use before running the server.

Configuration

Copy .env.example to .env and set at minimum:

THINGS_AUTH_TOKEN=<paste from Things -> Settings -> General -> Enable Things URLs>

The server reads from environment variables and the .env file via pydantic-settings. All other settings (host, port, debug, auth enforcement) have sensible defaults — see .env.example for the full list.

Alternatively, run the interactive helper:

python scripts/configure_token.py

which writes the token to ~/.things-mcp/config.json.

Quick start

# 1. Make sure Things 3 is open
# 2. Start the server
uv run server

Verify it's reachable:

bash scripts/health-check.sh

The server binds to localhost:8009 by default and exposes a single MCP endpoint at /mcp over streamable HTTP.

Connecting an MCP client

Claude Desktop (stdio)

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "things": {
      "command": "uv",
      "args": ["run", "server"]
    }
  }
}

Claude Desktop / Claude Mobile / ChatGPT (remote HTTPS)

Front the server with an HTTPS tunnel (ngrok, Cloudflare Tunnel, etc.) and point your client at https://<your-tunnel>/mcp. Full walkthrough: docs/agent-access.md.

n8n / OpenClaw / Cursor

See the dedicated guides:

Compatibility deep-dives: n8n + FastMCP, ChatGPT + FastMCP.

Tools

13 tools organized by GTD stage:

Capture

Tool Purpose
capture-task Quick-capture to Inbox without organizing.

Clarify

Tool Purpose
process-inbox Process the oldest inbox item with GTD decision guidance.
convert-to-project Transform a task into a multi-step project.

Organize

Tool Purpose
schedule-task Create an organized task with context, dates, project, and tags.
delegate-task Mark as Waiting For with a person and follow-up.
defer-task Move to Someday/Maybe or schedule for a future date.
plan-project Create a project with initial tasks atomically.
modify-task Update an existing task or project.

Reflect

Tool Purpose
daily-review Today's tasks, overdue items, and inbox status.
weekly-review Stalled projects, waiting-for items, someday review.

Engage

Tool Purpose
get-tasks Context-first task retrieval (replaces every per-list view tool).
focus-mode Single most important task for the current context.
complete-task Mark done by ID or fuzzy title match.

Utility

Tool Purpose
search-tasks Full-text and filtered search.

Migration note (v1.x → v2.0): 18 legacy CRUD-style tools (get-inbox, add-todo, update-project, etc.) were removed in favor of the GTD-native tools above. See CHANGELOG.md for the full mapping.

GTD context tags

For best results, use consistent GTD tags in Things 3:

Contexts:  @computer, @phone, @office, @home, @errands, @anywhere
Energy:    high-energy, low-energy
Time:      5min, 15min, 30min, 1hr+
Status:    waiting-for
People:    @person-name (for agenda items)

Optional: 24/7 remote access

If you want the server reachable from Claude Mobile, ChatGPT, or any agent off your Mac, run it as a macOS LaunchAgent fronted by an HTTPS tunnel. End-to-end walkthrough: docs/agent-access.md. Recovery procedures for the most common operational issue (a hung Apple Event subsystem): docs/runbook-recovery.md.

Development

For setup, architecture, testing, and contributing guidelines, see docs/DEVELOPERS.md.

# CI-safe tests (no Things 3 required)
uv run python -m pytest tests

# Lint and format
uv run ruff check .
uv run ruff format .

This project uses OpenSpec for spec-driven development of significant changes.

Future direction

This is an evolving experiment in GTD-native AI tooling. Potential directions:

  • MCP Resources for ambient GTD state (inbox count, stalled projects)
  • Smarter context detection based on time, location, and calendar
  • Proactive GTD coaching during weekly reviews
  • Multi-app GTD — extending the pattern beyond Things 3

Contributions and ideas welcome.

Credits

License

MIT — see LICENSE.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

things3_mcp_gtd-2.0.0.tar.gz (50.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

things3_mcp_gtd-2.0.0-py3-none-any.whl (60.0 kB view details)

Uploaded Python 3

File details

Details for the file things3_mcp_gtd-2.0.0.tar.gz.

File metadata

  • Download URL: things3_mcp_gtd-2.0.0.tar.gz
  • Upload date:
  • Size: 50.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for things3_mcp_gtd-2.0.0.tar.gz
Algorithm Hash digest
SHA256 74fe886c1c6b02cbf46ec4b7489de61142d4e9e8784ea97a18b544e92d9736a2
MD5 2265519c65f5eb36ae531dd95e1f959b
BLAKE2b-256 06261dfb0a6cb5af53c2a2a0279d50dfe28d006b0ec84def56e0cffe2828c06e

See more details on using hashes here.

File details

Details for the file things3_mcp_gtd-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: things3_mcp_gtd-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 60.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for things3_mcp_gtd-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 393d48de6446ebd39d380ac935ba1c3627796c3895d471ae9a760c823e682a28
MD5 cdd4a622fe29a6ef9c64f1279ddf49e0
BLAKE2b-256 7b8d491dca936e4542c2e9c86c997679eb20b201e9148fad6cd2a4c7ba9e10d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page