Things 3
Manage your tasks and projects in Things 3 on macOS.
Things 3 MCP Server (Ruby)
A comprehensive Model Context Protocol (MCP) server for Things 3 task management on macOS. This server provides natural language task management, advanced filtering, bulk operations, analytics, and maintenance tools through AppleScript integration.
macOS Only: This MCP server requires macOS and Things 3 (which is macOS-exclusive).
šļø Architecture
The codebase is organized into focused classes with clear separation of concerns:
Things3MCPServer
- Main MCP server implementationAppleScriptExecutor
- Handles AppleScript execution with error handlingAppleScriptGenerator
- Generates AppleScript code for Things 3 operationsThings3Client
- Core Things 3 task operations (CRUD)DateParser
- Natural language date parsing using Chronic gemTaskFilter
- Advanced task filtering and search capabilitiesBulkOperations
- Bulk task operations (create, update, move, complete, import)ReportGenerator
- Weekly reviews, project reports, and analytics
š Features
Core Task Management
- CRUD Operations: Create, read, update, delete tasks
- Natural Language Dates: "tomorrow", "next Friday", "in 3 days", etc.
- Smart Organization: Project/area assignment with automatic creation
- Advanced Search: Multi-criteria filtering with regex support
Advanced Filtering
- Complex Filters: Status, projects, areas, tags, dates, notes
- Quick Filters: Pre-built filters for common scenarios
- Saved Filters: Store and reuse complex filter combinations
- Text Search: Name and notes content search with regex
Bulk Operations
- Mass Creation: Create multiple tasks from lists or templates
- Bulk Updates: Update tasks matching specific criteria
- Tag Operations: Add, remove, standardize tags across tasks
- Import/Export: CSV, JSON, and plain text import support
Analytics & Reports
- Weekly Reviews: Comprehensive review generation
- Project Health: Analyze project progress and bottlenecks
- Productivity Insights: Completion patterns and trends
- Planning Tools: Next week planning with energy-based scheduling
Data Maintenance
- Duplicate Detection: Find and merge similar tasks
- Orphaned Task Cleanup: Organize tasks without projects/areas
- Tag Standardization: Clean up inconsistent tag naming
- System Health: Organization scoring and health metrics
š Requirements
- macOS: Required (Things 3 is macOS-only)
- Things 3: Must be installed and running
- Ruby: Version 3.0.0 or higher
- Dependencies: Managed via Bundler
Note: This MCP server only works on macOS since Things 3 is an exclusive macOS application.
š macOS Permissions Setup
This MCP server uses AppleScript to communicate with Things 3, which requires specific macOS permissions:
1. Accessibility Permissions
When you first run the MCP server, macOS will prompt for accessibility permissions:
- System Preferences ā Security & Privacy ā Privacy ā Accessibility
- Click the lock to make changes (enter your password)
- Add your MCP client (e.g., Claude Desktop, Cursor, Terminal)
- Enable the checkbox for the application
2. AppleScript Permissions
The server may also need AppleScript permissions:
- System Preferences ā Security & Privacy ā Privacy ā Automation
- Find your MCP client in the list
- Enable "Things3" under your client application
3. Terminal/Ruby Permissions (if running directly)
If running the server directly from Terminal:
- System Preferences ā Security & Privacy ā Privacy ā Accessibility
- Add Terminal (or your terminal app)
- Enable the checkbox
š” Tip: If you get "permission denied" errors, restart your MCP client after granting permissions.
š Installation
-
Clone the repository:
git clone https://github.com/mattsafaii/things3-mcp.git cd things3-mcp
-
Install dependencies:
bundle install
-
Run the MCP server:
./things3-mcp-server
-
Configure in your MCP client - See MCP Client Configuration below
š MCP Client Configuration
Claude Desktop
-
Find your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- macOS:
-
Add the server configuration:
{ "mcpServers": { "things3": { "command": "/absolute/path/to/things3-mcp/things3-mcp-server", "args": [] } } }
-
Restart Claude Desktop - The server will appear in your available tools
Cursor IDE
-
Open Cursor Settings (
Cmd + ,
) -
Navigate to Extensions ā MCP
-
Add server configuration:
{ "name": "Things3", "command": "/absolute/path/to/things3-mcp/things3-mcp-server", "args": [] }
VS Code (with MCP Extension)
-
Install an MCP extension from the VS Code marketplace
-
Open VS Code Settings (
Cmd + ,
) -
Search for "MCP" and add server:
{ "mcp.servers": [ { "name": "things3", "command": "/absolute/path/to/things3-mcp/things3-mcp-server", "args": [] } ] }
Zed Editor
-
Open Zed settings (
Cmd + ,
) -
Add to your
settings.json
:{ "language_models": { "mcp_servers": { "things3": { "command": "/absolute/path/to/things3-mcp/things3-mcp-server", "args": [] } } } }
Continue (VS Code Extension)
-
Open Continue configuration (
.continue/config.json
in your workspace) -
Add MCP server:
{ "mcpServers": { "things3": { "command": "/absolute/path/to/things3-mcp/things3-mcp-server", "args": [] } } }
Generic MCP Client
For any MCP client that supports the standard, use:
{
"name": "things3",
"command": "/absolute/path/to/things3-mcp/things3-mcp-server",
"args": [],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin"
}
}
Configuration Tips
- Use absolute paths - Relative paths may not work across different clients
- Check permissions - Ensure the executable has proper permissions (
chmod +x
) - Test the server - Run
./things3-mcp-server
manually to verify it works - Check logs - Most MCP clients provide logs for debugging connection issues
Verifying Installation
Once configured, you should see these tools available in your MCP client:
add_task
,list_tasks
,complete_task
(core operations)weekly_review
,project_status_report
(analytics)bulk_create_tasks
,filter_tasks
(advanced features)- And 30+ other specialized tools
Test with a simple command:
"Add a task called 'Test MCP integration' to my Things 3"
If successful, you'll see the task appear in Things 3 and get a confirmation message.
First Run: On first use, macOS will prompt for permissions (see macOS Permissions Setup). Grant the permissions and restart your MCP client.
šÆ Available Tools
33 comprehensive tools organized into functional categories:
Core Task Operations
add_task
- Create new tasks with full metadatalist_tasks
- List tasks with filtering optionslist_projects
- List all projects and areasupdate_task
- Modify existing task propertiescomplete_task
- Mark tasks as completeddelete_task
- Remove tasks from Things 3move_task
- Move tasks between projects/areassearch_tasks
- Search task names and content
Advanced Features
add_task_with_planning_notes
- Create tasks with planning metadatalist_tasks_by_date_range
- Filter tasks by date rangessnooze_task
- Postpone tasks to future datesparse_date
- Test natural language date parsing
Filtering & Search
filter_tasks
- Advanced multi-criteria filteringquick_filters
- Pre-built useful filters (orphaned, overdue, etc.)saved_filters
- Manage reusable filter configurations
Analytics & Reports
weekly_review
- Generate comprehensive weekly reviewsproject_status_report
- Analyze active projectsproductivity_insights
- Track productivity patternsnext_week_planning
- Plan upcoming week with energy levelsreview_templates
- Manage consistent review formats
Bulk Operations
bulk_create_tasks
- Create multiple tasks at oncebulk_update_tasks
- Update multiple matching tasksbulk_move_tasks
- Move tasks between projectsbulk_tag_operations
- Mass tag managementbulk_complete_tasks
- Complete multiple tasksbulk_import_tasks
- Import from external formats
Data Cleanup & Maintenance
cleanup_orphaned_tasks
- Organize unassigned tasksfind_duplicate_tasks
- Detect and merge duplicatesstandardize_tags
- Clean up tag naming consistencycleanup_stale_tasks
- Handle old/abandoned tasksanalyze_project_health
- Project health metricsfix_broken_references
- Repair data integrity issuesorganization_score
- Overall system health assessment
Templates & Automation
task_templates
- Manage reusable task sets
š§ Configuration
Saved Filters Storage
Filters are automatically saved to: ~/.things3_mcp_filters.json
Debug Mode
Enable detailed logging by setting debug flags in the class constructors or through environment variables.
š Usage Examples
Basic Task Management
# Add simple task
add_task({"name": "Buy groceries"})
# Add task with project and due date
add_task({
"name": "Finish quarterly report",
"project": "Work",
"due_date": "next Friday",
"tags": ["urgent", "quarterly"]
})
Natural Language Dates
# Various supported formats
add_task({"name": "Team meeting", "due_date": "tomorrow at 2pm"})
add_task({"name": "Vacation planning", "due_date": "end of month"})
add_task({"name": "Project review", "start_date": "next Monday", "due_date": "in 2 weeks"})
Advanced Filtering
# Complex filter
filter_tasks({
"status": ["open"],
"project_names": ["Work", "Personal"],
"tag_filter": {"has_tags": ["urgent"]},
"date_filter": {"overdue": true}
})
# Quick filters
quick_filters({"filter_type": "orphaned_tasks"})
Weekly Review Workflow
# Generate comprehensive review
weekly_review({
"review_type": "last_week",
"include_sections": ["completed", "overdue", "upcoming", "projects", "insights"]
})
# Project health check
project_status_report({"include_metrics": true})
# Plan next week
next_week_planning({"include_energy_levels": true})
Bulk Operations
# Create multiple tasks
bulk_create_tasks({
"tasks": [
{"name": "Research competitors", "project": "Website"},
{"name": "Design mockups", "project": "Website", "due_date": "Friday"},
{"name": "Write content", "project": "Website"}
]
})
# Standardize tags
standardize_tags({
"apply": true,
"rules": {"lowercase": true, "merge_similar": true}
})
š”ļø Error Handling
- Things 3 Availability: Validates Things 3 is running before operations
- AppleScript Errors: Comprehensive error catching with descriptive messages
- Date Parsing: Graceful handling of ambiguous dates with confidence indicators
- Input Validation: Parameter validation with helpful error messages
- Timeout Protection: 30-second timeout on AppleScript operations
š File Structure
things3-mcp/
āāā things3-mcp-server # Executable script (root level)
āāā lib/
ā āāā things3_mcp.rb # Main entry point
ā āāā things3_mcp/
ā āāā server.rb # MCP server implementation
ā āāā client.rb # Core Things 3 operations
ā āāā date_parser.rb # Natural language date parsing
ā āāā task_filter.rb # Advanced task filtering
ā āāā bulk_operations.rb # Bulk task operations
ā āāā report_generator.rb # Analytics and reports
ā āāā applescript/
ā āāā executor.rb # AppleScript execution engine
ā āāā generator.rb # AppleScript code generation
āāā Gemfile # Ruby dependencies
āāā Gemfile.lock # Locked dependency versions
āāā README.md # This documentation
š Troubleshooting
Common Issues
Things 3 Not Running
Error: Things 3 is not available
Solution: Launch Things 3 application
AppleScript Permission Denied
Error: AppleScript execution failed - permission denied
Solutions:
- Grant Accessibility permissions: System Preferences ā Security & Privacy ā Privacy ā Accessibility
- Grant Automation permissions: System Preferences ā Security & Privacy ā Privacy ā Automation
- Add your MCP client (Claude Desktop, Cursor, etc.) to both permission lists
- Restart your MCP client after granting permissions
- If running directly, add Terminal to Accessibility permissions
Date Parsing Issues
Error: Could not parse date: 'next Flursday'
Solution: Use supported formats like "next Friday", "in 3 days", or "YYYY-MM-DD"
AppleScript Timeout
Error: AppleScript execution timeout
Solution: Reduce bulk operation size or check Things 3 performance
MCP Server Not Connecting
Error: MCP server failed to start
Solutions:
- Verify the absolute path to
things3-mcp-server
is correct - Check that the executable has proper permissions (
chmod +x things3-mcp-server
) - Test the server manually:
./things3-mcp-server
- Check MCP client logs for detailed error messages
- Ensure Ruby and dependencies are properly installed
MCP Tools Not Appearing
No Things3 tools available in client
Solutions:
- Restart your MCP client after configuration changes
- Verify the JSON configuration syntax is valid
- Check that the server name doesn't conflict with other MCP servers
- Look for connection errors in client logs
Debug Mode
Enable detailed logging by setting debug: true in class constructors for troubleshooting.
š¤ MCP Integration
This server implements the Model Context Protocol and can be used with any MCP-compatible client:
- Claude Desktop - Most popular MCP client
- Cursor IDE - AI-powered code editor with MCP support
- VS Code - With MCP extensions
- Zed Editor - Modern editor with built-in MCP support
- Continue - VS Code extension for AI coding assistance
- Custom Applications - Any tool implementing the MCP standard
See the MCP Client Configuration section above for detailed setup instructions for each client.
The server provides a natural language interface to comprehensive Things 3 task management through the standardized MCP protocol, making your task management available to any AI assistant or automation tool that supports MCP.
š Dependencies
mcp
(~> 0.1.0) - Model Context Protocol implementationchronic
(~> 0.10.2) - Natural language date parsingdebug
,rubocop
(development)
š System Health
The server includes built-in health monitoring through:
- Organization scoring (0-100 across multiple dimensions)
- Project health analysis
- Duplicate detection
- Data integrity checks
- Productivity trend analysis
Regular maintenance can be automated through the provided cleanup and analysis tools.
Related Servers
MCP Inception
Delegate tasks to another MCP client, acting as an agent for your agent.
omniparser-autogui-mcp
An MCP server that analyzes the screen with OmniParser to automate GUI operations.
Shortcut
Manage your Shortcut projects, stories, and epics.
Jira Thing
An example MCP server for interacting with Jira, deployable on Cloudflare Workers.
Twenty CRM
Interact with the Twenty CRM API through chat-based tools.
MCP Screenshot
Captures screenshots and performs OCR text recognition.
Minimax MCP Tools
Integrates with the Minimax API for AI-powered image generation and text-to-speech.
Shortcuts
Access and run Apple Shortcuts. Allows AI assistants to list, view, and execute your shortcuts.
Todoist
Full implementation of Todoist Rest API for MCP server
Google Calendar
Integrates with Google Calendar to read, create, update, and search for calendar events.