Enables sending messages through Telegram bots, including scheduled messaging with cron expressions and automatic reminders
MCP 消息提醒服务
基于 Model Context Protocol (MCP) 的消息发送和定时提醒服务,使用官方 MCP Python SDK 实现,支持 Telegram、飞书等多种消息平台。
✨ 功能特点
🔌 MCP 协议: 基于官方 MCP Python SDK,完全符合 MCP 规范
🌐 多传输支持: stdio、HTTP、SSE、both 四种传输方式,适应不同客户端
🚀 FastMCP: 使用官方 FastMCP 提供高性能 API 接口
📱 多平台消息: 支持 Telegram、飞书等多种消息平台
⏰ 定时任务: 基于 Cron 表达式的定时消息发送
🎯 最佳实践: 符合 Python 项目最佳实践和 MCP Server 规范
🐳 容器化部署: 完整的 Docker 支持,一键部署
📝 完善日志: 结构化日志记录,支持日志轮转
🔄 自动重试: 智能错误处理和重试机制
⚡ 异步处理: 高性能异步架构,支持并发发送
🛠️ 开发友好: 完整的开发工具链和测试支持
快速开始
1. 配置 Telegram(可选)
在 Telegram 中找到 @BotFather
发送
/newbot命令创建新机器人按提示设置机器人名称和用户名
获取 Bot Token
在 Telegram 中找到 @userinfobot
发送任意消息获取你的 Chat ID
2. 配置飞书(可选)
在飞书群聊中添加自定义机器人
获取 Webhook URL
如果配置了签名验证,获取签名密钥
3. 配置环境变量
复制 env.example 文件并填入你的配置:
编辑 .env 文件:
注意: 至少需要配置一个消息发送平台(Telegram 或飞书),程序才能正常运行。
4. 本地运行
本地模式(用于 Cursor MCP)
HTTP API 模式
SSE 模式
双模式(HTTP + SSE)
测试 HTTP API
5. Docker 运行
6. Docker Compose 运行
创建 docker-compose.yml 文件:
运行:
配置说明
环境变量
变量名 | 说明 | 必需 |
| Telegram Bot Token | 否* |
| 接收消息的 Chat ID | 否* |
| 飞书机器人 Webhook URL | 否* |
| 飞书机器人签名密钥 | 否 |
*至少需要配置 Telegram 或飞书中的一个平台
自定义消息
如需修改提醒消息,可以编辑 telegram_reminder.py 文件中的 self.message 变量:
日志
脚本会生成详细的日志文件 telegram_reminder.log,包含:
服务启动/停止信息
下次提醒时间计算
消息发送状态
错误信息和重试记录
故障排除
常见问题
消息发送失败
检查 Bot Token 是否正确
确认 Chat ID 是否正确
确保机器人已添加到对话中
时间不准确
脚本使用北京时间(UTC+8)
容器时区已设置为 Asia/Shanghai
容器无法启动
检查环境变量是否正确设置
查看容器日志:
docker logs telegram-reminder
查看日志
🏗️ 系统架构
核心组件
SimpleMCPServer: 基于官方 MCP SDK 的简化服务器,处理工具调用(本地模式)
FastMCPServer: 基于官方 FastMCP 的 HTTP 服务器,提供高性能 API 接口
HTTPServer: 传统 HTTP 模式服务器,提供 RESTful API
MessageTools: 消息发送工具,支持单平台和全平台发送
SchedulerTools: 定时任务工具,基于 Cron 表达式
MessageSender: 消息发送管理器,管理多个提供商
🛠️ 开发指南
本地开发
添加新的消息提供商
在
reminder/providers/目录下创建新的提供商文件继承
MessageProvider基类实现
send_message和is_configured方法在
MessageSender中添加初始化逻辑
示例:
🚀 部署
使用 Makefile 一键部署
手动部署
📊 监控和日志
日志文件: 支持日志轮转,默认保留 5 个备份文件
日志级别: 可通过
LOG_LEVEL环境变量配置连接测试: 使用
python main.py test测试所有提供商连接
🧪 测试
技术实现
异步处理: 使用
asyncio和aiohttp实现高性能异步处理时区处理: 正确处理北京时间时区
错误处理: 完善的异常处理和重试机制
日志记录: 结构化日志记录,支持日志轮转
配置管理: 基于 dataclass 的类型安全配置
测试覆盖: 完整的单元测试和集成测试
许可证
MIT License
This server cannot be installed