Things MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Things MCP show me my tasks for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Things MCP
A Model Context Protocol (MCP) server for Things 3 integration. Enables Claude Desktop and Claude Code to interact with Things 3 on macOS.
Features
Create to-dos and projects with full metadata
Update existing to-dos and projects
List items from any Things list (Inbox, Today, Logbook, Trash, etc.)
Retrieve all projects, areas, and tags
Navigate to specific items or lists
Search within Things
Secure AppleScript execution
Comprehensive error handling
Related MCP server: Things MCP Server
Requirements
macOS with Things 3 installed
Node.js 18 or later
Things URL scheme enabled (automatic on first use)
Installation
Quick Start with npx (Recommended)
npx github:hildersantos/things-mcpThis will automatically download, build, and start the MCP server.
Manual Installation
Clone this repository:
git clone https://github.com/hildersantos/things-mcp.git cd things-mcpInstall dependencies:
npm installBuild the project:
npm run buildStart the server:
npm start
Configuration
Claude Desktop Setup
Get your Things auth token (required for update operations):
Open Things → Settings → General
Enable Things URLs
Click Manage → Copy Token
Configure Claude Desktop:
Open your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.jsonAdd the Things MCP server to the
mcpServerssection:{ "mcpServers": { "things-mcp": { "command": "npx", "args": ["github:hildersantos/things-mcp"], "env": { "THINGS_AUTH_TOKEN": "your-token-here" } } } }Replace
your-token-herewith your actual Things auth token from step 1.Restart Claude Desktop to apply the configuration changes.
Alternative: Local Installation
If you prefer to install locally instead of using npx:
{
"mcpServers": {
"things-mcp": {
"command": "node",
"args": ["/absolute/path/to/things-mcp/dist/index.js"],
"env": {
"THINGS_AUTH_TOKEN": "your-token-here"
}
}
}
}Usage Examples
Create a To-Do
Create a task "Buy milk" for today with tag "errands" in ThingsCreate a Simple Project
Create a "Website Redesign" project in Things in my Work areaCreate a Complex Project
Plan a vacation to Japan in Things with research about destinations, booking flights and hotels,
creating a packing list, and planning daily activitiesAnother Project Example
Set up a new employee onboarding project in Things with IT setup tasks, HR paperwork,
training schedule, and first week activitiesUpdate a To-Do
Mark task ABC-123 as completed in ThingsAdd Items to Existing Project
Add new tasks to my "Website Redesign" project in Things: create wireframes, design mockups, and user testingList Tasks
Show me all tasks in my Things inboxView Projects
List all my projects in ThingsNavigate
Open my Today list in ThingsGet Task Details
Get full details for task TBeaUrcGH1zKoMmS7wwHVD from ThingsSearch
Search for "meeting" in ThingsView Completed Tasks
Show me my completed tasks from the Things logbookAvailable Tools
Creation Tools
things_add_todo- Create a to-do with all optionsthings_add_project- Create a project with sections (headings), todos, and hierarchical organization
Update Tools (requires auth token)
things_update_todo- Update an existing to-do using JSON API for full feature supportthings_update_project- Update an existing project using JSON API for full feature supportthings_add_items_to_project- Add structured todos and headings to an existing project
Reading Tools
things_get_inbox- List inbox itemsthings_get_today- List today's itemsthings_get_upcoming- List scheduled itemsthings_get_anytime- List anytime itemsthings_get_someday- List someday itemsthings_get_logbook- List completed itemsthings_get_trash- List trashed itemsthings_get_projects- List all active projectsthings_get_areas- List all areasthings_get_tags- List all tagsthings_get_project- List items in a specific project (requires project_id)things_get_area- List items in a specific area (requires area_id)things_get_list- Get items from a specific list by namethings_get_todo_details- Get detailed information about a specific to-do
All list tools support an optional max_results parameter to limit output.
Navigation Tools
things_show- Navigate to item or list
Development
# Development mode with watch
npm run dev
# Run linter
npm run lint
# Format code
npm run format
# Run tests
npm test
# Run tests in watch mode
npm run test:watchTroubleshooting
"Things 3 does not appear to be running"
Make sure Things 3 is installed and has been opened at least once.
"Authentication failed"
Check that your THINGS_AUTH_TOKEN is correctly set in the MCP configuration.
AppleScript Permissions
On first run, macOS may ask for permission to control Things. Grant this permission for the MCP to work.
Performance Issues
Use the max_results parameter when listing large collections:
Use things_get_projects with max_results 10License
MIT
Credits
Built with the Model Context Protocol SDK. Things is a trademark of Cultured Code GmbH & Co. KG.
Available Tools
20 toolsthings_add_items_to_projectA
Add todos and headings to an existing project. Items are added as a flat array where headings act as visual separators for the todos that follow them.
Inputs: id (required), items (required), operation.
things_add_projectB
Creates a project in Things with support for sections (headings) and todos. Perfect for complex projects with multiple phases, days, or categories. Headings act as visual dividers - todos that follow a heading in the items array will appear grouped under it.
Inputs: title (required), notes, when, deadline, +6 more.
things_add_todoA
Add a new to-do to Things with full support for checklists to break down complex tasks into manageable steps. Use checklist when task has multiple components that don't warrant a separate project.
Inputs: title (required), notes, when, deadline, +7 more.
things_get_anytimeC
Get all to-dos in Anytime
Inputs: max_results.
things_get_areaC
Get all items in a specific area
Inputs: area_id (required), max_results.
things_get_areasD
Get all areas
Inputs: max_results.
things_get_inboxC
Get all to-dos in the Inbox
Inputs: max_results.
things_get_listC
Get all to-dos from a specific list by name
Inputs: list (required), max_results.
things_get_logbookC
Get all completed to-dos in the Logbook
Inputs: max_results.
things_get_projectC
Get all to-dos in a specific project
Inputs: project_id (required), max_results.
things_get_projectsB
Get all active projects
Inputs: max_results.
things_get_somedayC
Get all to-dos in Someday
Inputs: max_results.
things_get_tagsC
Get all tags
Inputs: max_results.
things_get_todayC
Get all to-dos scheduled for Today
Inputs: max_results.
things_get_todo_detailsA
Get detailed information about a specific to-do including deadline, notes, status, etc.
Inputs: id (required).
things_get_trashB
Get all deleted to-dos in the Trash
Inputs: max_results.
things_get_upcomingB
Get all scheduled to-dos (with dates)
Inputs: max_results.
things_showC
Navigate to a specific item or list in Things
Inputs: id, query, filter.
things_update_projectC
Update an existing project in Things using JSON API for full feature support
Inputs: title (required), id (required), notes, when, +8 more.
things_update_todoC
Update an existing to-do in Things using JSON API for full feature support
Inputs: title (required), id (required), notes, when, +9 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Most tools have distinct purposes, but there is some overlap between 'things_get_anytime', 'things_get_someday', 'things_get_today', and 'things_get_upcoming' which could confuse an agent about which to use for time-based queries. The 'things_show' tool is also ambiguous as it navigates rather than retrieves data, potentially overlapping with get tools. However, descriptions help clarify specific contexts like inbox, logbook, or project-specific queries.
All tools follow a consistent 'things_verb_noun' pattern with snake_case throughout, such as 'things_add_todo', 'things_get_project', and 'things_update_todo'. This predictability makes it easy for an agent to parse and understand the tool set without confusion from mixed conventions.
With 20 tools, the count is slightly high but reasonable for a task management domain like Things, covering CRUD operations, queries across different contexts (e.g., inbox, projects, areas), and navigation. It feels comprehensive without being overly bloated, though it could be streamlined by merging some get tools.
The tool set provides complete coverage for the Things domain, including create (add_project, add_todo), read (get_* tools for various contexts), update (update_project, update_todo), and delete (implied via trash). It supports full lifecycle management of todos and projects, with no obvious gaps that would hinder agent workflows.
Maintenance
Related MCP Connectors
Manage Redbooth tasks, task lists, comments, tags and files from Claude and other AI assistants.
Notes and actions in one app. Let Claude or ChatGPT read and update them.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Notes, tasks, habits, journal and 6 more tools Claude can read and change, with undo. Free.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables interaction with the Things app through Claude Desktop, allowing task creation, project analysis, and priority management using natural language commands.221,032 PyPI642MIT
- AlicenseNot gradedqualityDmaintenanceLets you use Claude Desktop to interact with your task management data in Things app, enabling you to create tasks, analyze projects, manage priorities, and implement productivity workflows through natural language.35MIT
- AlicenseBqualityDmaintenanceEnables Claude to interact with Things 3 task management, allowing creation, analysis, and management of tasks, projects, and tags via natural language.22MIT
- AlicenseBqualityDmaintenanceEnables Claude to interact with Things 3 task management, allowing natural language task creation, project analysis, and GTD workflow automation.2433 PyPI43MIT