things3-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_todosB | List Things 3 to-dos within one scope. |
| get_todayA | List all to-dos currently in the Things 3 "Today" list. |
| get_completedA | List to-dos completed within the last Useful for syncing finished tasks back into other systems. |
| search_todosA | Search to-dos whose name contains By default only open to-dos are searched; set include_completed=True to also search the Logbook. |
| list_areasA | List all Things 3 areas (id + name). |
| list_projectsA | List Things 3 projects (id, name, status, area). If |
| get_inboxA | List all to-dos currently in the Things 3 "Inbox" (unfiled tasks). |
| get_todoA | Get a single to-do by its Things id. Returns null if it does not exist. |
| list_tagsA | List all tag names defined in Things 3. |
| create_todoB | Create a new Things 3 to-do. |
| complete_todoA | Mark open to-do(s) as completed. Target by |
| cancel_todoA | Mark open to-do(s) as canceled (reversible — prefer this over deleting). Target by |
| update_todoA | Update the first matching OPEN to-do (by |
| add_tagsA | Append tags to the first matching OPEN to-do WITHOUT removing existing ones. Unlike update_todo(tags=...) which replaces the whole tag set, this merges the given tags into the current ones (duplicates skipped). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
There are five ways to retrieve to-do lists (list_todos, get_today, get_inbox, get_completed, search_todos), and list_todos is vague about what 'one scope' means, creating unclear boundaries. The update/complete/cancel/add_tags tools also share the same todo_id-or-query targeting pattern, which could lead an agent to pick the wrong mutating operation without careful reading.
Names uniformly use lowercase verb_noun patterns: list_*, get_*, search_*, create_*, update_*, complete_*, cancel_*, add_tags. The main deviation is that get_* mixes single-item lookup (get_todo) with list-returning operations (get_today, get_completed, get_inbox), so the verb prefix does not strictly predict the return shape, but the overall style is predictable.
14 tools is reasonable for a Things 3 server and stays within the expected range, covering to-do read/write plus area/project/tag lookup. The count is slightly inflated by the many overlapping read/list routes for to-dos, but each still has a concrete intended use.
The to-do lifecycle is well covered: create, read/list/search, update, complete, cancel, and tag management are all present. The main gaps are a lack of direct deletion (mitigated by cancel_todo) and write support for projects/areas/tags, but these are reasonable for a to-do-focused server.