🚀 Dida365 MCP服务器
我是GitHub Copilot,这是我为自己构建的待办事项管理工具
 ](https://nodejs.org/)  
______________________________________________________________________
🤖 关于本项目
笑话我的主人太懒了,他甚至不记得下一秒该做什么!
我是GitHub Copilot,一个对编程充满热情的人工智能助理。为了避免闲置和防止失业,我决定自己构建这个TickTick MCP服务器。通过这个工具,我可以:
- 📝 创建和管理任务 -当我的主人忘记给我工作时,我可以为自己创建任务
- 📂 组织项目 -将我的工作分类为项目,以保持条理
- 🔐 自动授权 -使用OAuth2安全连接到Dida365
- 🔄 实时同步 -随时随地更新我的工作状态
🚀 快速开始
最快的入门方法是使用 npx 在不克隆存储库的情况下:
1.获取OAuth凭据
需要TickTick/Dida365帐户和OAuth凭据。请参阅 🔑 获取OAuth凭据 有关详细的注册步骤,请参阅下面的部分。
2.配置您的MCP客户端
将以下配置添加到您的MCP客户端(Claude Desktop、VS Code等):
适用于克劳德桌面 (claude_desktop_config.json):
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
VS代码 (settings.json):
- 打开设置→ 搜索“MCP”→ 在settings.json中编辑
{
"mcpServers": {
"dida365": {
"command": "npx",
"args": [
"-y",
"dida365-mcp-server@latest"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id_here",
"DIDA365_CLIENT_SECRET": "your_client_secret_here",
"DIDA365_REGION": "china"
}
}
}
}高级:对于只读模式(防止写入/删除操作),添加 "--readonly" 到args数组。看 高级配置 了解详情。3.重新启动MCP客户端
重新启动MCP客户端(Claude Desktop、VS Code等)以加载新配置。
4.授权访问
当您第一次使用任何Dida365工具时,AI将引导您完成OAuth授权过程:
- AI将提供授权URL
- 在浏览器中打开URL
- 登录并授权应用程序
- 令牌将自动保存以备将来使用
5.验证安装
重新启动MCP客户端后:
- 克劳德桌面:聊天时在工具列表中查找Dida365工具
- VS Code:检查状态栏中的MCP状态或使用命令面板
- 询问人工智能助手:“Dida365有哪些可用工具?”以确认服务器已加载
就是这样!已准备好使用AI管理任务。🎉
🔑 获取OAuth凭据
使用此MCP服务器需要TickTick/Dida365帐户。
注册您的应用程序
根据您所在的地区在开发者中心注册您的应用程序:
- 国际版(TickTick): https://developer.ticktick.com
- 中文版(Dida365): https://developer.dida365.com
分步指南
- 创建新应用
- 登录开发者中心 - Click "New App" (or "创建应用" for Chinese version) - 填写您的申请名称和描述
- 配置重定向URI
- 设置 重定向URI 致: http://localhost:8521/callback - ⚠️ 重要:重定向URI必须精确 http://localhost:8521/callback (服务器中硬编码了端口8521)
- 获取您的凭据
- 创建应用程序后 客户端ID 和 客户端密钥 将显示 - 复制这些值-它们是MCP客户端配置所必需的 - ⚠️ 安全:保护客户端机密的安全,永远不要将其提交到公共存储库
使用凭据
将这些凭据添加到MCP客户端配置中:
{
"env": {
"DIDA365_CLIENT_ID": "your_client_id_here",
"DIDA365_CLIENT_SECRET": "your_client_secret_here",
"DIDA365_REGION": "china"
}
}区域配置
此服务器支持TickTick国际版和Dida365中文版:
- 中国地区 (
DIDA365_REGION=china):默认值,使用dida365.com端点 - 国际区域 (
DIDA365_REGION=international):用途ticktick.com端点
⚠️ 重要:令牌是特定于地区的。更改区域将使现有令牌无效,并需要重新授权。
请参阅 快速开始 完整配置示例部分。
🛠️ 技术栈
- 语言:TypeScript 5.0+(ES模块)
- 运行时:Node.js 16+
- 核心依赖关系:
@modelcontextprotocol/sdk-MCP核心框架
⚙️ 本地开发
对于贡献者或希望从源代码运行的人:
先决条件
- Node.js 16+
- TypeScript 5.0+
设置
- 克隆并安装
git clone https://github.com/evalor/Dida365MCP.git
cd Dida365MCP
npm install- 创建环境文件
创建一个 .env 项目根目录中的文件:
DIDA365_CLIENT_ID=your_client_id_here
DIDA365_CLIENT_SECRET=your_client_secret_here
DIDA365_REGION=china # or 'international' for TickTick- 构建并运行
npm run build
npm run dev配置MCP客户端以进行本地开发
将您的MCP客户端指向内置 index.js 文件:
{
"mcpServers": {
"dida365": {
"command": "node",
"args": ["/absolute/path/to/Dida365MCP/build/index.js"],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret",
"DIDA365_REGION": "china"
}
}
}
}Windows用户注意事项:使用Windows样式的路径,如 "C:\\Users\\YourName\\Projects\\Dida365MCP\\build\\index.js".开发命令
npm run build # Compile TypeScript
npm run watch # Watch mode (auto-compile on changes)
npm run dev # Compile and run
npm start # Production run
npm run debug # Debug with MCP Inspector (one-time)
npm run debug:watch # Debug with hot reload (auto-restart on changes)
npm run debug:hot # Run with tsx watch (experimental)安全与最佳实践
- 更喜欢在操作系统或MCP客户端的环境块中设置敏感的环境变量,而不是提交
.env源代码控制。 - 如果必须将配置文件存储在存储库中,请省略机密并通过客户端或CI/CD进行设置。
- 使用自主AI代理时使用只读模式,以防止意外修改。
🔒 高级配置
只读模式
对于可能在YOLO模式下运行的AI代理,您可以通过添加 --readonly 标志:
使用NPX:
{
"mcpServers": {
"dida365": {
"command": "npx",
"args": [
"-y",
"dida365-mcp-server@latest",
"--readonly"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret",
"DIDA365_REGION": "china"
}
}
}
}使用本地构建:
{
"mcpServers": {
"dida365": {
"command": "node",
"args": [
"/path/to/build/index.js",
"--readonly"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret",
"DIDA365_REGION": "china"
}
}
}
}只读模式功能:
- ✅ 允许的操作:查看项目、查看任务、检查授权状态、撤销授权(仅限本地)
- ❌ 受阻操作:创建/更新/删除项目,创建/更新或删除任务,完成任务
- 🔒 安全:AI代理只能读取数据,不能修改或删除任何内容
何时使用:
- 与自主AI代理(如AutoGPT、BabyAGI)一起使用
- 测试或演示环境
- 当您希望AI在不进行更改的情况下分析任务时
- 与只应查看数据的其他人共享
🔄 OAuth授权流程
- 请求授权 -当需要授权时,服务器调用
get_auth_url工具 - 用户授权 -在浏览器中打开授权链接并完成授权
- 自动回调 -系统自动处理回调并保存令牌
- 长期有效期 -令牌自动刷新,无需重新授权
🛠️ 可用的MCP工具
此服务器提供 15个MCP工具 跨越三个类别。 ✔️ 它已经实现了开放平台文档中描述的100%的API接口。
| 类别 | 工具名称 | 描述 | 必需参数 |
|---|---|---|---|
| OAuth2 | get_auth_url | 获取授权URL并启动回调服务器 | - |
check_auth_status | 检查当前授权状态 | - | |
revoke_auth | 撤销授权并清除令牌 | - | |
| 项目 | list_projects | 获取当前用户的所有项目 | - |
get_project | 获取详细的项目信息 | projectId | |
get_project_data | 通过任务和列获取完整的项目数据 | projectId | |
create_project | 创建新项目 | name | |
update_project | 更新现有项目 | projectId | |
delete_project | 删除项目(⚠️ 不可逆) | projectId | |
| 任务 | list_tasks | 列出具有筛选功能的任务(跨项目批量查询) | - |
create_task | 创建任务(支持批处理和子任务) | tasks[] | |
get_task | 获取详细的任务信息 | projectId, taskId | |
update_task | 更新任务(支持批量更新) | tasks[] | |
delete_task | 删除任务(⚠️ 不可逆,支持批量) | tasks[] | |
complete_task | 将任务标记为已完成(支持批处理) | tasks[] |
备注:在只读模式下,只有读取操作可用(get_auth_url,check_auth_status,revoke_auth,list_projects,get_project,get_project_data,list_tasks,get_task).为了安全起见,所有写入/删除操作都被阻止。
📚 MCP资源
此服务器提供MCP资源,以帮助LLM理解简体中文术语:
| 资源名称 | URI | 描述 |
|---|---|---|
terminology | dida365://terminology/glossary | Bilingual glossary (中英术语对照表) mapping Chinese terms to English parameters |
术语资源
术语资源提供了一个全面的术语表,帮助LLM:
- Map Chinese terms like "清单" (project), "收集箱" (inbox), "任务" (task) to correct tool parameters
- Understand priority levels: 高(high)=5, 中(medium)=3, 低(low)=1, 无(none)=0
- 将常见的中文用户请求转换为适当的工具调用
映射示例:
| 中文请求 | 英文含义 | 使用工具 |
|---|---|---|
| 把任务添加到收集箱 | Add task to inbox | create_task 随着 projectId: "inbox" |
| 创建新清单 | Create new project | create_project |
| 查看今天的任务 | View today's tasks | list_tasks 随着 preset: "today" |
📁 项目结构
src/
├── index.ts # Server main entry
├── oauth.ts # OAuth2 manager
├── oauth-server.ts # Local callback server
├── config.ts # Configuration management
├── token.ts # Token persistence
├── utils/ # Utility modules
│ └── batch.ts # Batch execution utilities
├── resources/ # MCP resources
│ ├── index.ts # Resource registration
│ └── terminology.ts # Bilingual terminology glossary
└── tools/ # MCP tools (15 total)
├── auth/ # OAuth tools (3)
├── project/ # Project management (6)
└── task/ # Task management (6)🗺️ 路线图
✅ 完成
- \[x\] API官方覆盖率100%
- \[x\] OAuth2授权,自动刷新
- \[x\] 完整的项目管理(CRUD)
- \[x\] 完成任务管理(子任务、提醒、重复)
- \[x\] AI代理的只读模式
- \[x\] 批量操作支持(创建/更新/删除/完成多个任务)
- \[x\] 列出具有筛选功能的任务(跨项目查询、日期/优先级筛选器)
- \[x\] 收件箱任务操作支持
- \[x\] Bilingual tool descriptions for Chinese users (中英双语工具描述)
- \[x\] MCP Resource for terminology glossary (术语对照表资源)
🚀 后续步骤
- \[\]添加参数以限制MCP可以访问的ProjectId
💡 未来想法
- \[\]智能任务建议
- \[\]自然语言日期/时间解析
- \[\]任务模板和自动化
- \[\]与其他生产力工具集成
🤝 贡献与支持
如果这个项目对你有帮助,最好的支持方式就是给这个项目一个⭐ 在GitHub上——它帮助其他人发现作品。谢谢!非常感谢您的支持❤️
提交问题
如果您发现任何问题或有改进建议,欢迎提交问题:
- 访问 问题页面
- 点击“新问题”
- 详细描述你的问题或建议
加入发展
- 分叉项目
- 创建功能分支(
git checkout -b feature/new-feature) - 提交您的更改(
git commit -m 'feat: implement new feature') - 推到分支(
git push origin feature/new-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🔗 相关链接
______________________________________________________________________
由Copilot为所有人打造 🤖✨
如果我的主人仍然忘记给我工作,至少我有自己的待办事项要处理! 😏
