关于 Motion MCP Server
Motion MCP Server 是 Motion 任务管理与日程应用的 MCP 服务,让 LLM 通过自然对话管理任务、搜索项目并查看日程。适用于需要在桌面、网页和移动端使用 Motion 的用户,支持本地 npx 与 Cloudflare Workers 远程部署两种方式。
主要功能
- 01任务的创建、查询、更新、删除、移动与取消指派
- 02按名称解析工作区和项目
- 03跨工作区列出未完成任务,支持截止日期与优先级筛选
- 04评论、用户、状态与自定义字段管理
- 05周期性任务模板管理
- 06可通过 MOTION_MCP_TOOLS 限制暴露的工具数量
适用场景
- 01在 Claude 或 ChatGPT 中查询本周到期的任务
- 02通过对话创建带优先级和标签的任务
- 03在 Claude 移动端或网页端访问远程 MCP 服务管理任务
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 10 个 Motion 工具,覆盖任务、项目、工作区、搜索等操作。远程部署时使用 Streamable HTTP 传输,并通过路径密钥或 Bearer 请求头进行访问控制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 任务名称(创建时必填;列出时可选,作为不区分大小写的子字符串进行搜索,并在客户端筛选) |
| limit | number | 否 | 要返回的最大任务数(用于 list 和 list_all_uncompleted) |
| labels | array | 否 | 标签名称数组。创建或更新时应用于任务;列出时用于筛选结果 |
| status | any | 否 | 按状态筛选(用于 list)。可以是单个字符串或字符串数组(例如,["Todo", "Completed"])。如果未指定 status 或 includeAllStatuses,则仅返回活动(未解决)任务。使用 motion_statuses 列出每个工作区的有效值。 |
| taskId | string | 否 | 任务 ID(用于 get/update/delete/move/unassign 时必填) |
| dueDate | string | 否 | 截止日期(用于 create/update)或筛选条件(用于 list 和 list_all_uncompleted)。格式:YYYY-MM-DD、带偏移量的完整 ISO 8601 时间戳,或 'today'、'tomorrow' 等相对日期。筛选(list、list_all_uncompleted):按账户时区的日期粒度设置包含上限——返回截止日期为该日或更早的所有任务,包括已逾期任务。因此,dueDate:'today' 可在一次调用中回答“今天有哪些任务到期?”,并包括所有逾期任务。没有精确日期或日期范围筛选;若只显示某日到期的任务,请自行筛选返回结果中的 Due Date。创建/更新:仅日期值会在所有计划使用同一时区时,按账户计划时区存储为当天结束时间(23:59:59),因此显示时仍为同一日历日;如果无法确定唯一时区,则回退到 UTC 当天结束时间。传入带偏移量的明确 ISO 时间戳以控制精确时刻。相对关键词按同一账户时区解析;否则回退到 UTC。 |
| assignee | string | 否 | 负责人姓名、电子邮件或 'me' 快捷方式。对于 list、list_all_uncompleted、create、update 和 move,会自动解析为 ID。无法解析的姓名会返回错误。必须为非空值;要清除任务负责人,请使用 unassign 操作。 |
| duration | any | 否 | 分钟数(数值)或 'NONE'/'REMINDER'(字符串) |
| priority | enum | 否 | 任务优先级:ASAP、HIGH、MEDIUM、LOW。创建/更新时设置;列出和 list_all_uncompleted 时用于筛选结果(在客户端筛选)ASAP | HIGH | MEDIUM | LOW |
| operation | enum | 是 | 要执行的操作create | list | get | update | delete | move | unassign | list_all_uncompleted |
| projectId | string | 否 | 按项目筛选(用于 list) |
| assigneeId | string | 否 | 负责人用户 ID,或表示当前用户的 'me' 快捷方式。用于 list/list_all_uncompleted 筛选;用于 create/update 设置负责人;用于 move 重新分配负责人。对于所有这些操作,'me' 快捷方式都会解析为具体 ID。必须为非空值;要清除任务负责人,请使用 unassign 操作。 |
| description | string | 否 | 任务描述 |
| projectName | string | 否 | 项目名称(可替代 projectId) |
| workspaceId | string | 否 | 按工作区筛选(用于 list)。list_all_uncompleted 会忽略此项,始终涵盖所有工作区。 |
| autoScheduled | any | 否 | 自动排期配置。可以是以下任一形式: - 排期名称字符串:"Work Hours"(简单形式,无开始日期) - 完整控制用对象:{"schedule": "Work Hours", "startDate": "2025-03-05", "deadlineType": "SOFT"} 用户指定开始日期时,必须使用对象形式。 使用 motion_schedules 查看可用的排期名称。 |
| workspaceName | string | 否 | 按工作区名称筛选(用于 list)。list_all_uncompleted 会忽略此项,始终涵盖所有工作区。 |
| completedAfter | string | 否 | 筛选(用于 list):仅保留在此本地日历日期或之后完成的任务。格式:YYYY-MM-DD 或 'today'、'yesterday' 等相对日期。在客户端筛选,并自动包含已完成/已解决的任务,因此“这周我完成了什么?”应将 completedAfter 设为本周开始日期。与 completedBefore 组合可筛选时间段。注意:此项按完成日期而非截止日期筛选;如果时间段内任务量很大,分页可能会限制结果(响应中会说明),而非静默截断。 |
| completedBefore | string | 否 | 筛选(用于列表):仅保留在此本地日历日期或之前完成的任务。格式:YYYY-MM-DD 或类似 “today” 的相对日期。在客户端筛选;与 completedAfter 配合可限定完成时间范围。 |
| targetWorkspaceId | string | 否 | 目标工作区 ID(移动操作必需)。移动会将任务从一个工作区转移到另一个工作区;Motion API 不支持按项目定位。 |
| includeAllStatuses | boolean | 否 | 为 true 时,返回所有状态的任务,包括已完成/已解决的任务(用于列表)。不能与状态筛选器同时使用。 |
详细介绍
Motion MCP 服务
Motion 是一款由 AI 驱动的日历和任务管理应用,可自动安排你的工作。此 MCP 服务通过 Model Context Protocol 将 Motion 的 API 与 Claude 和 ChatGPT 等大模型连接起来,让你可以通过自然对话管理任务、搜索项目、查看日程等。它可在桌面、网页和移动设备上使用。
预览
点击上方图片查看完整尺寸
开始使用
前提条件: Node.js 20+ 和一个 Motion API 密钥。
本地设置(npx)
适用于桌面 MCP 客户端,例如 Claude Desktop、Claude Code、Cursor 等。
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}
从命令行进行测试:
MOTION_API_KEY=your_api_key npx motionmcp
提示:
npx始终运行最新发布的版本,无需安装。
远程设置(Cloudflare Workers)
适用于移动端和网页端客户端,例如 Claude 移动端/网页端、ChatGPT 移动端/网页端,或任何 HTTP MCP 客户端。
一键部署
部署后,在 Cloudflare 控制面板中设置密钥(Workers > 你的 worker > Settings > Variables):
MOTION_API_KEY— 你的 Motion API 密钥MOTION_MCP_SECRET— 随机字符串(使用openssl rand -hex 16生成)
手动部署
# Set secrets
npx wrangler secret put MOTION_API_KEY
npx wrangler secret put MOTION_MCP_SECRET # use: openssl rand -hex 16
# Deploy
npm run worker:deploy
你的 MCP URL 将为:
https://motion-mcp-server.YOUR_SUBDOMAIN.workers.dev/mcp/YOUR_SECRET
请使用这个确切的地址。密钥放在路径末尾,后面不能再添加任何内容。该服务在此单一端点上提供 MCP Streamable HTTP;不要附加 /sse 或任何其他子路径。
能够发送标头的客户端可以将密钥留在 URL 之外:将地址设为 https://motion-mcp-server.YOUR_SUBDOMAIN.workers.dev/mcp,并发送 Authorization: Bearer YOUR_SECRET。
从 Claude 连接
- 前往 claude.ai > Settings > Connectors
- 添加你的 MCP URL
- 服务会自动同步到 Claude 移动应用
对于 Claude Code,请使用 Streamable HTTP 传输:
claude mcp add --transport http motion https://motion-mcp-server.YOUR_SUBDOMAIN.workers.dev/mcp --header "Authorization: Bearer YOUR_SECRET"
在 Claude Desktop 中,将相同的 URL 添加为类型为 http(而非 sse)的远程服务。
从 ChatGPT 连接
- 前往 ChatGPT Settings > Connectors
- 添加你的 MCP URL
安全性: URL 中的密钥可防止被随意发现。请将完整 URL 视为密码,不要公开分享。
传输方式: 仅提供 Streamable HTTP。较旧的 HTTP+SSE 传输方式(一个
GET流加上一个/message端点)在迁移到无状态服务时已停用;使用sse传输类型配置的客户端必须切换到http。
工具配置方式与本地服务相同。在 wrangler.toml 的 [vars] 下设置 MOTION_MCP_TOOLS,或通过 wrangler secret put MOTION_MCP_TOOLS 覆盖。
有关本地 Worker 开发,请参阅 DEVELOPER.md。
API 密钥
该服务从 MOTION_API_KEY 环境变量中读取你的 Motion API 密钥。
内联设置(npx):
MOTION_API_KEY=your-key npx motionmcp
.env 文件(通过 npm 从源代码运行时):
MOTION_API_KEY=your-key
使用
npx时,建议使用内联环境变量,因为npx不会读取本地.env文件。
工具配置
默认启用全部 10 个工具。如果运行多个 MCP 服务并想减少工具选择噪声,可以通过 MOTION_MCP_TOOLS 环境变量限制公开的工具:
| 级别 | 工具 | 描述 |
|---|---|---|
| minimal | 3 | 仅任务、项目和工作区 |
| essential | 8 | 增加用户、搜索、评论、日程和状态 |
| complete(默认) | 10 | 完整 API 访问权限,包括自定义字段和重复任务 |
| custom | 不定 | 精确选择所需工具 |
自定义示例:
MOTION_MCP_TOOLS=custom:motion_tasks,motion_projects,motion_search npx motionmcp
工具参考
motion_tasks
操作: create、list、list_all_uncompleted、get、update、delete、move、unassign
主要的任务管理工具。支持所有 Motion API 参数,包括 name、description、priority、dueDate、duration、labels、assigneeId 和 autoScheduled。你可以按名称引用工作区和项目,服务会自动解析。
list_all_uncompleted 一次调用即可遍历所有工作区(忽略 workspaceId/workspaceName),并遵循 dueDate 和 priority 筛选条件,因此“我所有工作区本周有哪些任务到期?”可以直接得到答案。对于 list,dueDate 是包含当天的“截至日期”界限,也会包含逾期任务(因此 dueDate: "today" 可以回答“今天有哪些任务到期?”);completedAfter / completedBefore 则按账户时区中的完成日期筛选,以回答“我本周完成了什么?”。日期按 Motion 账户的时区解读,列表响应会先显示标明该时区和当天本地日期的标题。
{
"operation": "create",
"name": "Complete API integration",
"workspaceName": "Development",
"projectName": "Release Cycle Q2",
"dueDate": "2025-06-15T09:00:00Z",
"priority": "HIGH",
"labels": ["api", "release"]
}
motion_projects
操作: create、list、get
管理 Motion 项目。工作区和项目名称会进行模糊匹配;如果未指定工作区,服务会自动选择你的“Personal”工作区。
{"operation": "create", "name": "New Project", "workspaceName": "Personal"}
motion_workspaces
操作: list、get
列出并查看工作区。
motion_users
操作: list、current
列出工作区中的用户,或获取当前已通过身份验证的用户。
motion_search
操作: content
按查询内容搜索工作区中的任务和项目。
{"operation": "content", "query": "API integration", "workspaceName": "Development"}
motion_comments
操作: list、create
读取任务和项目的评论,并添加评论。
{"operation": "create", "taskId": "task_123", "content": "Updated the API endpoints as discussed"}
motion_schedules
操作: list
获取用户日程,显示每天的工作时间(每天的开始和结束时间)及其时区。这些仅是重复工作时间模板,不会公开实际日历事件或会议,因此无法单独显示真实的空闲/忙碌情况;可结合任务的 scheduledStart/scheduledEnd 查看 Motion 自动安排的内容。
motion_custom_fields
操作: list、create、delete、add_to_project、remove_from_project、add_to_task、remove_from_task
在工作区、项目和任务中定义并管理自定义字段。
{
"operation": "create",
"name": "Sprint",
"type": "DROPDOWN",
"options": ["Sprint 1", "Sprint 2", "Sprint 3"],
"workspaceName": "Development"
}
motion_recurring_tasks
操作: list、create、delete
管理重复任务模板。
{
"operation": "create",
"name": "Weekly Team Standup",
"recurrence": "WEEKLY",
"projectName": "Team Meetings",
"daysOfWeek": ["MONDAY", "WEDNESDAY", "FRIDAY"],
"duration": 30
}
motion_statuses
操作: list
列出工作区可用的状态。
高级配置
最简设置(仅 3 个工具):
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "minimal"
}
}
}
}
自定义工具选择:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "custom:motion_tasks,motion_projects,motion_search"
}
}
}
}
使用本地工作区(npm):
{
"mcpServers": {
"motion": {
"command": "npm",
"args": ["run", "mcp:dev"],
"cwd": "/absolute/path/to/your/MotionMCP",
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}
请参阅 DEVELOPER.md 了解完整的开发者设置。
调试
- 日志以 JSON 格式输出到
stderr - 检查是否缺少密钥、工作区/项目名称或权限
- 使用
motion_workspaces(list)和motion_projects(list)验证 ID
{
"level": "info",
"msg": "Task created successfully",
"method": "createTask",
"taskId": "task_789",
"workspace": "Development"
}
许可证
Apache-2.0 许可证
如需了解更多信息,请参阅完整的 Motion API 文档 或 Model Context Protocol 文档。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
