mcp-server-things


Namemcp-server-things JSON
Version 1.1.3 PyPI version JSON
download
home_pageNone
SummaryModel Context Protocol server for Things 3 task management integration
upload_time2025-09-07 14:57:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords mcp things3 applescript task-management productivity
VCS
bugtrack_url
requirements fastmcp pydantic python-dateutil dateparser pytest pytest-asyncio black isort mypy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Things 3 MCP Server

[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![macOS](https://img.shields.io/badge/macOS-12+-green.svg)](https://www.apple.com/macos/)

A Model Context Protocol (MCP) server that connects Claude and other AI assistants to Things 3 for natural language task management.

## Installation

### Option 1: From PyPI (Recommended)

1. Create and activate a virtual environment:
```bash
python3 -m venv venv
source venv/bin/activate  # On macOS/Linux
```

2. Install the package:
```bash
pip install mcp-server-things
```

### Option 2: From Source (Development)

1. Clone the repository:
```bash
git clone https://github.com/ebowman/mcp-server-things.git
cd mcp-server-things
```

2. Create and activate a virtual environment:
```bash
python3 -m venv venv
source venv/bin/activate  # On macOS/Linux
```

3. Install dependencies:
```bash
pip install -r requirements.txt
```

4. Install in development mode:
```bash
pip install -e .
```

## Claude Desktop Configuration

### For PyPI Installation

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```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"
      }
    }
  }
}
```

### For Source Installation

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```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:** 
- **PyPI**: Replace `/path/to/your/venv/bin/python` with your virtual environment's Python path
- **Source**: Replace `/path/to/mcp-server-things` with your actual installation path and include the `PYTHONPATH`
- Use the full path to the Python executable in your virtual environment
- See Configuration section below for environment variable options

![Demo showing Claude creating tasks in Things 3](demo.gif)
*Creating tasks with natural language through Claude*

## 📚 Documentation

- **[User Examples](docs/USER_EXAMPLES.md)** - Rich examples of how to use Things 3 with AI assistants
- **[Architecture Overview](docs/ARCHITECTURE.md)** - Technical design and implementation details
- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions

## Features

### Core Todo Operations
- **Create**: Add todos with full metadata (tags, deadlines, projects, notes, reminders)
- **Read**: Get todos by ID, project, or built-in lists (Today, Inbox, Upcoming, etc.)
- **Update**: Modify existing todos with partial updates
- **Delete**: Remove todos safely
- **Search**: Find todos by title, notes, or advanced filters

### Project & Area Management
- Get all projects and areas with optional task inclusion
- Create new projects with initial todos
- Update project metadata and status
- Organize todos within project hierarchies

### Built-in List Access
- **Inbox**: Capture new items
- **Today**: Items scheduled for today
- **Upcoming**: Future scheduled items
- **Anytime**: Items without specific dates
- **Someday**: Items for future consideration
- **Logbook**: Completed items history
- **Trash**: Deleted items

### Advanced Features
- **Reminder Support**: Create todos with specific reminder times (e.g., "today@14:30")
  - Uses hybrid approach: AppleScript for regular todos, URL scheme for reminders
  - This works around AppleScript API limitation (cannot set reminder times)
- **Tag Management**: Full tag support with AI creation control
- **Date-Range Queries**: Get todos due/activating within specific timeframes
- **URL Schemes**: Native Things 3 URL scheme integration
- **Health Monitoring**: System health checks and queue status monitoring
- **Error Handling**: Robust error handling with configurable retries
- **Logging**: Structured logging with configurable levels
- **Concurrency Support**: Multi-client safe operation with operation queuing
- **Input Validation**: Configurable limits for titles, notes, and tags

## Requirements

- **macOS**: This server requires macOS (tested on macOS 12+)
- **Things 3**: Things 3 must be installed and accessible
- **Python**: Python 3.8 or higher
- **Permissions**: AppleScript permissions for Things 3 access

## Quick Start

Once installed, Claude (or other MCP clients) can automatically discover and use all available tools. No additional setup required.

## Configuration

The server uses environment variables for configuration. You can set these variables in three ways:
1. System environment variables
2. A `.env` file (automatically loaded from the current directory)
3. A custom `.env` file specified with `--env-file`

### Using the .env File

1. **Review the example configuration:**
   ```bash
   cat .env.example
   ```

2. **Create your own .env file:**
   ```bash
   cp .env.example .env
   # Edit .env to customize settings
   ```

3. **Or use a custom location:**
   ```bash
   cp .env.example ~/my-things-config.env
   python -m things_mcp --env-file ~/my-things-config.env
   ```

### Key Configuration Options

```bash
# Server identification
THINGS_MCP_SERVER_NAME=things3-mcp-server
THINGS_MCP_SERVER_VERSION=1.0.0

# 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=100
```

### Command Line Options

The server supports several command-line options:

```bash
# 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 5
```

### Claude Desktop Environment Variables

You can set environment variables directly in your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "things": {
      "env": {
        "THINGS_MCP_LOG_LEVEL": "DEBUG",
        "THINGS_MCP_AI_CAN_CREATE_TAGS": "true",
        "THINGS_MCP_APPLESCRIPT_TIMEOUT": "60"
      }
    }
  }
}
```

## Available MCP Tools

### Todo Management
- `get_todos(project_uuid?, include_items?)` - List todos
- `add_todo(title, ...)` - Create new todo with optional reminder time
- `update_todo(id, ...)` - Update existing todo
- `get_todo_by_id(todo_id)` - Get specific todo
- `delete_todo(todo_id)` - Delete todo

### Project Management
- `get_projects(include_items?)` - List projects
- `add_project(title, ...)` - Create new project
- `update_project(id, ...)` - Update existing project

### Area Management
- `get_areas(include_items?)` - List areas

### List Access
- `get_inbox()` - Get Inbox todos
- `get_today()` - Get Today's todos
- `get_upcoming()` - Get upcoming todos
- `get_anytime()` - Get Anytime todos
- `get_someday()` - Get Someday todos
- `get_logbook(limit?, period?)` - Get completed todos
- `get_trash()` - Get trashed todos

### Date-Range Queries
- `get_due_in_days(days)` - Get todos due within specified days
- `get_activating_in_days(days)` - Get todos activating within days
- `get_upcoming_in_days(days)` - Get todos due or activating within days

### Search & Tags
- `search_todos(query)` - Basic search
- `search_advanced(...)` - Advanced search with filters
- `get_tags(include_items?)` - List tags
- `create_tag(name)` - Create a new tag
- `get_tagged_items(tag)` - Get items with specific tag
- `add_tags(todo_id, tags)` - Add tags to a todo
- `remove_tags(todo_id, tags)` - Remove tags from a todo
- `get_recent(period)` - Get recently created items

### Bulk Operations
- `move_record(record_id, to_parent_uuid)` - Move single record
- `bulk_move_records(record_ids, to_parent_uuid)` - Move multiple records

### System & Utilities
- `health_check()` - Check server and Things 3 status
- `queue_status()` - Check operation queue status and statistics
- `get_server_capabilities()` - Get server features and configuration
- `get_usage_recommendations()` - Get usage tips and best practices
- `context_stats()` - Get context-aware response statistics


## Troubleshooting

### Common Issues

#### Permission Denied Errors
```bash
# 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
```bash
# 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
```bash
# Increase timeout value via environment variable
export THINGS_MCP_APPLESCRIPT_TIMEOUT=60

# Or in your .env file
THINGS_MCP_APPLESCRIPT_TIMEOUT=60
```

### Debug Mode

```bash
# Enable debug logging
python -m things_mcp.main --debug

# Check logs
tail -f things_mcp.log
```

### Health Diagnostics

```bash
# Comprehensive health check
python -m things_mcp.main --health-check

# Test specific components
python -m things_mcp.main --test-applescript
```

## Performance

- **Startup Time**: Less than 2 seconds
- **Response Time**: Less than 500ms for most operations
- **Memory Usage**: 15MB baseline, 50MB under concurrent load
- **Concurrent Requests**: Serialized write operations to prevent conflicts
- **Throughput**: Multiple operations per second depending on complexity
- **Queue Processing**: Less than 50ms latency for operation enqueuing

## Security

- No network access required (local AppleScript only)
- No data stored outside of Things 3
- Minimal system permissions needed
- Secure AppleScript execution with timeouts
- Input validation on all parameters

## Contributing

Contributions are welcome! Please follow these guidelines:

- Set up a virtual environment and install dependencies
- Follow existing code style and patterns
- Add tests for new features
- Submit pull requests with clear descriptions

## Documentation

- [Troubleshooting Guide](docs/TROUBLESHOOTING.md) - Common issues and solutions
- [Development Roadmap](docs/ROADMAP.md) - Implementation status and missing features

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

- **Issues**: [GitHub Issues](https://github.com/ebowman/mcp-server-things/issues)
- **Discussions**: [GitHub Discussions](https://github.com/ebowman/mcp-server-things/discussions)
- **Email**: ebowman@boboco.ie

## Roadmap

### Phase 1: Core Stability (Current)
- Complete MCP tool implementation (Completed)
- Robust error handling and logging (Completed)
- Comprehensive testing suite (Completed)
- Documentation and examples (Completed)

### Phase 2: Enhanced Features
- Multi-client concurrency support with operation queuing (Completed)
- Configurable tag creation policies (Completed)
- Reminder support with datetime scheduling (Completed)
- Date-range query tools (Completed)
- Bulk move operations (Completed)
- Real-time sync with Things 3 changes (Planned)
- Advanced natural language processing (Planned)
- Integration with calendar and email (Planned)

### Phase 3: Advanced Integration
- Multi-user support (Planned)
- API rate limiting (Planned)
- Webhook support (Planned)
- Analytics and reporting (Planned)

---

Built for the Things 3 and MCP community.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcp-server-things",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "mcp, things3, applescript, task-management, productivity",
    "author": null,
    "author_email": "MCP Developer <developer@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/6e/18/983334ad10d1aeb0094d9e77ee4fb23b87225ff1f1255b6d55bb7a0d098a/mcp_server_things-1.1.3.tar.gz",
    "platform": null,
    "description": "# Things 3 MCP Server\n\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![macOS](https://img.shields.io/badge/macOS-12+-green.svg)](https://www.apple.com/macos/)\n\nA Model Context Protocol (MCP) server that connects Claude and other AI assistants to Things 3 for natural language task management.\n\n## Installation\n\n### Option 1: From PyPI (Recommended)\n\n1. Create and activate a virtual environment:\n```bash\npython3 -m venv venv\nsource venv/bin/activate  # On macOS/Linux\n```\n\n2. Install the package:\n```bash\npip install mcp-server-things\n```\n\n### Option 2: From Source (Development)\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/ebowman/mcp-server-things.git\ncd mcp-server-things\n```\n\n2. Create and activate a virtual environment:\n```bash\npython3 -m venv venv\nsource venv/bin/activate  # On macOS/Linux\n```\n\n3. Install dependencies:\n```bash\npip install -r requirements.txt\n```\n\n4. Install in development mode:\n```bash\npip install -e .\n```\n\n## Claude Desktop Configuration\n\n### For PyPI Installation\n\nAdd to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"things\": {\n      \"command\": \"/path/to/your/venv/bin/python\",\n      \"args\": [\"-m\", \"things_mcp\"],\n      \"env\": {\n        \"THINGS_MCP_LOG_LEVEL\": \"INFO\",\n        \"THINGS_MCP_APPLESCRIPT_TIMEOUT\": \"30\"\n      }\n    }\n  }\n}\n```\n\n### For Source Installation\n\nAdd to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"things\": {\n      \"command\": \"/path/to/mcp-server-things/venv/bin/python\",\n      \"args\": [\"-m\", \"things_mcp\"],\n      \"env\": {\n        \"PYTHONPATH\": \"/path/to/mcp-server-things/src\",\n        \"THINGS_MCP_LOG_LEVEL\": \"INFO\",\n        \"THINGS_MCP_APPLESCRIPT_TIMEOUT\": \"30\"\n      }\n    }\n  }\n}\n```\n\n**Notes:** \n- **PyPI**: Replace `/path/to/your/venv/bin/python` with your virtual environment's Python path\n- **Source**: Replace `/path/to/mcp-server-things` with your actual installation path and include the `PYTHONPATH`\n- Use the full path to the Python executable in your virtual environment\n- See Configuration section below for environment variable options\n\n![Demo showing Claude creating tasks in Things 3](demo.gif)\n*Creating tasks with natural language through Claude*\n\n## \ud83d\udcda Documentation\n\n- **[User Examples](docs/USER_EXAMPLES.md)** - Rich examples of how to use Things 3 with AI assistants\n- **[Architecture Overview](docs/ARCHITECTURE.md)** - Technical design and implementation details\n- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions\n\n## Features\n\n### Core Todo Operations\n- **Create**: Add todos with full metadata (tags, deadlines, projects, notes, reminders)\n- **Read**: Get todos by ID, project, or built-in lists (Today, Inbox, Upcoming, etc.)\n- **Update**: Modify existing todos with partial updates\n- **Delete**: Remove todos safely\n- **Search**: Find todos by title, notes, or advanced filters\n\n### Project & Area Management\n- Get all projects and areas with optional task inclusion\n- Create new projects with initial todos\n- Update project metadata and status\n- Organize todos within project hierarchies\n\n### Built-in List Access\n- **Inbox**: Capture new items\n- **Today**: Items scheduled for today\n- **Upcoming**: Future scheduled items\n- **Anytime**: Items without specific dates\n- **Someday**: Items for future consideration\n- **Logbook**: Completed items history\n- **Trash**: Deleted items\n\n### Advanced Features\n- **Reminder Support**: Create todos with specific reminder times (e.g., \"today@14:30\")\n  - Uses hybrid approach: AppleScript for regular todos, URL scheme for reminders\n  - This works around AppleScript API limitation (cannot set reminder times)\n- **Tag Management**: Full tag support with AI creation control\n- **Date-Range Queries**: Get todos due/activating within specific timeframes\n- **URL Schemes**: Native Things 3 URL scheme integration\n- **Health Monitoring**: System health checks and queue status monitoring\n- **Error Handling**: Robust error handling with configurable retries\n- **Logging**: Structured logging with configurable levels\n- **Concurrency Support**: Multi-client safe operation with operation queuing\n- **Input Validation**: Configurable limits for titles, notes, and tags\n\n## Requirements\n\n- **macOS**: This server requires macOS (tested on macOS 12+)\n- **Things 3**: Things 3 must be installed and accessible\n- **Python**: Python 3.8 or higher\n- **Permissions**: AppleScript permissions for Things 3 access\n\n## Quick Start\n\nOnce installed, Claude (or other MCP clients) can automatically discover and use all available tools. No additional setup required.\n\n## Configuration\n\nThe server uses environment variables for configuration. You can set these variables in three ways:\n1. System environment variables\n2. A `.env` file (automatically loaded from the current directory)\n3. A custom `.env` file specified with `--env-file`\n\n### Using the .env File\n\n1. **Review the example configuration:**\n   ```bash\n   cat .env.example\n   ```\n\n2. **Create your own .env file:**\n   ```bash\n   cp .env.example .env\n   # Edit .env to customize settings\n   ```\n\n3. **Or use a custom location:**\n   ```bash\n   cp .env.example ~/my-things-config.env\n   python -m things_mcp --env-file ~/my-things-config.env\n   ```\n\n### Key Configuration Options\n\n```bash\n# Server identification\nTHINGS_MCP_SERVER_NAME=things3-mcp-server\nTHINGS_MCP_SERVER_VERSION=1.0.0\n\n# AppleScript execution\nTHINGS_MCP_APPLESCRIPT_TIMEOUT=30.0       # Timeout in seconds (1-300)\nTHINGS_MCP_APPLESCRIPT_RETRY_COUNT=3      # Retry attempts (0-10)\n\n# Tag management - Control AI tag creation\nTHINGS_MCP_AI_CAN_CREATE_TAGS=false       # false = AI can only use existing tags\nTHINGS_MCP_TAG_VALIDATION_CASE_SENSITIVE=false\n\n# Logging\nTHINGS_MCP_LOG_LEVEL=INFO                 # DEBUG, INFO, WARNING, ERROR, CRITICAL\nTHINGS_MCP_LOG_FILE_PATH=/path/to/file.log # Optional: log to file instead of console\n\n# Validation limits\nTHINGS_MCP_MAX_TITLE_LENGTH=500\nTHINGS_MCP_MAX_NOTES_LENGTH=10000\nTHINGS_MCP_MAX_TAGS_PER_ITEM=20\nTHINGS_MCP_SEARCH_RESULTS_LIMIT=100\n```\n\n### Command Line Options\n\nThe server supports several command-line options:\n\n```bash\n# Start with debug logging\npython -m things_mcp --debug\n\n# Use a custom .env file\npython -m things_mcp --env-file ~/my-config.env\n\n# Check system health\npython -m things_mcp --health-check\n\n# Test AppleScript connectivity\npython -m things_mcp --test-applescript\n\n# Show version\npython -m things_mcp --version\n\n# Customize timeout and retry settings\npython -m things_mcp --timeout 60 --retry-count 5\n```\n\n### Claude Desktop Environment Variables\n\nYou can set environment variables directly in your Claude Desktop configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"things\": {\n      \"env\": {\n        \"THINGS_MCP_LOG_LEVEL\": \"DEBUG\",\n        \"THINGS_MCP_AI_CAN_CREATE_TAGS\": \"true\",\n        \"THINGS_MCP_APPLESCRIPT_TIMEOUT\": \"60\"\n      }\n    }\n  }\n}\n```\n\n## Available MCP Tools\n\n### Todo Management\n- `get_todos(project_uuid?, include_items?)` - List todos\n- `add_todo(title, ...)` - Create new todo with optional reminder time\n- `update_todo(id, ...)` - Update existing todo\n- `get_todo_by_id(todo_id)` - Get specific todo\n- `delete_todo(todo_id)` - Delete todo\n\n### Project Management\n- `get_projects(include_items?)` - List projects\n- `add_project(title, ...)` - Create new project\n- `update_project(id, ...)` - Update existing project\n\n### Area Management\n- `get_areas(include_items?)` - List areas\n\n### List Access\n- `get_inbox()` - Get Inbox todos\n- `get_today()` - Get Today's todos\n- `get_upcoming()` - Get upcoming todos\n- `get_anytime()` - Get Anytime todos\n- `get_someday()` - Get Someday todos\n- `get_logbook(limit?, period?)` - Get completed todos\n- `get_trash()` - Get trashed todos\n\n### Date-Range Queries\n- `get_due_in_days(days)` - Get todos due within specified days\n- `get_activating_in_days(days)` - Get todos activating within days\n- `get_upcoming_in_days(days)` - Get todos due or activating within days\n\n### Search & Tags\n- `search_todos(query)` - Basic search\n- `search_advanced(...)` - Advanced search with filters\n- `get_tags(include_items?)` - List tags\n- `create_tag(name)` - Create a new tag\n- `get_tagged_items(tag)` - Get items with specific tag\n- `add_tags(todo_id, tags)` - Add tags to a todo\n- `remove_tags(todo_id, tags)` - Remove tags from a todo\n- `get_recent(period)` - Get recently created items\n\n### Bulk Operations\n- `move_record(record_id, to_parent_uuid)` - Move single record\n- `bulk_move_records(record_ids, to_parent_uuid)` - Move multiple records\n\n### System & Utilities\n- `health_check()` - Check server and Things 3 status\n- `queue_status()` - Check operation queue status and statistics\n- `get_server_capabilities()` - Get server features and configuration\n- `get_usage_recommendations()` - Get usage tips and best practices\n- `context_stats()` - Get context-aware response statistics\n\n\n## Troubleshooting\n\n### Common Issues\n\n#### Permission Denied Errors\n```bash\n# Grant AppleScript permissions to your terminal/IDE\n# System Preferences > Security & Privacy > Privacy > Automation\n# Enable access for your terminal application to control Things 3\n```\n\n#### Things 3 Not Found\n```bash\n# Verify Things 3 is installed and running\npython -m things_mcp.main --health-check\n\n# Check if Things 3 is in Applications folder\nls /Applications/ | grep -i things\n```\n\n#### Connection Timeouts\n```bash\n# Increase timeout value via environment variable\nexport THINGS_MCP_APPLESCRIPT_TIMEOUT=60\n\n# Or in your .env file\nTHINGS_MCP_APPLESCRIPT_TIMEOUT=60\n```\n\n### Debug Mode\n\n```bash\n# Enable debug logging\npython -m things_mcp.main --debug\n\n# Check logs\ntail -f things_mcp.log\n```\n\n### Health Diagnostics\n\n```bash\n# Comprehensive health check\npython -m things_mcp.main --health-check\n\n# Test specific components\npython -m things_mcp.main --test-applescript\n```\n\n## Performance\n\n- **Startup Time**: Less than 2 seconds\n- **Response Time**: Less than 500ms for most operations\n- **Memory Usage**: 15MB baseline, 50MB under concurrent load\n- **Concurrent Requests**: Serialized write operations to prevent conflicts\n- **Throughput**: Multiple operations per second depending on complexity\n- **Queue Processing**: Less than 50ms latency for operation enqueuing\n\n## Security\n\n- No network access required (local AppleScript only)\n- No data stored outside of Things 3\n- Minimal system permissions needed\n- Secure AppleScript execution with timeouts\n- Input validation on all parameters\n\n## Contributing\n\nContributions are welcome! Please follow these guidelines:\n\n- Set up a virtual environment and install dependencies\n- Follow existing code style and patterns\n- Add tests for new features\n- Submit pull requests with clear descriptions\n\n## Documentation\n\n- [Troubleshooting Guide](docs/TROUBLESHOOTING.md) - Common issues and solutions\n- [Development Roadmap](docs/ROADMAP.md) - Implementation status and missing features\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/ebowman/mcp-server-things/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/ebowman/mcp-server-things/discussions)\n- **Email**: ebowman@boboco.ie\n\n## Roadmap\n\n### Phase 1: Core Stability (Current)\n- Complete MCP tool implementation (Completed)\n- Robust error handling and logging (Completed)\n- Comprehensive testing suite (Completed)\n- Documentation and examples (Completed)\n\n### Phase 2: Enhanced Features\n- Multi-client concurrency support with operation queuing (Completed)\n- Configurable tag creation policies (Completed)\n- Reminder support with datetime scheduling (Completed)\n- Date-range query tools (Completed)\n- Bulk move operations (Completed)\n- Real-time sync with Things 3 changes (Planned)\n- Advanced natural language processing (Planned)\n- Integration with calendar and email (Planned)\n\n### Phase 3: Advanced Integration\n- Multi-user support (Planned)\n- API rate limiting (Planned)\n- Webhook support (Planned)\n- Analytics and reporting (Planned)\n\n---\n\nBuilt for the Things 3 and MCP community.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Model Context Protocol server for Things 3 task management integration",
    "version": "1.1.3",
    "project_urls": {
        "Bug Reports": "https://github.com/ebowman/mcp-server-things/issues",
        "Homepage": "https://github.com/ebowman/mcp-server-things",
        "Source": "https://github.com/ebowman/mcp-server-things"
    },
    "split_keywords": [
        "mcp",
        " things3",
        " applescript",
        " task-management",
        " productivity"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f46380fa2d690919839394a9c07becf4959d7cc3cae4eb6080e08d6ad2940d3e",
                "md5": "e6f04a5587ba1b7f51499081cc6a7fd0",
                "sha256": "df55fa4439f65584481d954e2976de35c9c17921c58414104b5b23f2ca52f23f"
            },
            "downloads": -1,
            "filename": "mcp_server_things-1.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e6f04a5587ba1b7f51499081cc6a7fd0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 137803,
            "upload_time": "2025-09-07T14:57:13",
            "upload_time_iso_8601": "2025-09-07T14:57:13.094865Z",
            "url": "https://files.pythonhosted.org/packages/f4/63/80fa2d690919839394a9c07becf4959d7cc3cae4eb6080e08d6ad2940d3e/mcp_server_things-1.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e18983334ad10d1aeb0094d9e77ee4fb23b87225ff1f1255b6d55bb7a0d098a",
                "md5": "0d90c9ea415fdda338052d4f8cb089c8",
                "sha256": "7e93e17310f00e51c7027ba9906cb910c3c8b193ec553f570c71a3470cba2768"
            },
            "downloads": -1,
            "filename": "mcp_server_things-1.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "0d90c9ea415fdda338052d4f8cb089c8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 127589,
            "upload_time": "2025-09-07T14:57:14",
            "upload_time_iso_8601": "2025-09-07T14:57:14.581764Z",
            "url": "https://files.pythonhosted.org/packages/6e/18/983334ad10d1aeb0094d9e77ee4fb23b87225ff1f1255b6d55bb7a0d098a/mcp_server_things-1.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-07 14:57:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ebowman",
    "github_project": "mcp-server-things",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "fastmcp",
            "specs": [
                [
                    ">=",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    ">=",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    ">=",
                    "2.8.0"
                ]
            ]
        },
        {
            "name": "dateparser",
            "specs": [
                [
                    ">=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    ">=",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "pytest-asyncio",
            "specs": [
                [
                    ">=",
                    "0.21.0"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    ">=",
                    "23.0.0"
                ]
            ]
        },
        {
            "name": "isort",
            "specs": [
                [
                    ">=",
                    "5.0.0"
                ]
            ]
        },
        {
            "name": "mypy",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        }
    ],
    "lcname": "mcp-server-things"
}
        
Elapsed time: 1.11009s