Skip to main content
Glama

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

npx github:hildersantos/things-mcp

This will automatically download, build, and start the MCP server.

Manual Installation

  1. Clone this repository:

    git clone https://github.com/hildersantos/things-mcp.git
    cd things-mcp
  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build
  4. Start the server:

    npm start

Configuration

Claude Desktop Setup

  1. Get your Things auth token (required for update operations):

    • Open Things → Settings → General

    • Enable Things URLs

    • Click Manage → Copy Token

  2. Configure Claude Desktop:

    Open your Claude Desktop configuration file:

    ~/Library/Application Support/Claude/claude_desktop_config.json

    Add the Things MCP server to the mcpServers section:

    {
      "mcpServers": {
        "things-mcp": {
          "command": "npx",
          "args": ["github:hildersantos/things-mcp"],
          "env": {
            "THINGS_AUTH_TOKEN": "your-token-here"
          }
        }
      }
    }

    Replace your-token-here with your actual Things auth token from step 1.

  3. 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 Things

Create a Simple Project

Create a "Website Redesign" project in Things in my Work area

Create 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 activities

Another Project Example

Set up a new employee onboarding project in Things with IT setup tasks, HR paperwork, 
training schedule, and first week activities

Update a To-Do

Mark task ABC-123 as completed in Things

Add Items to Existing Project

Add new tasks to my "Website Redesign" project in Things: create wireframes, design mockups, and user testing

List Tasks

Show me all tasks in my Things inbox

View Projects

List all my projects in Things

Navigate

Open my Today list in Things

Get Task Details

Get full details for task TBeaUrcGH1zKoMmS7wwHVD from Things
Search for "meeting" in Things

View Completed Tasks

Show me my completed tasks from the Things logbook

Available Tools

Creation Tools

  • things_add_todo - Create a to-do with all options

  • things_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 support

  • things_update_project - Update an existing project using JSON API for full feature support

  • things_add_items_to_project - Add structured todos and headings to an existing project

Reading Tools

  • things_get_inbox - List inbox items

  • things_get_today - List today's items

  • things_get_upcoming - List scheduled items

  • things_get_anytime - List anytime items

  • things_get_someday - List someday items

  • things_get_logbook - List completed items

  • things_get_trash - List trashed items

  • things_get_projects - List all active projects

  • things_get_areas - List all areas

  • things_get_tags - List all tags

  • things_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 name

  • things_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:watch

Troubleshooting

"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 10

License

MIT

Credits

Built with the Model Context Protocol SDK. Things is a trademark of Cultured Code GmbH & Co. KG.

Available Tools

20 tools
things_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

    B3.1/5.0

    Scored across 20 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count4/5

    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.

    Completeness5/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      B
      maintenance
      Enables interaction with the Things app through Claude Desktop, allowing task creation, project analysis, and priority management using natural language commands.
      22
      1,032 PyPI
      642
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Lets 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.
      35
      MIT