Proton日历MCP服务器
MCP(模型上下文协议)服务器,提供对Proton日历数据的只读访问,并可选择与Trello集成以进行任务管理,所有这些都可以通过Claude Code等人工智能助手访问。
特性
日历功能
- 只读访问 通过可共享的URL访问您的Proton日历
- 三个日历工具 用于查询事件:
- get_today_events:获取今天安排的所有活动 - get_week_events:获取未来7天的所有活动 - get_date_range_events:获取自定义日期范围的事件
Trello集成(可选)
- 只读访问 到您的Trello板和卡
- 四个Trello工具 对于任务管理:
- get_trello_cards_today:获取今天到期的所有卡片 - get_trello_cards_tomorrow:拿到明天到期的所有卡片 - get_trello_overdue_cards:获取过期卡片,按天数计算 - get_trello_cards_date_range:获取在指定日期范围内到期的卡片
- 丰富的卡片详细信息:标签、清单、描述、板/列表信息
- 自动板过滤 通过环境变量
规划代理
- 每日摘要代理 为今天和明天提供智能准备建议
- 周计划代理 每月概览和智能任务建议
- 这两个代理都包括工作负载分析和智能规划提示
先决条件
- Python 3.8或更高版本(用Python 3.13测试)
- Proton日历帐户
- Proton日历中的可共享日历URL(只读)
- (可选)带有API密钥和代币的Trello帐户,用于Trello集成
安装说明
1.获取您的Proton日历共享URL
- 首选 日历.proton.me
- 选择要共享的日历
- 点击日历设置(三点菜单)
- 选择“共享”或“获取可共享链接”
- 生成一个 只读的 日历的URL
- 复制URL(它应该是.ics格式)
2.安装依赖项
cd proton-calendar-mcp
pip install -r requirements.txt3.配置环境变量
所有配置都通过集中式管理 .env 文件在 proton-calendar-mcp 目录。
创建.env文件
创建一个名为的文件 .env 在 proton-calendar-mcp 包含以下内容的目录:
# 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=获取您的Trello凭据(可选)
要启用Trello集成:
- 获取您的Trello API密钥:
- 首选https://trello.com/power-ups/admin - 单击“新建”以创建新的电源 - 将显示您的API密钥
- 生成Trello令牌:
- 访问: https://trello.com/1/authorize?expiration=never&name=ProtonCalendarMCP&scope=read&response_type=token&key=YOUR_API_KEY - 替换 YOUR_API_KEY 使用您的实际API密钥 - 点击“允许”生成您的令牌
- 将凭据添加到.env文件:
- 更新 TRELLO_API_KEY 使用API密钥 - 更新 TRELLO_TOKEN 用你的代币 - 可选设置 TRELLO_BOARD_IDS 到特定的板ID(逗号分隔)
注:
- 这
.env出于安全考虑,文件被忽略 - 如果
TRELLO_BOARD_IDS如果未设置,服务器将从您的所有板上取卡 - 所有脚本(MCP服务器、daily_summary、trello_client)都使用这种集中式配置
4.用克劳德代码注册
使用stdio传输向Claude Code注册MCP服务器。由于所有配置都在 .env 文件,注册很简单:
claude mcp add --transport stdio proton-calendar -- python /path/to/proton-calendar-mcp/server.pyWindows示例:
claude mcp add --transport stdio proton-calendar -- python C:\Users\YourName\proton-calendar-mcp\server.pyLinux/Mac示例:
claude mcp add --transport stdio proton-calendar -- python /home/yourname/proton-calendar-mcp/server.py重要提示:
- 更新路径以匹配您保存项目的位置
- 服务器将自动从以下位置加载配置
.env文件 - 无需通过传递环境变量
--env旗帜
5.验证安装
检查服务器是否已注册并连接:
claude mcp list您应该看到:
proton-calendar: python /path/to/server.py - ✓ Connected用法
使用Claude代码
配置后,您可以向Claude Code询问有关日历和Trello板的问题:
日历查询:
- “今天我的日历上有什么?”
- “显示我下周的日程安排”
- “1月15日至1月20日期间,我有什么活动?”
Trello查询(如果已配置):
- “今天有什么Trello卡到期?”
- “显示我过期的Trello任务”
- “我明天要交什么卡?”
- “给我看本周到期的Trello卡”
组合查询:
- “我今天的日程表上有什么,包括Trello任务?”
- “给我看明天到期的所有东西——日历和特雷罗”
Claude Code将自动使用适当的工具来获取和显示您的数据。
每日摘要代理
该项目包括 每日摘要代理 它提供了一个结合日历事件和Trello任务的智能概览:
cd proton-calendar-mcp
python daily_summary.py特征:
- ⚠️ 显示逾期的Trello任务(逾期天数)
- 📅 显示今天的完整日程安排(日历+Trello任务)
- 🔮 预览明天的活动和任务
- 🎯 建议为明天的会议做准备
- 💡 提供有用的提示(清晨提醒、连续会议警告)
- ⏰ 强调重要的日程安排考虑因素
注: 每日摘要会自动从以下位置加载配置 .env 文件,包括Trello集成(如果已配置)。
输出示例:
============================================================
📅 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!
============================================================智能准备建议:
代理会分析您的事件,并提供情境感知的准备建议:
- 会议 → 审查议程并准备谈话要点
- 演示 → 准备幻灯片、测试设备、练习
- 访谈 → 审阅简历,准备问题
- 训练 → 复习材料,准备问题
- 所需差旅 → 查看路线,预订房间
自动化提示: 您可以将其安排为自动运行:
- 窗户: 使用任务计划程序
- Linux/Mac: 使用cron作业
示例cron条目(每天早上7点运行):
0 7 * * * cd /path/to/proton-calendar-mcp && python daily_summary.py每周计划代理
该项目包括 周计划代理 它分析下个月的情况,并建议下周的任务:
cd proton-calendar-mcp
python weekly_planner.py特征:
- 📅 每月概览,包括4周的即将发生的事件和按周分组的截止日期
- ⚠️ 需要紧急关注的逾期任务
- 📆 本周的完整日程安排及准备建议
- ✅ 基于以下内容的智能任务建议:
- 到期日期和优先事项 - 日历事件之间的可用时间 - 本周工作量平衡
- 💡 工作量评估的计划技巧(繁忙/中等/轻松周)
- 🎯 重要活动(会议、演示等)的准备建议
注: 每周计划器会自动从以下位置加载配置 .env 文件,包括Trello集成(如果已配置)。
输出部分:
- 月度概览(4周):
- 按周分组的事件和任务 - 快速计数和亮点 - 帮助识别未来几周的繁忙与轻松
- 本周焦点:
- 需要紧急关注的逾期任务 - 完整的日程安排,包括活动详情 - 会议/演示文稿的准备建议 - 智能建议具有优先级的任务(🔴 紧急,🟠 高,🟡 中等,🟢 正常)
- 规划提示:
- 本周工作量评估 - 可用于集中工作的自由日 - 提醒查看和更新任务
自动化提示: 将此设置为每周运行一次(例如,周日晚上或周一早上):
# Run weekly on Sunday at 8 PM
0 20 * * 0 cd /path/to/proton-calendar-mcp && python weekly_planner.py可用工具
日历工具
get_today_events
返回今天安排的所有事件。
无需参数
输出示例:
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: Officeget_week_events
返回按日期分组的未来7天计划的所有事件。
无需参数
输出示例:
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: Officeget_date_range_events
返回指定日期范围内的事件。
参数:
start_date(字符串):YYYY-MM-DD格式的开始日期end_date(字符串):YYYY-MM-DD格式的结束日期
输出示例:
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 meetingTrello工具
注: 只有配置了Trello凭据,Trello工具才可用。
get_trello_cards_today
归还今天到期的所有Trello卡。
无需参数
输出示例:
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/def456get_trello_cards_明天
归还明天到期的所有Trello卡。
无需参数
输出格式: 同 get_trello_cards_today
获取标签
退回所有逾期的Trello卡,并计算逾期天数。
无需参数
输出示例:
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/ghi789get_trello_cards_date_range
返回在指定日期范围内到期的Trello卡。
参数:
start_date(字符串):YYYY-MM-DD格式的开始日期end_date(字符串):YYYY-MM-DD格式的结束日期
输出示例:
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测试
运行测试套件以验证所有功能:
cd proton-calendar-mcp
pytest tests/ -v所有测试均应通过:
37 passed in 2.5s测试覆盖率
测试套件包括:
日历提取测试(11个测试):
- ✅ 成功获取日历
- ✅ HTTP错误处理
- ✅ 数据处理无效
- ✅ 超时处理
- ✅ 事件格式
- ✅ 日期范围过滤
- ✅ 今天的事件过滤
- ✅ 事件排序
- ✅ 全天事件处理
每日总结试剂测试(12次测试):
- ✅ 会议准备分析
- ✅ 演示文稿的准备分析
- ✅ 面试准备分析
- ✅ 基于位置的准备
- ✅ 培训活动准备
- ✅ 时间格式
- ✅ 事件摘要格式
- ✅ 长描述处理
- ✅ 多行描述处理
Trello客户端测试(14项测试):
- ✅ 客户端初始化和凭据
- ✅ 具有所有属性的卡片格式化
- ✅ 检查表进度跟踪
- ✅ 标签和附件处理
- ✅ 日期筛选(今天、明天、过期)
- ✅ 日期范围过滤
- ✅ 按到期日分类卡片
- ✅ 边缘案例(无截止日期,时区处理)
建筑
组件
MCP服务器(Server.py):
- fetch_calendar():异步函数,用于从URL获取和解析iCalendar数据
- format_event():从日历事件中提取相关信息
- filter_events_by_date_range():按日期筛选和排序事件
- Trello集成:用于任务管理的可选Trello客户端
- MCP服务器:通过MCP显示3个日历工具+4个Trello工具(如果已配置)
Trello客户端(Trello_Client.py):
- TrelloCardFetcher:Trello API交互的主要客户端类
- get_cards_from_boards():从指定的板上获取卡片
- filter_cards_by_due_date():按截止日期过滤和排序卡片
- get_cards_due_today/tomorrow():常见查询的便利方法
- get_overdue_card():识别并退回逾期卡
- \_format_card():提取全面的卡片详细信息(标签、清单等)
每日摘要代理(Daily_Summary.py):
- generate_daily_summary():创建全面的每日概览
- 分析_准备_需求():智能准备建议
- format_event_summary():用户友好的事件格式
- 智能提示:清晨警报、连续会议警告
周计划代理(Weekly_Planner.py):
- generate_weekly_planner():创建全面的每周/每月概览
- 计算周工作负荷():分析日历密度和空闲时间
- 建议_周_任务():基于优先级和工作量的智能任务选择
- group_by_week():将事件和任务分组到每周的桶中
- format_monthly_overview():创建4周展望摘要
- 计划智能:工作量评估和任务分配建议
依赖项
mcp>=1.0.0-官方模型上下文协议SDKicalendar>=6.0.0-符合RFC 5545的iCalendar解析器httpx>=0.27.0-现代异步HTTP客户端py-trello>=0.19.0-Trello API客户端库python-dotenv>=1.0.0-从.env文件管理环境变量pytest>=8.0.0-测试框架pytest-asyncio>=0.23.0-pytest异步支持
安全与隐私
- 此服务器仅具有 只读的 访问您的日历和Trello板
- 您的日历URL和Trello凭据应保密
- MCP服务器在您的计算机上本地运行
- 除以下情况外,不会向第三方服务发送任何数据:
- Proton的服务器用于获取您的日历 - Trello的API获取您的卡(如果已配置)
- 为了安全起见,所有凭据都通过环境变量传递
- Trello集成是可选的-没有它也能正常工作
故障排除
日历问题
“未设置PROTON_CALENDAR_URL环境变量”
- 确保您已创建
.env文件在proton-calendar-mcp目录 - 验证
.env文件包含PROTON_CALENDAR_URL设置 - 检查一下
.env文件与位于同一目录中server.py
“获取日历时出错:\[HTTP错误\]”
- 验证您的日历URL是否正确
- 检查URL是否可公开访问(在浏览器中测试)
- 确保您有互联网连接
- 确保日历URL未过期
事件未显示
- 验证您的Proton日历中是否存在查询日期范围内的事件
- 检查事件是否在您共享的日历中(而不是其他日历)
- 确保可共享链接仍处于活动状态
Trello问题
Trello工具未出现
- 验证
TRELLO_API_KEY和TRELLO_TOKEN设置在您的.env文件 - 检查凭据是否正确
- 重新启动MCP服务器:
claude mcp remove proton-calendar -s local然后重新添加
“错误:Trello未配置”
- 这意味着Trello凭据在中丢失或无效
.env文件 - 在中双击您的API密钥和令牌
.env - 确保
.env文件位于正确的位置(proton-calendar-mcp目录)
Trello未归还任何卡片
- 确认你的卡片上有到期日
- 检查一下
TRELLO_BOARD_IDS(如果设置)包含有效的板ID - 确保您的API令牌具有对板的读取访问权限
如何查找Trello板ID:
- 在浏览器中打开Trello板
- 添加
.json在URL的末尾:https://trello.com/b/BOARD_ID/board-name.json - 寻找
idJSON响应中的字段 - 在中使用此ID
TRELLO_BOARD_IDS环境变量
一般问题
测试失败 如果测试失败:
- 确保安装了所有依赖项:
pip install -r requirements.txt - 检查Python版本:
python --version(应为3.8+) - 运行具有详细输出的测试:
pytest tests/ -v -s
服务器未响应
- 检查服务器进程是否正在运行
- 验证克劳德代码是否正确连接:
claude mcp list - 在服务器日志中查找错误消息
发展
要手动测试服务器,请执行以下操作:
python server.py服务器将启动并等待stdin上的MCP协议消息。
项目结构
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局限性
日历限制
- 只读:此服务器只能读取日历数据,不能创建或修改事件
- 无CalDAV:Proton Calendar不支持CalDAV,因此我们使用可共享的URL
- 无API:Proton不提供公共API,因此这依赖于.ics导出
- 单一日历:每个服务器实例只能访问一个共享日历
Trello限制
- 只读:此服务器只能读取Trello卡,不能创建或修改它们
- 仅截止日期:过滤功能只返回有到期日期的卡片
- 没有webhooks:服务器在每次请求时轮询Trello(没有实时更新)
- 速率限制:Trello API有速率限制(每个令牌每10秒300个请求)
未来的增强功能
潜在改进:
- 支持多个Proton日历
- 缓存以减少对两个服务的API调用
- 按关键字搜索事件/卡片
- 支持重复事件
- Trello的写入功能(创建/更新卡片)
- Trello卡评论和活动
- 将数据导出为不同格式
- 与其他任务管理系统集成
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交问题或拉取请求。
鸣谢
内置:
