things-mcp-pro
Advanced Model Context Protocol interface for comprehensive management of tasks and projects within the Cultured Code Things application via natural language.
Author

excelsier
Quick Info
Actions
Tags
Things MCP Server: Advanced Task Management Integration
This implementation serves as a robust Model Context Protocol (MCP) endpoint, facilitating seamless, conversational interaction with your task data managed in the Things 3 application using Claude Desktop. It enables sophisticated operations such as intent-driven task generation, in-depth project portfolio assessment, strategic priority alignment, and complex list manipulation.
This server relies on the foundational Things.py library and adheres strictly to the Things URL Scheme specifications. To ensure enterprise-grade reliability, we have integrated several advanced resilience and performance enhancements:
- Fault Tolerance: Implements exponential backoff and sophisticated retry loops for transient network or API issues.
- System Stability: Utilizes the Circuit Breaker pattern to halt outbound calls upon sustained failure, preventing cascading system instability.
- Operation Archiving: A designated Dead Letter Queue (DLQ) archives operations that cannot be completed for later manual inspection or reprocessing.
- Data Optimization: Intelligent, context-aware caching layer significantly minimizes latency for read operations.
- Observability: Comprehensive, structured JSON logging for precise monitoring and debugging.
- Protocol Bridging: Incorporates an AppleScript bridge as a reliable fallback mechanism when URL scheme interactions prove insufficient.
- Traffic Control: Fine-grained rate limiting to safeguard the responsiveness of the local Things application.
- Quality Assurance: Maintained with an exhaustive, continuously updated test suite guaranteeing operational integrity.
The Value Proposition of Things MCP
This advanced server unlocks the full potential of generative AI for personal knowledge and productivity management:
- Intent-Driven Creation: Translate complex, unstructured natural language instructions directly into fully detailed, correctly structured tasks.
- Productivity Forensics: Generate insightful analytics and synthesized overviews of project progress and personal productivity trends.
- Methodology Enforcement: Integrate Claude as an assistant to help structure and enforce methodologies like Getting Things Done (GTD) directly within your Things structure.
- Zero-Friction Sync: Ensures instantaneous, bi-directional interaction with your established Things 3 data repository.
Core Capabilities
- Granular access to all primary Things views (e.g., Inbox, Today, Upcoming, custom smart lists).
- Full lifecycle management for Projects and Areas of Responsibility (AORs).
- Precise Tag assignment and retrieval operations.
- Support for complex, multi-parameter filtered searches.
- Retrieval of recently acted-upon items.
- Detailed item introspection, including the ability to manage nested checklist components.
- Full hierarchical support (Areas containing Projects, Projects containing Headings).
Deployment Strategies
Installation can be achieved via two primary methodologies:
Path A: Standard Deployment via PyPI (Recommended for Production)
Prerequisites
- Python runtime environment, version 3.12 or newer.
- Active session with Claude Desktop.
- Licensed installation of Things 3 (ensure URL scheme activation is enabled in Preferences).
- A valid Things Authentication Token (essential for write operations).
Installation Command
bash pip install things-mcp-pro
Alternatively, utilizing the high-performance uv installer:
bash uv pip install things-mcp-pro
Server Activation
Execute the installed server entry point:
bash things-mcp-pro
Path B: Source Checkout and Manual Configuration
Prerequisites
- Python 3.12+.
- Claude Desktop running.
- Things 3 configured with URL support.
Phase 1: Tool Acquisition
Use curl to obtain and install the uv package manager, then restart your shell session.
bash
curl -LsSf https://astral.sh/uv/install.sh | sh
Clone the source code repository: bash git clone https://github.com/hald/things-mcp cd things-mcp
Phase 2: Environment Setup
Initialize the virtual environment and install dependencies in editable mode: bash uv venv uv pip install -e ".[dev]"
Phase 3: Token Configuration
Execute the provisioning script to securely store the necessary authentication credential: bash python configure_token.py
Phase 4: Claude Desktop Integration
Modify the specific configuration file used by Claude Desktop: bash code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Inject the server definition into the mcpServers object, replacing /ABSOLUTE/PATH/TO/PARENT/FOLDER/things-mcp with your actual installation directory:
{ "mcpServers": { "things-pro": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/things-mcp", "run", "things_fast_server.py" ] } } }
Phase 5: Finalization
Restart the Claude Desktop application for the new server binding to take effect.
Example Conversational Prompts
- "Provide a summary of all tasks scheduled for completion this week across all active initiatives."
- "Draft a new task detailing the Q3 budget review for the 'Finance' area, assigning it high priority and setting the deadline for the 15th of next month."
- "Analyze the 'Major Product Launch' project structure and suggest optimization based on the critical path items."
- "Conduct a complete review based on the PARA methodology using my current inventory in Things."
Advanced Usage Tips
- Custom Instructions: Define a detailed persona in Claude's custom instructions detailing your preferred Things organizational schema (Areas, project naming conventions, mandatory tags).
- Multi-Server Orchestration: Combine this service with a calendar MCP server to enable sophisticated scheduling, such as automatically creating prep tasks for upcoming meetings.
Toolset Reference
List Retrieval Functions
get-inbox- Fetch contents of the primary Inbox.get-today- Retrieve items flagged for the current day.get-upcoming- Access scheduled and upcoming items.get-anytime- Get items without a specific date constraint.get-someday- Retrieve items relegated to long-term planning.get-logbook- Access archived/completed records.get-trash- View deleted items.
Structural Queries
get-todos- Retrieve to-dos, filterable by associated project UUID.get-projects- Fetch the entire project hierarchy.get-areas- Fetch all organizational Areas.
Tag Management
get-tags- List all defined tags.get-tagged-items- Retrieve items associated with a specified tag identifier.
Search & Temporal Operations
search-todos- Perform straightforward text-based searches on titles/notes.search-advanced- Execute complex, multi-criteria searches (status, date ranges, tags, location).get-recent- Fetch items created or modified within a specified temporal window (e.g., '7d', '1mo').
Mutator Functions
add-todo- Instantiates a new to-do item with comprehensive parameter support.add-project- Generates a new project structure.update-todo- Modifies attributes of an existing to-do.update-project- Modifies attributes of an existing project.delete-todo- Marks a to-do item for archival (moves to trash).delete-project- Marks a project for archival.show-item- Opens a specific item, list, or search result directly within the Things application.
Parameter Specification
get-todos
project_uuid(optional): UUID used to restrict retrieval to a single project.include_items(optional, default: true): Boolean flag to include checklist sub-tasks.
search-advanced
status: Filter criterion: (incomplete|completed|canceled).start_date: ISO date format (YYYY-MM-DD) for filtering by start date.deadline: ISO date format (YYYY-MM-DD) for filtering by due date.tag: Filter based on a specific tag name.area: Filter based on the Area UUID.type: Filter by item category (to-do|project|heading).
add-todo
title: Mandatory descriptive name for the task.when(optional): Scheduling instruction ('today', 'tomorrow', 'anytime', 'YYYY-MM-DD').list_titleorlist_id(optional): Target container (Project or Area name/ID).checklist_items(optional): Array of strings for sub-tasks.
Authentication and Security
Tags must pre-exist within the Things database to be successfully applied. The server includes logic to attempt auto-creation of missing tags; however, persistent failures in tag creation will result in the item being created without those specific tags.
Token Provisioning Guide
The Things URL Scheme necessitates an authorization token for all transactional commands (CRUD operations). If omitted, the Things application will prompt the user for interactive authorization on every attempt.
Token Retrieval Instructions
- Launch the Things application on your macOS device.
- Navigate to Things → Preferences (or Cmd+,).
- Select the General tab.
- Verify the Enable Things URLs checkbox is active.
- The required authentication token will be explicitly displayed within this preferences pane.
Deployment Methods for the Token
Method 1: Automated Script (Recommended) bash python configure_token.py
This script handles interactive prompting and secure local storage.
Method 2: Environment Variable Setting bash export THINGS_AUTH_TOKEN="your-retrieved-token-here"
Method 3: Direct Configuration File Creation bash mkdir -p ~/.things-mcp echo '{"things_auth_token": "your-retrieved-token-here"}' > ~/.things-mcp/config.json
Development & Architecture Notes
Dependency management is orchestrated via pyproject.toml. This project is engineered around the MCP framework, specifically leveraging the modern FastMCP implementation (things_fast_server.py) which utilizes decorator syntax for cleaner tool registration compared to the traditional things_server.py.
Development Setup
bash
Clone the repository (if starting from source)
git clone https://github.com/hald/things-mcp cd things-mcp
Setup editable environment
uv venv uv pip install -e ".[dev]"
Testing Server Instances
Use the mcp dev utility for rapid iteration:
bash
Test the modern FastMCP server
mcp dev things_fast_server.py
Resilience and Performance Deep Dive
Failure Mitigation Strategies
- Adaptive Retries: Implements exponential backoff scheduling when encountering temporary API gateway errors or timeouts.
- Isolation: Circuit breaker logic monitors failure rates to prevent resource exhaustion.
- DLQ Management: Failed operations are preserved in the DLQ for auditing, ensuring no command is silently lost.
- Scripted Override: AppleScript provides a robust, lower-level alternative when the primary URL scheme pathway fails unexpectedly.
Optimization Techniques
- Data Caching: Aggressive caching implemented for read-heavy operations, coupled with TTLs for freshness.
- Request Throttling: Strict rate limiting applied to prevent request bursts from impacting host application stability.
- Cache Invalidation: Mechanisms are in place to actively purge caches upon successful write operations.
Diagnostic Tools
- Structured Telemetry: Detailed, machine-readable JSON logs capture operation timing, status, and context.
- Log Repository:
- Primary Logs:
~/.things-mcp/logs/things_mcp.log - Structured Logs:
~/.things-mcp/logs/things_mcp_structured.json
Troubleshooting and Diagnostics
The system is instrumented to report failures related to invalid identifiers, missing required payload parameters, database access disruptions, and token authorization errors.
Common Resolution Steps
- Token Check: Verify token validity by executing
python configure_token.py. - Host Availability: Ensure the Things application is launched and responsive.
- Scheme Status: Confirm URL Scheme enablement in Things Preferences.
- System Health: Review the status of the Circuit Breaker and inspect the Dead Letter Queue contents.
Log Examination
For real-time operational monitoring:
bash
Monitor primary server activity
tail -f ~/.things-mcp/logs/things_mcp.log
Analyze structured data flow (requires jq)
cat ~/.things-mcp/logs/things_mcp_structured.json | jq
Deep Debugging
- DLQ Inspection: Examine
things_dlq.jsonfor persistent failures. - Circuit Status: Look for status updates regarding the circuit breaker state in logs.
- Cache Metrics: Use the
get-cache-statstool to diagnose hit/miss ratios.
== Contextual Background: Business Management Systems ==
Business management systems encompass the entirety of applications, methodologies, and control structures employed by organizations to maintain competitive viability amid market flux and to drive measurable performance improvements. These solutions span functional silos, covering areas from financial control and resource planning to customer engagement and operational process governance.
Modern business software has evolved rapidly, moving from rudimentary Management Information Systems (MIS) through monolithic Enterprise Resource Planning (ERP) suites, culminating in today's distributed, cloud-native platforms. The success of adopting these powerful tools hinges less on their inherent feature set and more critically on the organization's strategic alignment and the meticulous adaptation of the tool to inherent business workflows.
Selection criteria should prioritize strategic fit over feature novelty, ensuring that the chosen ecosystem supports, rather than dictates, organizational needs. Effective utilization demands a managerial commitment to integrating the technology thoughtfully into the established operational framework.
