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

Metadata

Release files for things3-mcp-gtd 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for things3-mcp-gtd 1.0.1
File Size Uploaded
things3_mcp_gtd-1.0.1.tar.gz 50.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for things3-mcp-gtd 1.0.1
File Interpreter ABI Platform
things3_mcp_gtd-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 110.2 kB

Release files / things3_mcp_gtd-1.0.1.tar.gz

Download URL things3_mcp_gtd-1.0.1.tar.gz
Size 50.3 kB
Tags Source
SHA-256 checksum
How to use checksums
30664f0725136abaf70836af5d6a90f473b90fa9e4f055275e97c8a90d0be0c4
BLAKE2b-256 checksum
How to use checksums
b254ba87278b99d66b283917ed86736b2b1d21744ab297bc9c07aa77d4adf113
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 10, 2026.

Transparency log

Release files / things3_mcp_gtd-1.0.1-py3-none-any.whl

Download URL things3_mcp_gtd-1.0.1-py3-none-any.whl
Size 59.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a532b6e32607e075d89eb0391a06941a9f451a9c325eddacbaa7dbc7ee004eb0
BLAKE2b-256 checksum
How to use checksums
304f46aa9c4091f47f421bda4fe50685e4a3ef774a016e5d7846c8043df5384b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page