Mcp Server Things — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Server Things (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that connects Claude and other AI assistants to Things 3 for natural language task management.
python3 -m venv venv
source venv/bin/activate # On macOS/Linuxpip install mcp-server-thingsgit clone https://github.com/ebowman/mcp-server-things.git
cd mcp-server-thingspython3 -m venv venv
source venv/bin/activate # On macOS/Linuxpip install -r requirements.txtpip install -e .Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"things": {
"command": "/path/to/your/venv/bin/python",
"args": ["-m", "things_mcp"],
"env": {
"THINGS_MCP_LOG_LEVEL": "INFO",
"THINGS_MCP_APPLESCRIPT_TIMEOUT": "30"
}
}
}
}Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"things": {
"command": "/path/to/mcp-server-things/venv/bin/python",
"args": ["-m", "things_mcp"],
"env": {
"PYTHONPATH": "/path/to/mcp-server-things/src",
"THINGS_MCP_LOG_LEVEL": "INFO",
"THINGS_MCP_APPLESCRIPT_TIMEOUT": "30"
}
}
}
}Notes:
/path/to/your/venv/bin/python with your virtual environment's Python path/path/to/mcp-server-things with your actual installation path and include the PYTHONPATHDemo showing Claude creating tasks in Things 3 Creating tasks with natural language through Claude
Once installed, Claude (or other MCP clients) can automatically discover and use all available tools. No additional setup required.
The server uses environment variables for configuration. You can set these variables in three ways:
.env file (automatically loaded from the current directory).env file specified with --env-file cat .env.example cp .env.example .env
# Edit .env to customize settings cp .env.example ~/my-things-config.env
python -m things_mcp --env-file ~/my-things-config.env# Server identification
THINGS_MCP_SERVER_NAME=things3-mcp-server
# AppleScript execution
THINGS_MCP_APPLESCRIPT_TIMEOUT=30.0 # Timeout in seconds (1-300)
THINGS_MCP_APPLESCRIPT_RETRY_COUNT=3 # Retry attempts (0-10)
# Tag management - Control AI tag creation
THINGS_MCP_AI_CAN_CREATE_TAGS=false # false = AI can only use existing tags
THINGS_MCP_TAG_VALIDATION_CASE_SENSITIVE=false
# Logging
THINGS_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
THINGS_MCP_LOG_FILE_PATH=/path/to/file.log # Optional: log to file instead of console
# Validation limits
THINGS_MCP_MAX_TITLE_LENGTH=500
THINGS_MCP_MAX_NOTES_LENGTH=10000
THINGS_MCP_MAX_TAGS_PER_ITEM=20
THINGS_MCP_SEARCH_RESULTS_LIMIT=100The server supports several command-line options:
# Start with debug logging
python -m things_mcp --debug
# Use a custom .env file
python -m things_mcp --env-file ~/my-config.env
# Check system health
python -m things_mcp --health-check
# Test AppleScript connectivity
python -m things_mcp --test-applescript
# Show version
python -m things_mcp --version
# Customize timeout and retry settings
python -m things_mcp --timeout 60 --retry-count 5You can set environment variables directly in your Claude Desktop configuration:
{
"mcpServers": {
"things": {
"env": {
"THINGS_MCP_LOG_LEVEL": "DEBUG",
"THINGS_MCP_AI_CAN_CREATE_TAGS": "true",
"THINGS_MCP_APPLESCRIPT_TIMEOUT": "60"
}
}
}
}get_todos(project_uuid?, include_items?) - List todosadd_todo(title, ...) - Create new todoupdate_todo(id, ...) - Update existing todobulk_update_todos(todo_ids, ...) - Update multiple todos in one operationget_todo_by_id(todo_id) - Get specific tododelete_todo(todo_id) - Delete todoget_projects(include_items?) - List projectsadd_project(title, ...) - Create new projectupdate_project(id, ...) - Update existing projectget_areas(include_items?) - List areasget_inbox() - Get Inbox todosget_today() - Get Today's todosget_upcoming(days?) - Get upcoming todos (with optional days filter)get_anytime() - Get Anytime todosget_someday() - Get Someday todosget_logbook(limit?, period?) - Get completed todosget_trash() - Get trashed todosget_due_in_days(days) - Get todos due within specified daysget_activating_in_days(days) - Get todos activating within dayssearch_todos(query) - Basic searchsearch_advanced(...) - Advanced search with filtersget_tags(include_items?) - List tagscreate_tag(name) - Create a new tagget_tagged_items(tag) - Get items with specific tagadd_tags(todo_id, tags) - Add tags to a todoremove_tags(todo_id, tags) - Remove tags from a todoget_recent(period) - Get recently created itemsmove_record(record_id, to_parent_uuid) - Move single recordbulk_move_records(record_ids, to_parent_uuid) - Move multiple recordshealth_check() - Check server and Things 3 statusqueue_status() - Check operation queue status and statisticsget_server_capabilities() - Get server features and configurationget_usage_recommendations() - Get usage tips and best practicescontext_stats() - Get context-aware response statistics#### Permission Denied Errors
# Grant AppleScript permissions to your terminal/IDE
# System Preferences > Security & Privacy > Privacy > Automation
# Enable access for your terminal application to control Things 3#### Things 3 Not Found
# Verify Things 3 is installed and running
python -m things_mcp.main --health-check
# Check if Things 3 is in Applications folder
ls /Applications/ | grep -i things#### Connection Timeouts
# Increase timeout value via environment variable
export THINGS_MCP_APPLESCRIPT_TIMEOUT=60
# Or in your .env file
THINGS_MCP_APPLESCRIPT_TIMEOUT=60# Enable debug logging
python -m things_mcp.main --debug
# Check logs
tail -f things_mcp.log# Comprehensive health check
python -m things_mcp.main --health-check
# Test specific components
python -m things_mcp.main --test-applescriptContributions are welcome! Please follow these guidelines:
This project is licensed under the MIT License - see the LICENSE file for details.
Built for the Things 3 and MCP community.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.