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 三种传输方式,适应不同客户端
🚀 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 模式
测试 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
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Enables sending messages and scheduling reminders through multiple platforms including Telegram and Feishu. Supports real-time messaging and cron-based scheduled notifications with comprehensive logging and error handling.