Hattmakaren/proton-calendar-mcp
If you are the rightful owner of proton-calendar-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Proton Calendar MCP Server provides read-only access to Proton Calendar data for AI assistants.
Proton Calendar MCP Server
An MCP (Model Context Protocol) server that provides read-only access to your Proton Calendar data and optionally integrates with Trello for task management, all accessible through AI assistants like Claude Code.
Features
Calendar Features
- Read-only access to your Proton Calendar via shareable URL
- Three calendar tools for querying events:
get_today_events: Get all events scheduled for todayget_week_events: Get all events for the next 7 daysget_date_range_events: Get events for a custom date range
Trello Integration (Optional)
- Read-only access to your Trello boards and cards
- Four Trello tools for task management:
get_trello_cards_today: Get all cards due todayget_trello_cards_tomorrow: Get all cards due tomorrowget_trello_overdue_cards: Get overdue cards with day countget_trello_cards_date_range: Get cards due within a date range
- Rich card details: Labels, checklists, descriptions, board/list info
- Automatic board filtering via environment variable
Planning Agents
- Daily summary agent with intelligent preparation suggestions for today and tomorrow
- Weekly planner agent with monthly overview and intelligent task suggestions
- Both agents include workload analysis and smart planning tips
Prerequisites
- Python 3.8 or higher (tested with Python 3.13)
- A Proton Calendar account
- A shareable calendar URL from Proton Calendar (read-only)
- (Optional) A Trello account with API key and token for Trello integration
Setup Instructions
1. Get Your Proton Calendar Share URL
- Go to calendar.proton.me
- Select the calendar you want to share
- Click on the calendar settings (three dots menu)
- Select "Share" or "Get shareable link"
- Generate a read-only URL for your calendar
- Copy the URL (it should be in .ics format)
2. Install Dependencies
cd proton-calendar-mcp
pip install -r requirements.txt
3. Configure Environment Variables
All configuration is managed through a centralized .env file in the proton-calendar-mcp directory.
Create the .env file
Create a file named .env in the proton-calendar-mcp directory with the following content:
# Proton Calendar Configuration (Required)
PROTON_CALENDAR_URL=https://calendar.proton.me/api/calendar/v1/url/YOUR_CALENDAR_ID/calendar.ics
# Trello Configuration (Optional - for task integration)
TRELLO_API_KEY=your_trello_api_key_here
TRELLO_TOKEN=your_trello_token_here
# Optional: Comma-separated list of board IDs to monitor (leave empty for all boards)
TRELLO_BOARD_IDS=
Get your Trello credentials (Optional)
To enable Trello integration:
-
Get your Trello API Key:
- Go to https://trello.com/power-ups/admin
- Click "New" to create a new Power-Up
- Your API key will be displayed
-
Generate a Trello Token:
- Visit:
https://trello.com/1/authorize?expiration=never&name=ProtonCalendarMCP&scope=read&response_type=token&key=YOUR_API_KEY - Replace
YOUR_API_KEYwith your actual API key - Click "Allow" to generate your token
- Visit:
-
Add credentials to .env file:
- Update
TRELLO_API_KEYwith your API key - Update
TRELLO_TOKENwith your token - Optionally set
TRELLO_BOARD_IDSto specific board IDs (comma-separated)
- Update
Note:
- The
.envfile is gitignored for security - If
TRELLO_BOARD_IDSis not set, the server will fetch cards from all your boards - All scripts (MCP server, daily_summary, trello_client) use this centralized configuration
4. Register with Claude Code
Register the MCP server with Claude Code using stdio transport. Since all configuration is in the .env file, the registration is simple:
claude mcp add --transport stdio proton-calendar -- python /path/to/proton-calendar-mcp/server.py
Example for Windows:
claude mcp add --transport stdio proton-calendar -- python C:\Users\YourName\proton-calendar-mcp\server.py
Example for Linux/Mac:
claude mcp add --transport stdio proton-calendar -- python /home/yourname/proton-calendar-mcp/server.py
Important:
- Update the path to match where you saved the project
- The server will automatically load configuration from the
.envfile - No need to pass environment variables via
--envflags
5. Verify Installation
Check that the server is registered and connected:
claude mcp list
You should see:
proton-calendar: python /path/to/server.py - ✓ Connected
Usage
Using with Claude Code
Once configured, you can ask Claude Code questions about both your calendar and Trello boards:
Calendar queries:
- "What's on my calendar today?"
- "Show me my schedule for the next week"
- "What events do I have between January 15 and January 20?"
Trello queries (if configured):
- "What Trello cards are due today?"
- "Show me my overdue Trello tasks"
- "What cards do I have due tomorrow?"
- "Show me Trello cards due this week"
Combined queries:
- "What do I have on my schedule today, including Trello tasks?"
- "Show me everything due tomorrow - calendar and Trello"
Claude Code will automatically use the appropriate tools to fetch and display your data.
Daily Summary Agent
The project includes a daily summary agent that provides an intelligent overview combining both calendar events and Trello tasks:
cd proton-calendar-mcp
python daily_summary.py
Features:
- ⚠️ Shows overdue Trello tasks (with days overdue)
- 📅 Shows today's complete schedule (calendar + Trello tasks)
- 🔮 Previews tomorrow's events and tasks
- 🎯 Suggests preparation needed for tomorrow's meetings
- 💡 Provides helpful tips (early morning alerts, back-to-back meeting warnings)
- ⏰ Highlights important scheduling considerations
Note: The daily summary automatically loads configuration from the .env file, including Trello integration if configured.
Example output:
============================================================
📅 DAILY SUMMARY
🗓️ Friday, November 14, 2025
============================================================
⚠️ OVERDUE TASKS
------------------------------------------------------------
• Ring om Gästhuset hyresgäst
📋 Quest log → Weekly commitment
⏰ Due: 2025-11-07 01:03 PM (7 days overdue)
🔗 https://trello.com/c/UYSzpJhy/...
📊 You have 1 overdue task(s) - prioritize these!
============================================================
🌟 TODAY'S SCHEDULE
------------------------------------------------------------
• Team Meeting
⏰ 02:00 PM - 03:00 PM
📍 Conference Room A
📝 Weekly sync meeting
📊 You have 1 event(s) scheduled today
------------------------------------------------------------
📝 TODAY'S TASKS (Trello)
------------------------------------------------------------
• Review pull request
📋 Quest log → Weekly commitment
⏰ Due: 04:00 PM
🏷️ Development
🔗 https://trello.com/c/abc123/...
📊 You have 1 task(s) due today
============================================================
🔮 PREPARE FOR TOMORROW
📆 Saturday, November 15, 2025
------------------------------------------------------------
• Product Demo
⏰ 10:00 AM - 11:00 AM
📍 Main Office
📝 Demo new features to stakeholders
🎯 Preparation needed:
- Prepare slides and test equipment
- Practice presentation
- Review agenda and prepare talking points
📊 You have 1 event(s) tomorrow
============================================================
💡 TIPS
------------------------------------------------------------
🚨 You have overdue tasks - prioritize completing these first!
📋 Review tomorrow's schedule tonight
💧 Stay hydrated and take breaks!
============================================================
Intelligent preparation suggestions:
The agent analyzes your events and provides context-aware preparation suggestions:
- Meetings → Review agenda and prepare talking points
- Presentations → Prepare slides, test equipment, practice
- Interviews → Review resumes, prepare questions
- Training → Review materials, prepare questions
- Travel required → Check directions, book rooms
Automation tip: You can schedule this to run automatically:
- Windows: Use Task Scheduler
- Linux/Mac: Use cron job
Example cron entry (run daily at 7 AM):
0 7 * * * cd /path/to/proton-calendar-mcp && python daily_summary.py
Weekly Planner Agent
The project includes a weekly planner agent that analyzes the next month and suggests tasks for the upcoming week:
cd proton-calendar-mcp
python weekly_planner.py
Features:
- 📅 Monthly overview with 4 weeks of upcoming events and deadlines grouped by week
- ⚠️ Overdue tasks highlighted with urgent attention needed
- 📆 This week's complete schedule with preparation suggestions
- ✅ Intelligent task suggestions based on:
- Due dates and priorities
- Available time between calendar events
- Workload balance across the week
- 💡 Planning tips with workload assessment (busy/moderate/light week)
- 🎯 Preparation suggestions for important events (meetings, presentations, etc.)
Note: The weekly planner automatically loads configuration from the .env file, including Trello integration if configured.
Output Sections:
-
Monthly Overview (4 weeks):
- Events and tasks grouped by week
- Quick counts and highlights
- Helps identify busy vs. light weeks ahead
-
This Week's Focus:
- Overdue tasks requiring urgent attention
- Complete schedule with event details
- Preparation suggestions for meetings/presentations
- Intelligently suggested tasks with priority levels (🔴 urgent, 🟠 high, 🟡 medium, 🟢 normal)
-
Planning Tips:
- Workload assessment for the week
- Free days available for focused work
- Reminders to review and update tasks
Automation tip: Schedule this to run weekly (e.g., Sunday evening or Monday morning):
# Run weekly on Sunday at 8 PM
0 20 * * 0 cd /path/to/proton-calendar-mcp && python weekly_planner.py
Available Tools
Calendar Tools
get_today_events
Returns all events scheduled for today.
No parameters required
Example output:
Events for Today:
• Test Meeting
Time: 02:00 PM
Location: Conference Room A
Description: This is a test meeting
• Team Standup
Time: 10:00 AM
Location: Office
get_week_events
Returns all events scheduled for the next 7 days, grouped by date.
No parameters required
Example output:
Events for the Next Week:
Wednesday, November 13, 2025:
• Test Meeting (02:00 PM)
Location: Conference Room A
Thursday, November 14, 2025:
• Team Standup (10:00 AM)
Location: Office
get_date_range_events
Returns events within a specified date range.
Parameters:
start_date(string): Start date in YYYY-MM-DD formatend_date(string): End date in YYYY-MM-DD format
Example output:
Events from 2025-11-13 to 2025-11-20:
Wednesday, November 13, 2025:
• Test Meeting (02:00 PM)
Location: Conference Room A
Description: This is a test meeting
Trello Tools
Note: Trello tools are only available if Trello credentials are configured.
get_trello_cards_today
Returns all Trello cards due today.
No parameters required
Example output:
Trello Cards Due Today:
• Fix authentication bug
Board: Development → In Progress
Due: 02:00 PM
Labels: High Priority, Bug
Checklist: 2/5 completed
URL: https://trello.com/c/abc123
• Review pull request
Board: Development → Review
Due: 04:00 PM
Labels: Review
URL: https://trello.com/c/def456
get_trello_cards_tomorrow
Returns all Trello cards due tomorrow.
No parameters required
Output format: Same as get_trello_cards_today
get_trello_overdue_cards
Returns all overdue Trello cards with days overdue count.
No parameters required
Example output:
Overdue Trello Cards (3 total):
• Update documentation
Board: Documentation → To Do
Due: 2025-11-10 09:00 AM (3 days overdue)
Labels: Documentation
Checklist: 0/3 completed
URL: https://trello.com/c/ghi789
get_trello_cards_date_range
Returns Trello cards due within a specified date range.
Parameters:
start_date(string): Start date in YYYY-MM-DD formatend_date(string): End date in YYYY-MM-DD format
Example output:
Trello Cards Due 2025-11-13 to 2025-11-20:
Wednesday, November 13, 2025:
• Deploy to production
Board: Operations → Scheduled
Due: 02:00 PM
Labels: Deploy, Critical
Checklist: 5/7 completed
URL: https://trello.com/c/jkl012
Thursday, November 14, 2025:
• Team retrospective
Board: Team → Meetings
Due: 10:00 AM
URL: https://trello.com/c/mno345
Testing
Run the test suite to verify all functionality:
cd proton-calendar-mcp
pytest tests/ -v
All tests should pass:
37 passed in 2.5s
Test Coverage
The test suite includes:
Calendar Fetching Tests (11 tests):
- ✅ Successful calendar fetching
- ✅ HTTP error handling
- ✅ Invalid data handling
- ✅ Timeout handling
- ✅ Event formatting
- ✅ Date range filtering
- ✅ Today's events filtering
- ✅ Event sorting
- ✅ All-day event handling
Daily Summary Agent Tests (12 tests):
- ✅ Preparation analysis for meetings
- ✅ Preparation analysis for presentations
- ✅ Preparation analysis for interviews
- ✅ Location-based preparation
- ✅ Training event preparation
- ✅ Time formatting
- ✅ Event summary formatting
- ✅ Long description handling
- ✅ Multiline description handling
Trello Client Tests (14 tests):
- ✅ Client initialization and credentials
- ✅ Card formatting with all attributes
- ✅ Checklist progress tracking
- ✅ Label and attachment handling
- ✅ Date filtering (today, tomorrow, overdue)
- ✅ Date range filtering
- ✅ Card sorting by due date
- ✅ Edge cases (no due date, timezone handling)
Architecture
Components
MCP Server (server.py):
- fetch_calendar(): Async function to fetch and parse iCalendar data from URL
- format_event(): Extracts relevant information from calendar events
- filter_events_by_date_range(): Filters and sorts events by date
- Trello Integration: Optional Trello client for task management
- MCP Server: Exposes 3 calendar tools + 4 Trello tools (if configured) via MCP
Trello Client (trello_client.py):
- TrelloCardFetcher: Main client class for Trello API interaction
- get_cards_from_boards(): Fetches cards from specified boards
- filter_cards_by_due_date(): Filters and sorts cards by due date
- get_cards_due_today/tomorrow(): Convenience methods for common queries
- get_overdue_cards(): Identifies and returns past-due cards
- _format_card(): Extracts comprehensive card details (labels, checklists, etc.)
Daily Summary Agent (daily_summary.py):
- generate_daily_summary(): Creates comprehensive daily overview
- analyze_preparation_needs(): Intelligent preparation suggestions
- format_event_summary(): User-friendly event formatting
- Smart tips: Early morning alerts, back-to-back meeting warnings
Weekly Planner Agent (weekly_planner.py):
- generate_weekly_planner(): Creates comprehensive weekly/monthly overview
- calculate_weekly_workload(): Analyzes calendar density and free time
- suggest_weekly_tasks(): Intelligent task selection based on priorities and workload
- group_by_week(): Groups events and tasks into weekly buckets
- format_monthly_overview(): Creates 4-week lookahead summary
- Planning intelligence: Workload assessment and task distribution recommendations
Dependencies
mcp>=1.0.0- Official Model Context Protocol SDKicalendar>=6.0.0- RFC 5545 compliant iCalendar parserhttpx>=0.27.0- Modern async HTTP clientpy-trello>=0.19.0- Trello API client librarypython-dotenv>=1.0.0- Environment variable management from .env filespytest>=8.0.0- Testing frameworkpytest-asyncio>=0.23.0- Async support for pytest
Security & Privacy
- This server only has read-only access to your calendar and Trello boards
- Your calendar URL and Trello credentials should be kept private
- The MCP server runs locally on your machine
- No data is sent to third-party services except:
- Proton's servers to fetch your calendar
- Trello's API to fetch your cards (if configured)
- All credentials are passed via environment variables for security
- Trello integration is optional - works fine without it
Troubleshooting
Calendar Issues
"PROTON_CALENDAR_URL environment variable is not set"
- Make sure you've created the
.envfile in theproton-calendar-mcpdirectory - Verify the
.envfile contains thePROTON_CALENDAR_URLsetting - Check that the
.envfile is in the same directory asserver.py
"Error fetching calendar: [HTTP error]"
- Verify your calendar URL is correct
- Check that the URL is publicly accessible (test it in a browser)
- Ensure you have internet connectivity
- Make sure the calendar URL hasn't expired
Events not showing up
- Verify events exist in your Proton Calendar for the queried date range
- Check that the events are in the calendar you shared (not a different calendar)
- Ensure the shareable link is still active
Trello Issues
Trello tools not appearing
- Verify
TRELLO_API_KEYandTRELLO_TOKENare set in your.envfile - Check that the credentials are correct
- Restart the MCP server:
claude mcp remove proton-calendar -s localthen re-add it
"Error: Trello is not configured"
- This means the Trello credentials are missing or invalid in the
.envfile - Double-check your API key and token in
.env - Ensure the
.envfile is in the correct location (proton-calendar-mcpdirectory)
No cards returned from Trello
- Verify you have cards with due dates in your boards
- Check that
TRELLO_BOARD_IDS(if set) contains valid board IDs - Ensure your API token has read access to the boards
How to find Trello Board IDs:
- Open your Trello board in a browser
- Add
.jsonto the end of the URL:https://trello.com/b/BOARD_ID/board-name.json - Look for the
idfield in the JSON response - Use this ID in the
TRELLO_BOARD_IDSenvironment variable
General Issues
Tests failing If tests fail:
- Ensure all dependencies are installed:
pip install -r requirements.txt - Check Python version:
python --version(should be 3.8+) - Run tests with verbose output:
pytest tests/ -v -s
Server not responding
- Check that the server process is running
- Verify Claude Code is properly connected:
claude mcp list - Look for error messages in the server logs
Development
To test the server manually:
python server.py
The server will start and wait for MCP protocol messages on stdin.
Project Structure
proton-calendar-mcp/
├── server.py # Main MCP server implementation
├── trello_client.py # Trello API client module
├── daily_summary.py # Daily summary agent with intelligent prep suggestions
├── weekly_planner.py # Weekly planner agent with monthly overview
├── requirements.txt # Python dependencies
├── pytest.ini # Pytest configuration
├── .env # Centralized configuration file (create this, gitignored)
├── .env.example # Example configuration template
├── .gitignore # Git ignore rules
├── README.md # This file
└── tests/
├── test_calendar_fetch.py # Calendar MCP server test suite
├── test_daily_summary.py # Daily summary agent test suite
├── test_trello_client.py # Trello client test suite
└── test_server_trello_integration.py # Trello MCP integration tests
Limitations
Calendar Limitations
- Read-only: This server can only read calendar data, not create or modify events
- No CalDAV: Proton Calendar doesn't support CalDAV, so we use shareable URLs
- No API: Proton doesn't provide a public API, so this relies on .ics export
- Single calendar: Each server instance can only access one shared calendar
Trello Limitations
- Read-only: This server can only read Trello cards, not create or modify them
- Due dates only: Only cards with due dates are returned by the filtering functions
- No webhooks: The server polls Trello on each request (no real-time updates)
- Rate limits: Trello API has rate limits (300 requests per 10 seconds per token)
Future Enhancements
Potential improvements:
- Support for multiple Proton calendars
- Caching to reduce API calls for both services
- Event/card search by keywords
- Support for recurring events
- Write capabilities for Trello (create/update cards)
- Trello card comments and activity
- Export data to different formats
- Integration with other task management systems
License
MIT
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Credits
Built with:
- Model Context Protocol by Anthropic
- icalendar library
- httpx async HTTP client