SupaThings MCP
SupaThings MCP is a macOS server that enables AI agents to read and manage Things 3 data by combining SQLite-based queries with official URL-scheme commands. It provides over 30 tools for project structural analysis and task placement, allowing agents to understand and interact with tasks while maintaining safe interoperability.
README
SupaThings MCP
SupaThings MCP is a Things 3 MCP server for macOS.
It was built to solve a practical gap: AI agents can write to Things via things:///, but they cannot reliably understand your real project structure from URL commands alone.
SupaThings combines SQLite-based reads with official URL-scheme writes, so agents can both understand and act safely.
Table of Contents
- Quick Start
- What This MCP Server Does (and Why It Exists)
- Current Scope (v0.4.0)
- How It Works
- Things-Native Philosophy
- Recommended Workflows
- Available Tools
- Token and Context Efficiency
- Requirements
- Build and Smoke Tests
- Packaging and Release
- Project Structure
- Attribution
- Support
- License
Quick Start
1) Run with npx (no install)
npx -y supathings-mcp
2) Global install from npm
npm install -g supathings-mcp
Alias also available:
things-mcp
3) Build from source
npm install
npm run build
node dist/index.js
4) MCP config example
{
"mcpServers": {
"supathings": {
"command": "npx",
"args": ["-y", "supathings-mcp"]
}
}
}
5) Configure MCP in your client (copy/paste)
Codex:
codex mcp add supathings -- npx -y supathings-mcp
Claude Code:
claude mcp add --transport stdio supathings -- npx -y supathings-mcp
Gemini CLI:
gemini mcp add -s user supathings npx -y supathings-mcp
What This MCP Server Does (and Why It Exists)
MCP servers expose tools over a standard protocol so AI clients can call them programmatically.
In Things, there are two realities:
- The
things:///URL scheme is excellent for creating/updating/navigating items. - URL commands alone do not expose full structural context (project hierarchy, headings, checklist relationships, planning summaries).
SupaThings was built to bridge that split.
Technical approach:
- Read path: query local Things SQLite data for structure and context.
- Write path: execute official
things:///URL actions for safe interoperability. - Planning path: add semantic tools for heading inference, validation, project summaries, and task placement.
Why this is useful in practice:
- Better decisions: agents can place tasks under the right heading.
- Lower token usage: compact structural answers instead of large raw dumps.
- Safer automation: writes stay on official Things-supported surfaces.
- More predictable workflows: clear split between data understanding and data mutation.
Current Scope (v0.4.0)
Current release: 0.4.0
Shipped scope today:
- Tool surface:
37MCP tools - Read model: local Things SQLite database (areas, projects, headings, todos, tags, checklist items)
- Write model: official
things:///URL scheme - Semantic layer: heading inference, heading validation, project structure summaries, task placement suggestions
- Optional AppleScript actions: runtime-gated
Current boundaries:
- macOS + local Things installation required
- recurring template rows are intentionally excluded from read queries
- headings are easiest to guarantee at project creation time
- adding missing headings to existing projects remains constrained by Things capabilities
How It Works
Three-layer model:
- SQLite layer for rich reads of local Things data
things:///layer for writes, updates, moves, and navigation- AppleScript layer for optional lightweight app actions (
show-quick-entry,log-completed,empty-trash)
This split is deliberate: read from local truth, write through supported Things APIs.
Things-Native Philosophy
SupaThings is opinionated here: Things should be treated like Things.
Headings are modeled as semantic groupings (categories, work blocks, deliverables), not as a Jira-style workflow board by default.
That changes:
- how headings are inferred
- how project summaries are generated
- how task placement is suggested
Recommended Workflows
New project with headings
Use when the project does not exist yet:
suggest-headingscreate-project-with-headings- optionally verify with
get-projectsorget-project-structure
Existing project missing headings
Use when the project already exists but needs structure:
get-headingsorsuggest-headings- create missing headings manually in Things
validate-headings- create or move tasks into those headings
Why: creating headings is most reliable during brand-new project creation.
Existing project with structure already in place
get-project-structuresummarize-projectsuggest-task-placement- create or move tasks into the chosen headings
Available Tools
Current exposed tools: 37
| Category | Tools |
|---|---|
| Read and inspection | app-status, version, get-areas, get-tags, get-projects, get-headings, get-project-structure, get-todos, get-inbox, get-today, get-upcoming, get-anytime, get-someday, get-logbook, get-trash, get-tagged-items, get-recent, search-todos, search-items, search-advanced |
| Semantic planning | suggest-headings, validate-headings, suggest-task-placement, summarize-project |
| Write and navigation | add-todo, add-project, create-project-with-headings, update, update-project, update-todo, show, show-item, search, json |
| Optional AppleScript | show-quick-entry, log-completed, empty-trash |
If Apple Events are unavailable, these fail gracefully.
Token and Context Efficiency
SupaThings is designed to reduce context burn in AI workflows.
Current efficiency features:
- concise text responses
- structured payloads without duplicating full JSON in text output
detail: "compact" | "full"on major read/search toolslimiton major list/search toolsget-project-structurefor lightweight structural inspectionsummarize-projectfor planning-focused summariessuggest-task-placementfor semantic placement suggestions
Requirements
- macOS
- Things 3 installed locally
- Node.js 22+
- npm 10+
- Apple Events permission only if you want optional AppleScript actions
Build and Smoke Tests
npm run build
npm run smoke
npm run smoke:mcp
Smoke coverage includes:
- server startup over stdio
- tool listing
- Things app availability
- SQLite access
- project and heading inspection
- semantic tools (
suggest-headings,get-project-structure,suggest-task-placement,summarize-project)
Packaging and Release
Create local tarball
npm pack
Full release guide
See:
docs/PUBLISHING_GUIDE.md
Quick release summary:
- Validate build and smoke tests.
- Commit and push to your GitHub repo.
- Create and push an annotated tag (for example
v0.4.0). - Create a GitHub release from that tag.
- Publish to npm (
npm publish --access public). - Verify
npx -y supathings-mcpand client setup commands.
Project Structure
- src/index.ts: MCP server entrypoint
- src/views.ts: compact/full serializers
- src/headings.ts: heading semantics and inference
- src/project-structure.ts: project structural analysis
- src/task-placement.ts: heading placement suggestions
- src/project-summary.ts: planning-oriented summaries
- scripts/smoke-test.mjs: structural environment smoke test
- scripts/mcp-smoke.mjs: MCP protocol smoke test
- scripts/install-clients.sh: multi-client MCP installer
- scripts/uninstall-clients.sh: multi-client MCP uninstall helper
- docs/PUBLISHING_GUIDE.md: GitHub + npm publication guide
Attribution
This project builds on prior work and ideas from:
Licensing and attribution details are included in LICENSE and NOTICE.
Support
- 🐛 Bug Reports: Open an issue on GitHub (Issues)
- 💡 Feature Requests: Open an issue with enhancement label (New issue)
- 📚 Documentation: Check the Things URL scheme docs (Things URL Scheme)
- 💬 Questions: Open a discussion on GitHub (Discussions)
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.