使用说明
MCP全服务器
一个生产就绪的MCP(模型上下文协议)服务器,用于通过电子邮件提醒进行任务管理,托管在Cloudflare Workers上。
✨ 特性
- 📝 完整的CRUD操作 -创建、读取、更新和删除任务
- ⏰ 智能提醒 -截止日期前可定制的电子邮件提醒
- 🌍 多时区支持 -服务器使用UTC,用户看到他们的本地时间
- 👥 多用户 -每个用户的独立数据(通过电子邮件标识)
- 📧 电子邮件通知 -漂亮的HTML电子邮件模板
- 🔄 自动过期 -自动任务过期检测
- 🚀 边缘计算 -部署在Cloudflare Workers(全球CDN)上
- 💾 SQLite数据库 -Cloudflare D1实现可靠存储
- 🔐 安全 -基于环境的秘密管理
🏗️ 建筑
AI Client (Claude/Kiro/etc)
↓ SSE (Server-Sent Events)
MCP Server (Cloudflare Workers)
↓
Database (Cloudflare D1 - SQLite)
↓
Cron Jobs (Every 5 minutes)
↓
Email Service (Resend/SendGrid)
🚀 快速开始
先决条件
- Node.js 18+
- Cloudflare帐户(免费版有效)
- 电子邮件服务帐户(建议重新发送或SendGrid)
1.克隆和安装
git clone https://github.com/chenjiahui-offical/mcp-todo-server.git
cd mcp-todo-server
npm install
2.部署
# Install Wrangler CLI
npm install -g wrangler
# Login to Cloudflare
wrangler login
# Create D1 database
wrangler d1 create mcp-todo-db
# Update wrangler.toml with the database_id from above
# Initialize database
wrangler d1 execute mcp-todo-db --remote --file=./schema.sql
# Set secrets
echo "your_resend_api_key" | wrangler secret put SMTP_PASS
echo "noreply@yourdomain.com" | wrangler secret put SMTP_FROM_EMAIL
# Deploy
npm run deploy
3.配置您的AI客户端
看 MCP_CLIENT_CONFIG.md 有关以下内容的详细配置说明:
- 克劳德桌面
- 开发 IDE
- Cline(VS代码)
- 继续(VS代码)
- 定制客户
快速示例(VS代码):
{
"mcpServers": {
"todo": {
"url": "https://your-worker.workers.dev/sse",
"transport": "sse",
"env": {
"USER_EMAIL": "your-email@example.com",
"USER_TIMEZONE": "Asia/Shanghai"
}
}
}
}
📖 文档
- QUICKSTART.md -5分钟部署指南
- 部署.md -详细的部署说明
- MCP_CLIENT_CONFIG.md -各种AI工具的客户端配置
- 项目_奥维德.md -架构和技术细节
🛠️ MCP工具
| 工具 | 说明 |
|---|---|
get_server_time |
获取用户时区中的当前服务器时间 |
add_todo |
创建带有提醒的新任务 |
list_todos |
列出所有任务(带过滤器) |
get_todo |
获取特定任务的详细信息 |
update_todo |
更新任务信息 |
delete_todo |
删除任务 |
mark_complete |
将任务标记为已完成/未完成 |
💬 用法示例
添加任务
Add a task:
- Title: Complete project report
- Description: Include data analysis and conclusions
- Deadline: tomorrow at 3 PM
- Remind me 1 hour before
- Priority: high
- Tags: work, important
列出任务
Show all my pending tasks
更新任务
Change the deadline of "Complete project report" to next Friday at 5 PM
标记完成
Mark "Complete project report" as completed
🗄️ 数据库模式
用户表
CREATE TABLE users (
email TEXT PRIMARY KEY,
timezone TEXT NOT NULL DEFAULT 'UTC',
created_at INTEGER NOT NULL
);
全部 表格
CREATE TABLE todos (
id TEXT PRIMARY KEY,
user_email TEXT NOT NULL,
title TEXT NOT NULL,
description TEXT,
deadline_utc INTEGER NOT NULL,
remind_before_minutes INTEGER NOT NULL DEFAULT 60,
priority TEXT DEFAULT 'medium',
tags TEXT,
is_completed INTEGER DEFAULT 0,
is_expired INTEGER DEFAULT 0,
reminder_sent INTEGER DEFAULT 0,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
FOREIGN KEY (user_email) REFERENCES users(email)
);
⚙️ 配置
环境变量
通过设置 wrangler secret put:
SMTP_PASS-电子邮件服务API密钥(重新发送/发送网格)SMTP_FROM_EMAIL-发件人电子邮件地址
牧马人.汤姆
name = "mcp-todo-server"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[d1_databases]]
binding = "DB"
database_name = "mcp-todo-db"
database_id = "your-database-id"
[triggers]
crons = ["*/5 * * * *"] # Every 5 minutes
[vars]
SMTP_HOST = "api.resend.com"
SMTP_PORT = "443"
SMTP_FROM_NAME = "MCP Todo Reminder"
🔧 发展
地方发展
npm run dev
运行测试
./scripts/test-api.sh http://localhost:8787
查看日志
wrangler tail
查询数据库
wrangler d1 execute mcp-todo-db --remote --command "SELECT * FROM todos"
📊 项目结构
mcp-todo-server/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── db.ts # Database operations
│ ├── email.ts # Email sending
│ ├── cron.ts # Scheduled tasks
│ ├── timezone.ts # Timezone utilities
│ └── types.ts # TypeScript types
├── scripts/
│ ├── setup.sh # Setup automation
│ └── test-api.sh # API testing
├── schema.sql # Database schema
├── wrangler.toml # Cloudflare config
├── package.json # Dependencies
└── README.md # This file
🔐 安全
- 基于电子邮件的用户标识
- 每个用户的数据隔离
- HTTPS加密(Cloudflare默认)
- 基于环境的秘密
- 无需身份验证(电子邮件作为标识符)
生产建议:
- 添加API令牌身份验证
- 实施速率限制
- 添加审核日志记录
- 使用CORS白名单
🌍 时区处理
- 服务器:所有时间均以UTC存储
- 用户:以用户配置的时区显示的时间
- 转换:自动双向转换
- 格式:IANA时区数据库(例如“亚洲/上海”)
📧 电子邮件服务设置
使用重新发送(推荐)
- 注册地址:https://resend.com
- 验证您的域名
- 获取API密钥
- 更新
src/email.ts(已配置为重新发送)
使用SendGrid
- 注册地址:https://sendgrid.com
- 获取API密钥
- 更新
src/email.ts使用SendGrid API
看 部署.md 详细说明。
🐛 故障排除
数据库连接失败
# Check database ID in wrangler.toml
wrangler d1 list
# Verify tables exist
wrangler d1 execute mcp-todo-db --remote --command "SELECT name FROM sqlite_master WHERE type='table'"
电子邮件未发送
# Check logs
wrangler tail
# Verify email service configuration
# Check src/email.ts implementation
时区问题
- 使用IANA格式:“亚洲/上海”✅
- 请勿使用:“GMT+8”❌
- 完整列表:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
📈 演出
- Cloudflare员工:全球边缘网络
- D1数据库:使用索引优化SQLite
- 工作排程:高效的5分钟间隔
- 电子邮件:带有重试逻辑的异步发送
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
📄 许可证
MIT许可证-请参阅 许可证 详细信息文件
🙏 致谢
📞 支持
🗺️ 路线图
- []API令牌身份验证
- []任务类别和筛选器
- []重复任务
- []任务附件
- []任务共享
- []统计和报告
- []移动应用程序集成
- []Webhook支持
由...制作❤️ 对于MCP社区
如果你觉得这个项目有用,请⭐ 把它放在GitHub上!