@doist/automations-mcp
Todoist Automations 的 MCP 服务器: 给一个代理以相同权限的工具
自动化 tda CLI 给定,为主机 MCP 服务器打包 ai.todoist.net编辑
设计,它的一部分推出在
光谱。 。 。 .
出口的东西
getMcpServer({ token, baseUrl }) 构建一个 McpServer 超过一个用户的自动化,绑定在
它被授予无记名代号: 托多主义者OAuth 代号: automations 观众,或
托多主义个人信物.
validateAutomationsToken(token, baseUrl) 在任何工具运行前对一个符号进行分类, 其中有一个
仅使用状态调用自动化列表 : valid, (中文(简体) ), invalid (401)或(401) forbidden (403个带
insufficient_scope (挑战)。 没有这项挑战的403 valid 目的:这是一个
拒绝同意不能解除, 如等待列表, 因此每个工具都会显示后端的自身
信件而不是客户端通过 OAuth 循环。 任何其它状态
TokenValidationError 从 @doist/mcp-core/host 带有该服务器的状态
以5xx作为瞬间. 两个功能都遵循合同 每Doist MCP服务器股份,来自
@doist/mcp-core/host。 。 。 .
这是整个公布的表面。 工具本身是针对
@doist/automations-sdk,没有发布,所以它们通过服务器得到而不是
出口,而建筑拒绝发出一个让消费者有进口的申报
无法解决问题.
聊天转弯
start-conversation 财务报告和审定财务报表 continue-conversation 每个运行一个持久服务器在工具内转动
电话,路 tda chat 在一个过程中执行 : 呼叫块直到代理停止, 代理停止可以使用
分钟后,每10秒报告一次 notifications/progress 当客户端
发送了进度符, 或者调试日志消息 。 取消调用中止上游
转弯;部分答复持续 continue-conversation 还原它。 共同的逻辑是
@doist/automations-sdk/chat-turn,所以CLI和这个软件包不能漂移到如何等待
动作被读取或连接被解决.
试验草案
test-draft 开始测试运行,除非 waitMinutes 是0,民意调查直到结束或等待
每10秒报告一次进展 跑步还在极限
运行和 get-test-run 稍后读取; 取消或失败的等待名称
理由,你觉得呢? 开始,投票和结果映射是SDK的 startDraftTest 财务报告和审定财务报表
waitForDraftTest,与 tda draft test。 。 。 .
本地运行
没有主机服务器,这里的一切都可以运行在真实的账户上. AUTOMATIONS_API_KEY 实值
a Todoist 个人信使或输出 tda auth token view· ; AUTOMATIONS_BASE_URL 点数
装配或本地后端和默认生产.
npm run build:core # once, from the monorepo root
npm run build:mcp # produces apps/mcp/dist
npm --workspace=apps/mcp run inspect # the MCP inspector over stdio
npm --workspace=apps/mcp run tool -- find-automations '{"limit": 5}'
npm --workspace=apps/mcp run tool -- start-conversation '{"message": "Draft an automation that..."}'
npm --workspace=apps/mcp run tool:list
MCP客户端可以直接指向stdio构建,具有相同的环境:
{
"mcpServers": {
"automations": {
"command": "node",
"args": ["/path/to/automations/apps/mcp/dist/main.js"],
"env": { "AUTOMATIONS_API_KEY": "..." }
}
}
}
释放
@doist/automations-mcp 发表于 main 以
.github/workflows/release-mcp.yml,运行中
带有配置的语义释放 release.config.js。该版本
来自于承诺的常规信息 算在这个包,所以
没有东西被手碰上 存储器没有自己的版本号 同样的行为
组成发布通知和通讯通知。 释放到 latest dist 标签 :
消费者是主机服务器,它给一个精确的版本插上针. 发布后,工作流程发送
a 一个 automations-mcp-updated 发送到 Doist/todoist-ai-integrations,其更新工作流程
安装该版本,运行其检查,承诺和重新部署,从而实现释放 ai.todoist.net
不等待依赖性公关.
软件包使用的工作空间库不发布, 所以 npm run build 将其编译为
dist/ 并且只有下面的软件包 dependencies 保持对外。 这里的任何变化都算数,除了
测试、文件、 package.json 字段不会改变安装的内容. packages/sdk, (中文(简体) ),
packages/core 财务报告和审定财务报表 packages/bitmapist 与后端和网络应用共享,所以更改
只在犯罪范围广的情况下,才算计在内 mcp 或者说 sdk。还有任何其他变化
船,与下一次释放。 见
已发布软件包 如何分开
调取请求,所以每个改变 降落在右释放.
添加工具
src/tool-registry.ts 是工具表面的单一真理源; 服务器, run-tool
以足迹为基准 src/tool-registry.test.ts 失败当
视图漂移.
src/utils/tool-names.ts:增加名.src/tools/<tool-name>.ts:定义,satisfies AutomationsTool<...>复制find-automations.ts。 。 。 .src/tool-registry.ts:将它添加到地图中,在它所属的部分中.src/tools/tool-annotations.test.ts:添加其注释预期.src/tools/<tool-name>.test.ts:对伪造的试验AutomationsApi。 。 。 .src/mcp-server.ts: 添加到instructions仅当工具需要跨工具路由时 指导;每个工具的细节属于自己的描述.
输出计划从未使用 .nullable(): 在 SDK 验证输出前, 空被剥取, 所以
无效字段是等待实现的验证失败。 使用 .optional() 离开钥匙
出来. src/tools/output-schema-nullability.test.ts 执行它.
src/token-footprint.test.ts 打印工具表面对每个模型的成本 tools/list如为
变革将合并固定费用推到预算之上,将预算提高到同样的水平,并说到这一点.