
Things
STDIOMCP server for interacting with Things app for task management and productivity
MCP server for interacting with Things app for task management and productivity
This Model Context Protocol (MCP) server lets you use Claude Desktop to interact with your task management data in Things 3 from Cultured Code. You can ask Claude to create tasks, analyze projects, help manage priorities, and more.
This server leverages the Things.py library and the Things URL Scheme.
If you find this project helpful, consider supporting its development:
Desktop Extensions (.dxt) provide the easiest way to install MCP servers.
things-mcp-0.4.0.dxt
file from the releases page.dxt
file to install it in Claude DesktopThat's it! The DXT package includes all Python dependencies and handles the configuration automatically.
To setup Things MCP with Cladue Code, or other MCP clients, scroll down to the Manual Installation section.
After installation:
get-inbox
- Get todos from Inboxget-today
- Get todos due todayget-upcoming
- Get upcoming todosget-anytime
- Get todos from Anytime listget-someday
- Get todos from Someday listget-logbook
- Get completed todosget-trash
- Get trashed todosget-todos
- Get todos, optionally filtered by projectget-projects
- Get all projectsget-areas
- Get all areasget-tags
- Get all tagsget-tagged-items
- Get items with a specific tagsearch-todos
- Simple search by title/notessearch-advanced
- Advanced search with multiple filtersget-recent
- Get recently created itemsadd-todo
- Create a new todoadd-project
- Create a new projectupdate-todo
- Update an existing todoupdate-project
- Update an existing projectshow-item
- Show a specific item or list in Thingssearch-items
- Search for items in Thingsproject_uuid
(optional) - Filter todos by projectinclude_items
(optional, default: true) - Include checklist itemsinclude_items
(optional, default: false) - Include contained itemsstatus
- Filter by status (incomplete/completed/canceled)start_date
- Filter by start date (YYYY-MM-DD)deadline
- Filter by deadline (YYYY-MM-DD)tag
- Filter by tagarea
- Filter by area UUIDtype
- Filter by item type (to-do/project/heading)period
- Time period (e.g., '3d', '1w', '2m', '1y')For advanced users who prefer to install from source:
First, make sure you have Homebrew installed:
# Check if Homebrew is installed brew --version # If not installed, install Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Then install uv (if not installed already):
brew install uv
Choose a location where you want to install Things MCP. For example, to install in your home directory:
cd ~ git clone https://github.com/hald/things-mcp cd things-mcp
Important: Remember this location! You'll need the full path. You can get it by running:
pwd
This will show something like: /Users/yourusername/things-mcp
uv sync
mcpServers
section:{ "mcpServers": { "things": { "command": "uv", "args": [ "--directory", "/Users/yourusername/things-mcp", "run", "things_server.py" ] } } }
Replace /Users/yourusername/things-mcp
with your actual path from Step 2!
Note: If you installed uv outside of Homebrew, you may need to use the full path to uv in your MCP configuration. Common locations include:
~/.local/bin/uv
or ~/.cargo/bin/uv
To find your uv location, run:
which uv
In your terminal, run:
claude mcp add-json things '{"command":"uv","args":["--directory","/path/to/things-mcp","run","things_server.py"]}'
Replace /path/to/things-mcp
with your actual path from Step 2!
To make it available globally (across all projects), add -s user
:
claude mcp add-json -s user things '{"command":"uv","args":["--directory","/path/to/things-mcp","run","things_server.py"]}'
After restarting your MCP client:
If it's not working:
Make sure Things 3 is installed and has been opened at least once
Check that "Enable Things URLs" is turned on
Verify the path in your configuration matches where you cloned the repository
/
)pwd
in the things-mcp directory to get the correct pathCheck Claude's logs for errors:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
Common issues:
brew install uv
)uv sync
in the things-mcp directorybrew install uv
To update to the latest version:
cd ~/things-mcp # or wherever you installed it git pull uv sync
Then restart Claude.
The project includes a comprehensive unit test suite for the URL scheme and formatter modules.
# Install test dependencies uv sync --extra test # Run all tests uv run pytest # Run tests with verbose output uv run pytest -v # Run a specific test file uv run pytest tests/test_url_scheme.py # Run tests matching a pattern uv run pytest -k "test_add_todo"
things-mcp/
├── things_server.py # Main MCP server implementation
├── url_scheme.py # Things URL scheme implementation
├── formatters.py # Data formatting utilities
├── tests/ # Unit tests
│ ├── conftest.py # Test fixtures and configuration
│ ├── test_url_scheme.py
│ └── test_formatters.py
├── manifest.json # DXT package manifest
├── build_dxt.sh # DXT package build script
├── pyproject.toml # Project dependencies and pytest config
└── run.sh # Convenience runner script
To review the MCP logs from Claude Desktop, run this in the Terminal:
# Follow logs in real-time tail -n 20 -f ~/Library/Logs/Claude/mcp*.log