使用说明
ticktick访问
CLI和MCP服务器 TickTick 任务管理。 将TickTick Open API包装为MCP工具,因此AI代理(Claude Code, Gemini CLI、Claude.ai和任何MCP客户端)都可以读取和修改您的 项目和任务。
该软件包安装了三个命令:
ticktick-mcp--MCP服务器(HTTP和stdio传输)ticktick-admin--用户和部署管理ticktick--获取TickTick访问令牌的小型OAuth助手
MCP服务器通过stdio在本地运行供个人使用,或通过HTTP运行 用于多用户共享部署。每用户TickTick代币存在 用户存储,从不在共享配置文件或环境变量中。
建立在 mcp应用程序.
安装
需要Python 3.11+和 pipx.
pipx install git+https://github.com/echomodel/ticktick-mcp.git
这将安装 ticktick, ticktick-mcp,以及 ticktick-admin 在你的
PATH.
TickTick OAuth凭据(一次性)
每个用户都需要一个TickTick访问令牌。要获得一个:
-
在以下网址注册应用程序 developer.ticktic.com.
-
将OAuth重定向URI设置为
http://localhost:8080. -
注意 客户端ID 和 客户端密钥.
-
运行OAuth帮助程序:
ticktick auth login \ --client-id <client-id> \ --client-secret <client-secret>或者,为了在命令行中隐藏秘密:
export TICKTICK_CLIENT_ID=<client-id> export TICKTICK_CLIENT_SECRET=<client-secret> ticktick auth login浏览器打开,您授权应用程序和访问令牌 打印到stdout。TickTick代币目前大约在以下时间到期 24小时,因此当令牌到期时,您将重复此操作。
然后,令牌将进入本地用户记录(用于stdio模式) 或者部署的用户记录(用于HTTP模式)——见下文。
在本地运行(stdio)
供个人在一台机器上使用。
1.配置本地模式并注册本地用户
ticktick-admin connect local
ticktick-admin users add local --access-token <ticktick-token>
connect local 写 ~/.config/ticktick/setup.json 因此,后续
ticktick-admin 命令以本地用户存储为目标。
users add local 写入用户记录(带有TickTick令牌)
配置文件)下 $XDG_DATA_HOME/ticktick/users/.
当TickTick代币到期时,无需重新注册即可轮换:
ticktick-admin users update-profile local access_token <new-token>
2.在客户端注册MCP服务器
克劳德代码:
claude mcp add ticktick -- ticktick-mcp stdio --user local
Gemini CLI:
gemini mcp add ticktick --command ticktick-mcp --args "stdio --user local"
这 --user local 标志告诉MCP服务器要记录哪个用户
在stdio上运行时加载。
3.烟雾测试
在您的MCP客户端中,要求代理列出您的TickTick项目。
服务器通过以下方式返回项目ID、名称和元数据
list_projects 工具。
部署(HTTP)
用于共享、多用户、始终在线的访问——通常用于web 客户喜欢 Claude.ai 和远程代理 部署。
运行时合同
任何HTTP部署都必须提供:
| 变量 | 必填 | 默认 | 用途 |
|---|---|---|---|
SIGNING_KEY |
是 | --启动失败 | 用于签名JWT的HMAC密钥(32+随机字符) |
APP_USERS_PATH |
是的,坚持 | ~/.local/share/ticktick/users/ |
保存每个用户JSON记录的目录(必须是持久存储) |
JWT_AUD |
否 | 未设置 | 预期JWT aud 索赔。如果未设置,则不会验证受众 |
TOKEN_DURATION_SECONDS |
否 | ~10年 | 新发行用户代币的有效期 |
LOG_LEVEL |
没有 | INFO |
标准Python日志级别 |
服务器:
- 继续收听
0.0.0.0:8080(用覆盖--host/--port) - 为MCP传输提供服务
/ - 服务于
GET /health端点(无身份验证)返回{"status":"ok"} - 服务
/admin/users,/admin/tokens,/admin/users/{email}/profile(通过JWT认证,签名为SIGNING_KEY,scope=admin) - 处理自己的身份验证——平台必须允许未经身份验证的HTTP 通过应用程序
启动命令(任何进程监控器,包括Dockerfile CMD):
ticktick-mcp serve --host 0.0.0.0 --port 8080
码头工人
此仓库中附带了基线Dockerfile。要构建和运行:
docker build -t ticktick-access .
docker run -p 8080:8080 \
-e SIGNING_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')" \
-v $(pwd)/.users:/data/users \
-e APP_USERS_PATH=/data/users \
ticktick-access
同样的镜像可以在Python容器运行的任何地方运行——Cloud Run, Fly、Render、Heroku(通过Buildpack)、Railway、Kubernetes、ECS、, 裸金属。
gapp(云运行)
如果你使用 gapp, gapp.yaml
描述了具有托管功能的Cloud Run部署 SIGNING_KEY 和
APP_USERS_PATH.使用以下方式部署:
gapp deploy
gapp生成和存储 SIGNING_KEY 在秘密经理第一
为部署和配置持久卷 APP_USERS_PATH.
这是许多受支持的路径之一——上面的运行时契约 这才是最重要的;gapp很方便。
将管理员CLI连接到已部署的实例
在部署之后, ticktick-admin 需要部署URL和
SIGNING_KEY 管理用户的价值。
ticktick-admin connect https://your-ticktick-mcp.example.com \
--signing-key <signing-key>
检索 <signing-key> 无论部署存储在何处:
- gapp:
gapp_secret_get(name="signing-key", plaintext=True)通过 间隙MCP,或gcloud secrets versions access latest --secret=ticktick-mcp-signing-key. - GCP秘密经理直接:
gcloud secrets versions access latest --secret=<your-secret-name>. - GitHub操作/CI秘密:从CI提供商的UI读取。
- 其他秘密管理者:使用该工具的read命令。
connect 将URL和签名密钥保存到
~/.config/ticktick/setup.json 因此,后续的管理命令将运行
而不重复旗帜。随时切换回本地
ticktick-admin connect local.
管理已部署实例上的用户
# Register a new user. Their TickTick token goes in the profile.
ticktick-admin users add alice@example.com --access-token <token>
# List registered users.
ticktick-admin users list
# Read the current profile (which fields are set, which are missing).
ticktick-admin users get-profile alice@example.com
# Rotate a user's TickTick token after the old one expires.
ticktick-admin users update-profile alice@example.com access_token <new-token>
# Mint an additional MCP-server token for an existing user
# (e.g. to register the MCP server in another client).
ticktick-admin tokens create alice@example.com
# Revoke a user.
ticktick-admin users revoke alice@example.com
跑 ticktick-admin users add --help 查看键入的标志
生成自 Profile 模型-- --access-token 旗帜的帮助
文本描述了令牌是什么以及如何获得令牌。
验证并注册MCP客户端
探测部署
ticktick-admin probe
probe 检查 /health,然后打开MCP会话和往返
工具列表。输出每个注册工具的名称-- list_projects,
count_projects, list_tasks, create_task, update_task,
complete_task, delete_task。如果部署正常,并且
工具暴露, probe 报告 MCP: ok.
添加 --json 用于适合脚本和代理的结构化输出。
检查正在运行的部署上的工具
如果 probe 报告问题或您想更仔细地了解
部署正在公开 tools 组对以下对象调用JSON-RPC
活MCP传输:
ticktick-admin tools list # enumerate tool names
ticktick-admin tools show list_projects # show schema and example
ticktick-admin tools call list_projects # invoke with no args
ticktick-admin tools call create_task --arg project_id=<id> --arg title='Hello'
tools call 生成一个短期用户范围的令牌(默认值:first
注册用户;用以下方式覆盖 --user <email>)往返
通过部署的MCP层,就像MCP客户端一样。
端到端烟雾测试
ticktick-admin safe-tool --invoke
援引 count_projects 通过部署的MCP实现端到端
传输——从JWT验证到工具调度的完整路径
到TickTick的API并返回。答案只是一个计数,所以
练习整个堆栈,而不显示任何用户编写的内容
在管理输出中。
生成MCP客户端注册命令
ticktick-admin register --user alice@example.com
铸造一个新的用户范围令牌,并发出可粘贴的注册
用于Claude Code、Gemini CLI和Claude.ai URL表单的命令,
每个预填充有部署URL和新令牌。添加
--json 用于适合脚本和代理的结构化输出。
仅限于特定客户:
ticktick-admin register --user alice@example.com --client claude
ticktick-admin register --user alice@example.com --client gemini
ticktick-admin register --user alice@example.com --client claude.ai
手动MCP客户端注册
如果你不想使用 register,这些模式是:
克劳德代码:
claude mcp add --scope user ticktick \
--transport http \
--url https://your-deployment/ \
--header "Authorization: Bearer ${TICKTICK_TOKEN}"
Gemini CLI:
gemini mcp add ticktick \
--transport http \
--url https://your-deployment/ \
--header "Authorization: Bearer ${TICKTICK_TOKEN}"
两个客户都在扩张 ${VAR} 在headers中,请将令牌放入您的
shell环境,而不是注册命令。
MCP工具暴露
| 工具 | 说明 |
|---|---|
list_projects |
列出所有TickTick项目(列表) |
count_projects |
返回项目数量(安全烟雾测试工具——见下文) |
list_tasks |
列出项目中的任务 |
create_task |
创建新任务 |
update_task |
更新现有任务 |
complete_task |
将任务标记为已完成 |
delete_task |
永久删除任务 |
故障排除
TickTick的“No TickTick访问令牌”/401 --用户的
令牌已过期。跑 ticktick auth login那么
ticktick-admin users update-profile <email> access_token <new>.
部署上“找不到用户” --使用以下方式注册用户
ticktick-admin users add.
MCP客户端无法从您的部署连接/401/403 —
用户范围的MCP令牌已过期或被吊销。铸造新的
一用 ticktick-admin tokens create <email> 并更新
客户的注册。
管理命令失败,显示“未配置” --奔跑
ticktick-admin connect local 或
ticktick-admin connect <url> --signing-key <key>.
测试
单元测试在没有凭据的情况下脱机运行:
make test # creates venv on first run, then runs all tests
这 tests/framework/ 目录包含mcp应用程序的可重用性
一致性套件——身份验证实施、管理端点、JWT处理、,
CLI布线、工具协议、SDK覆盖率。直接用以下命令运行:
make framework-test
进一步阅读
许可证
麻省理工学院