Skip to main content

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

Make sure Things 3 is open, then:

# If installed via pip or uvx
things3-mcp-gtd

# If running from source
uv run server

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

Connecting an MCP client

Claude Desktop (stdio)

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

If installed via pip:

{
  "mcpServers": {
    "things3-gtd": {
      "command": "things3-mcp-gtd"
    }
  }
}

If running from source:

{
  "mcpServers": {
    "things3-gtd": {
      "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

19 GTD-native tools organized by 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.
get-projects List all projects.
get-areas List all areas of responsibility.
get-tags List all tags.
show-in-app Open a task or project in Things 3.
get-cache-stats Cache performance statistics (debugging).

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

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-1.0.1.tar.gz (50.3 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-1.0.1-py3-none-any.whl (59.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: things3_mcp_gtd-1.0.1.tar.gz
  • Upload date:
  • Size: 50.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for things3_mcp_gtd-1.0.1.tar.gz
Algorithm Hash digest
SHA256 30664f0725136abaf70836af5d6a90f473b90fa9e4f055275e97c8a90d0be0c4
MD5 bb889bb63ebe95c9026be026beb7c07d
BLAKE2b-256 b254ba87278b99d66b283917ed86736b2b1d21744ab297bc9c07aa77d4adf113

See more details on using hashes here.

Provenance

The following attestation bundles were made for things3_mcp_gtd-1.0.1.tar.gz:

Publisher: publish.yml on Chevalicious/things3-mcp-gtd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: things3_mcp_gtd-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 59.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for things3_mcp_gtd-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a532b6e32607e075d89eb0391a06941a9f451a9c325eddacbaa7dbc7ee004eb0
MD5 efd148467de045d8b6ae34a61227fcf8
BLAKE2b-256 304f46aa9c4091f47f421bda4fe50685e4a3ef774a016e5d7846c8043df5384b

See more details on using hashes here.

Provenance

The following attestation bundles were made for things3_mcp_gtd-1.0.1-py3-none-any.whl:

Publisher: publish.yml on Chevalicious/things3-mcp-gtd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.0.0

2 files

This release

1.0.1 This release

2 files

1.0.0

2 files

Supported by

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