Integrating Things App with Claude Desktop via MCP
I use Things app for task management, and I wanted to integrate it with Claude Desktop using the Model Context Protocol (MCP). This lets Claude read my to-dos, create new tasks, update existing ones, and organize my workflow. Here’s how I set it up.
What things-mcp Can Do
things-mcp is an MCP server that provides Claude with tools to interact with Things app data. Once configured, Claude can:
- List to-dos (optionally filtered by area/project)
- Create new tasks with title, notes, when, deadline
- Update existing tasks
- Mark tasks as complete
- List projects and areas
- Search for tasks by title or notes
Prerequisites
Before starting, I made sure I had:
- macOS (Things is Mac/iOS only)
- Things app installed and configured
- Claude Desktop installed
- uv or uvx installed (Python package manager)
Step 1: Install uv
I installed uv using Homebrew:
brew install uv
# Verify installationuv --versionStep 2: Configure Claude Desktop
I navigated to Claude Desktop’s config directory:
cd ~/Library/Application\ Support/Claude/
# Create config if it doesn't existtouch claude_desktop_config.jsonThen I edited claude_desktop_config.json with this configuration:
{ "mcpServers": { "things": { "command": "uvx", "args": [ "--python", "3.11", "things-mcp" ] } }}Step 3: The Critical Permission Step
This is where I ran into issues. macOS requires explicit permission for apps to access Things data.
I tried two approaches:
Option 1: Grant Reminders Access (More Secure)
- Opened System Settings > Privacy & Security > Reminders
- Enabled access for my terminal application
- Restarted Terminal and Claude Desktop
Option 2: Grant Full Disk Access (Broader)
- Opened System Settings > Privacy & Security > Full Disk Access
- Added Terminal.app (or iTerm if using that)
- Restarted Terminal and Claude Desktop
Step 4: The Key Fix - Use uv tool install
The uvx approach worked, but I kept getting permission prompts. The solution is to use uv tool install instead:
# Install permanentlyuv tool install things-mcp --python 3.11Then I updated my config to use the installed version:
{ "mcpServers": { "things": { "command": "things-mcp", "args": [] } }}This creates a permanent installation that retains macOS permissions across Claude Desktop restarts.
Step 5: Restart and Verify
I completely quit Claude Desktop (Cmd+Q), then reopened it. To verify the setup, I asked Claude:
Can you show me my Things to-dos?Example Usage
Here are some prompts I use regularly:
View tasks:
Show me all my to-dos in ThingsWhat tasks do I have due today?Create tasks:
Create a new to-do in Things: "Review pull request" with deadline tomorrowAdd a task "Buy groceries" to my Things inboxUpdate tasks:
Mark "Review pull request" as complete in ThingsMove "Buy groceries" to my Errands projectSearch:
Find all tasks in Things containing "meeting"Show me overdue tasks in ThingsTroubleshooting
”No tasks found” or Empty Results
If I got empty results, I checked:
- Things app is running:
open -a Things - Permissions are granted in System Settings > Privacy & Security > Reminders
- Things Cloud sync is enabled in Things > Settings > Things Cloud
Claude Says “I don’t have access to Things”
I verified the config file syntax:
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python -m json.toolThen I checked if things-mcp works standalone:
things-mcp --versionPermission Denied Errors
The fix was granting Full Disk Access to Terminal:
System Settings > Privacy & Security > Full Disk Access > Add Terminal.app
Slow Performance
Using uv tool install instead of uvx gave me better performance since it avoids creating ephemeral processes each time.
How It Works
The architecture is straightforward:
Claude Desktop |MCP Protocol |things-mcp server (Python) |Things App Data (via Apple Reminders/Things URL scheme) |My TasksSecurity Considerations
When granting access, Claude can read all my tasks, create new ones, and modify existing ones. I’m careful about:
- Not creating tasks with sensitive information if I’m concerned
- Periodically reviewing my MCP server configurations
- Using the minimum required permissions (Reminders access vs Full Disk Access)
Summary
The setup process:
- Install uv (Python package manager)
- Configure things-mcp in claude_desktop_config.json
- Grant macOS permissions (Reminders or Full Disk Access)
- Use
uv tool installto avoid repeated permission prompts - Restart Claude Desktop to load the MCP server
The key insight: using uv tool install instead of uvx creates a permanent installation that retains macOS permissions across restarts. Once configured, I can naturally interact with my Things tasks through Claude, making task management part of my AI-assisted workflow.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
- 👨💻 things-mcp GitHub
- 👨💻 Things App
- 👨💻 MCP Documentation
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments