Skip to main content

滴答清单 MCP 服务

滴答清单MCP(Memory-Context-Planning)服务是一个基于Python的后端服务,为用户提供目标管理、任务统计分析、关键词提取和任务-目标匹配等功能。该服务作为滴答清单主应用的辅助功能,帮助用户更好地规划和跟踪个人及团队目标完成情况。

最新更新:已从逆向接口切换到官方 OAuth 2.0 + Open API。详见 docs/openapi_oauth_guide.md

重要:本项目已全面对齐滴答清单开放平台(/open/v1)端点。

  • 项目:GET/POST/POST(id)/DELETE /open/v1/project
  • 任务:POST /open/v1/task,POST /open/v1/task/{taskId},POST 完成 /open/v1/project/{projectId}/task/{taskId}/complete,DELETE /open/v1/project/{projectId}/task/{taskId}
  • 汇总任务:官方无全局任务列表,使用 GET /open/v1/project/{projectId}/data 聚合
  • 标签:暂无写接口,当前工具仅提供只读聚合视图

主要功能

  • 目标管理:创建、查询、更新和删除个人目标
  • 任务统计分析:生成任务完成情况统计报告
  • 关键词提取:基于任务内容提取关键词(基于jieba分词)
  • 任务与目标匹配:智能匹配任务与相关目标
  • 目标完成进度计算:分析并可视化目标完成进度

安装要求

  • Python 3.8+
  • 滴答清单账号(支持通过token、手机号或邮箱进行认证)

快速开始

  1. 克隆项目
git clone https://github.com/GalaxyXieyu/didatodolist-mcp.git
cd didatodolist-mcp
  1. 安装依赖
pip install -r requirements.txt
  1. 配置与认证(.env-only)

推荐使用 OAuth 2.0(仅 .env):

获取 Client ID / Secret:

  • 打开滴答清单开放平台文档入口:https://developer.dida365.com/docs#/openapi
  • 在开放平台创建一个应用(填写名称)。
  • 在应用设置中将 OAuth Redirect URL 填写为:http://localhost:38000/callback
  • 复制应用的 client_idclient_secret,用于下方 .env 配置。

参考图:

创建应用示例

设置回调地址示例

  • .env 中配置 MCP_API_KEY=...DIDA_CLIENT_IDDIDA_CLIENT_SECRET;运行 python scripts/oauth_authenticate.py --port 38000 完成一次性授权,脚本会将 DIDA_ACCESS_TOKENDIDA_REFRESH_TOKEN 写入 .env

最小可用步骤:

cp .env.example .env
# 编辑 .env,至少填写 MCP_API_KEY、DIDA_CLIENT_ID、DIDA_CLIENT_SECRET
python scripts/oauth_authenticate.py --port 38000  # 成功后写入 DIDA_ACCESS_TOKEN/DIDA_REFRESH_TOKEN 到 .env

# 启动服务
export MCP_API_KEY=your-strong-key  # 或直接在 .env 中配置
python main.py --sse --host 127.0.0.1 --port 3000
# 客户端请求头需带:x-api-key: your-strong-key

可选的 .env 示例:

MCP_API_KEY=your-strong-key
# 以下变量由 .env-only 管理
# DIDA_CLIENT_ID=...
# DIDA_CLIENT_SECRET=...
# DIDA_ACCESS_TOKEN=...
# DIDA_REFRESH_TOKEN=...

更多文档:

  • 统一 OAuth 指南(.env-only):docs/openapi_oauth_guide.md
  • 文档索引:docs/openapi_index.md
  • 项目接口:docs/openapi_project.md
  • 任务接口:docs/openapi_task.md
  • 数据模型定义:docs/openapi_definitions.md
  • 本地调试(Inspector/mcp-cli):docs/dev_debug_inspector.md
  • OpenClaw 插件:docs/openclaw_plugin.md
  • OpenClaw 原生插件(Open API):docs/openclaw_openapi_plugin.md

OpenClaw 原生插件(推荐)

该插件直接调用滴答清单官方 Open API,不依赖 MCP 服务。

1) 安装插件

openclaw plugins install -l ./openclaw-openapi-plugin

2) 写入 OpenClaw 配置并完成 OAuth

推荐使用脚本自动写入(会把 token 写入 ~/.openclaw/openclaw.json,并确保 allowlist):

python3 scripts/oauth_openclaw.py --open-browser

脚本会读取以下配置(如果缺失可手动写入):

{
  "plugins": {
    "enabled": true,
    "entries": {
      "dida-openapi": {
        "enabled": true,
        "config": {
          "clientId": "<YOUR_CLIENT_ID>",
          "clientSecret": "<YOUR_CLIENT_SECRET>",
          "redirectUri": "http://localhost:38000/callback",
          "accessToken": "<ACCESS_TOKEN>",
          "refreshToken": "<REFRESH_TOKEN>",
          "timeoutMs": 15000,
          "autoRefresh": true
        }
      }
    }
  },
  "tools": {
    "allow": ["dida-openapi"]
  }
}

3) 重启 Gateway 使配置生效

openclaw gateway restart

4) 验证是否可调用

openclaw plugins info dida-openapi
openclaw agent --agent main --message "请调用工具 dida_get_projects 并返回结果" --thinking minimal --timeout 30 --json

如果 UI 提示“未配置 accessToken”,说明 Gateway 未读到最新配置或 token 已过期:请先运行授权脚本,再重启 Gateway。

Docker/Compose 部署(.env-only)

推荐在本机先完成一次性 OAuth 授权,把令牌写入 .env 后再部署容器(云上无需开放 38000)。

  1. 本地预授权(写入 .env
cp .env.example .env
# 填写 MCP_API_KEY、DIDA_CLIENT_ID、DIDA_CLIENT_SECRET
python scripts/oauth_authenticate.py --port 38000  # 成功后写入 DIDA_ACCESS_TOKEN / DIDA_REFRESH_TOKEN
  1. 使用 Docker Compose 运行(仅需 3000 端口)
# 将授权后的 .env 复制为 data/.env(或直接放置)
mkdir -p data && cp .env data/.env

docker compose up -d --build mcp
# SSE 入口: http://<host>:3000/sse (Headers: x-api-key: <你的 MCP_API_KEY>)
  1. 使用 MCP Inspector 或 mcp-cli 连接
  • Inspector:npx @modelcontextprotocol/inspector,Transport 选 SSE,URL http://<host>:3000/sse,Headers x-api-key: <你的 MCP_API_KEY>
  • mcp-cli:npx @wong2/mcp-cli,选择 SSE,填相同 URL 与 Headers

说明与最佳实践:

  • callback(38000) 仅发生在“授权当时”,容器运行不依赖该端口;云上只需暴露 3000 或经反代直通 /sse
  • 强随机化 MCP_API_KEY 并通过反向代理透传 x-api-key;生产可限制来源 IP。
  • 令牌过期时,服务端会尝试利用 DIDA_REFRESH_TOKEN 自动刷新;默认仅在内存更新,重启后继续从 .env 读取。

使用方法

启动(stdio)

python main.py

启动(SSE,推荐调试)

python main.py --sse --host 127.0.0.1 --port 3000

指定配置文件路径

已统一为 .env-only,不再支持单独的配置文件路径参数。

安装到 MCP 客户端

python main.py --install

端口与鉴权

  • 回调端口(一次性授权):38000

    • 与环境变量 DIDA_REDIRECT_URI 对齐,例如 http://localhost:38000/callback
    • 仅在运行 scripts/oauth_authenticate.py 进行 OAuth 授权时临时监听
  • MCP 服务端口(SSE):3000

    • 通过 python main.py --sse --host 127.0.0.1 --port 3000 启动
    • 客户端连接 MCP 时请在请求头携带 x-api-key

示例:

export MCP_API_KEY="your-strong-key"
python main.py --sse --host 127.0.0.1 --port 3000
# 客户端请求头:x-api-key: your-strong-key

端口与鉴权(摘要)

  • 回调端口:38000(OAuth 回调一次性使用,与 redirect_uri 对齐)
  • 服务端口:3000(SSE 连接 MCP 服务)
  • 鉴权:客户端连接时需携带 x-api-key,服务端校验 MCP_API_KEY

认证机制(.env-only)

  • 服务 → 官方 API:从 .env 读取 DIDA_ACCESS_TOKEN/DIDA_REFRESH_TOKEN 进行 OAuth 调用。
  • 自动刷新:当返回 401 时,使用 DIDA_REFRESH_TOKEN 自动刷新并回写新的令牌到 .env
  • 不再支持手机号/邮箱密码直登;也不使用任何 oauth_config.json/config.json 文件。
  • 客户端 → 服务:通过 x-api-key 请求头,服务端校验 MCP_API_KEY

功能模块

目标管理

目标管理功能允许用户创建、跟踪和管理不同类型的目标:

  • 阶段性目标:有明确截止日期的短期目标
  • 常规目标:长期持续的目标
  • 习惯性目标:需要定期执行的行为习惯

统计分析

统计分析功能提供多维度的任务完成情况分析:

  • 时间维度:按日/周/月分析任务完成情况
  • 项目维度:按项目分类统计任务完成率
  • 标签维度:按标签分析任务分布

关键词提取

基于jieba分词库,从任务内容中提取关键词,支持生成词云和热度分析。

任务-目标匹配

使用内容相似度和关键词匹配算法,智能关联任务与目标,帮助用户将日常任务与长期目标对齐。

开发历程

本项目采用了系统化的开发方法,遵循以下开发阶段:

  1. 规划阶段:定义了项目范围、功能要求和技术规范
  2. 架构设计:完成核心数据结构的设计
  3. 基础功能开发:实现核心API和数据访问层
  4. 高级功能实现:开发统计分析和目标匹配算法
  5. 优化与测试:改进性能和用户体验

贡献

欢迎提交问题和改进建议!请fork本仓库并创建pull request。

许可证

MIT许可证

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_galaxyxieyu_didatodolist-0.1.1.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_galaxyxieyu_didatodolist-0.1.1.tar.gz.

File metadata

  • Download URL: iflow_mcp_galaxyxieyu_didatodolist-0.1.1.tar.gz
  • Upload date:
  • Size: 47.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_galaxyxieyu_didatodolist-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5b478c3b932fe20139ea1353baec0eeb7161718c6abf79e0c72f2a54a22262bc
MD5 19ff52d7d8788bcec340c721fb6e52f9
BLAKE2b-256 b7394eeb35a14a03dc9dbd2ff7264c8d695e6e2421e665e6444a2672bfe7aa93

See more details on using hashes here.

File details

Details for the file iflow_mcp_galaxyxieyu_didatodolist-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_galaxyxieyu_didatodolist-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 59.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_galaxyxieyu_didatodolist-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84f4a469a4882e775d2a77841a4ef2e2188a97cfa8c9abfaa85fcfa9ae77288d
MD5 922a79ddc505100c844ff958fe64e591
BLAKE2b-256 34af7ce5bd5e0143f804875b249b455d2139f6b0d9471cb6d2672d0f6a552ea3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page