Skip to main content

Fantastical calendar MCP server — read events from Fantastical's local database, create via URL scheme

Project description

Fantastical MCP

An MCP server that gives AI assistants read/write access to your Fantastical calendar on macOS.

What it does

fantastical-mcp reads calendar events directly from Fantastical's local SQLite database and creates events via Fantastical's x-fantastical3:// URL scheme. No TCC permissions, no API keys, no network access -- it works entirely offline using the data Fantastical already stores on your Mac.

  • Read -- Query events by date range, calendar, or full-text search
  • Write -- Create events using Fantastical's natural language parser
  • Navigate -- Open Fantastical to a specific date

Requirements

  • macOS
  • Fantastical installed with at least one calendar
  • Python 3.12+

Quick start

Claude Desktop (1-click install)

  1. Download fantastical-mcp-0.1.0.mcpb from the latest release
  2. Double-click the file
  3. Done — Fantastical tools are now available in Claude Desktop

Install from PyPI

uvx fantastical-mcp

Local development

git clone https://github.com/jaydenk/fantastical-mcp.git
cd fantastical-mcp
uv venv && uv pip install -e ".[test]"

Configuration

Claude Code

Add to your .claude/settings.json (or project-level settings):

Published package:

{
  "mcpServers": {
    "fantastical": {
      "command": "uvx",
      "args": ["fantastical-mcp"]
    }
  }
}

Local development:

{
  "mcpServers": {
    "fantastical": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/fantastical-mcp", "fantastical-mcp"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "fantastical": {
      "command": "uvx",
      "args": ["fantastical-mcp"]
    }
  }
}

See docs/configuration.md for environment variables, calendar exclusion, and transport options.

Available tools

Tool Description
get_today All events for today, grouped by calendar
get_upcoming Events for the next N days, grouped by date
get_calendars List all calendars with event counts
get_event Full details for a specific event by ID
search_events Full-text search across titles, locations, notes, attendees
get_events_by_calendar Events from a specific calendar
get_availability Free/busy time slots for a date
get_recurring Upcoming recurring events, optionally filtered by calendar
get_invitations Pending event invitations that need a response
get_recent Most recently added or synced events
create_event Create an event using natural language
show_date Open Fantastical's mini calendar to a date

See docs/tools.md for parameters, types, defaults, and example output.

Limitations

  • No update or delete -- Fantastical's URL scheme only supports event creation. Modification and deletion require EventKit, which needs TCC permissions.
  • macOS only -- Relies on Fantastical's macOS database location and the open command.
  • Read-only database access -- The database is opened in ?mode=ro to prevent any risk of corruption.
  • Blob format dependency -- The NSKeyedArchiver serialisation format is an internal detail of Fantastical and could change between versions. An FTS fallback path mitigates this.

Documentation

Licence

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fantastical_mcp-0.1.0.tar.gz (91.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fantastical_mcp-0.1.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file fantastical_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: fantastical_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 91.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fantastical_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5491919b8e3aa32d92b18f94170c4f1aa1ac63c70fc5cfd479409860eb780146
MD5 8f53a2664d367fa361bb749137c0ebbd
BLAKE2b-256 c208204b4724edc76d3c8a60fcaa5add9896f5b9c7f5e804dd60b7f76a765417

See more details on using hashes here.

File details

Details for the file fantastical_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fantastical_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fantastical_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5ac5e94c279831632e989e0b461a736be876923108772ac7c9e18a58f8599e7
MD5 c102f4f545ca6322eb683dcf3b200a61
BLAKE2b-256 e3f51e8444a784f13b4ba7c3c2f6a4489049c9525faf0ae106faae054827dd87

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page