Motion MCP Server について
Motion MCP Server は、AI 対応のカレンダー・タスク管理アプリ Motion の MCP サーバーです。LLM クライアントから会話を通じてタスクの管理、プロジェクト検索、スケジュール確認を行えます。デスクトップ、Web、モバイルで Motion を使う利用者向けで、npx によるローカル実行と Cloudflare Workers へのリモート配置の両方に対応します。
主な機能
- 01タスクの作成、取得、更新、削除、移動、担当解除
- 02ワークスペースとプロジェクトを名前で解決
- 03フィルター付きで全ワークスペースの未完了タスクを一覧表示
- 04コメント、ユーザー、ステータス、カスタムフィールドの管理
- 05定期タスクテンプレートの管理
- 06MOTION_MCP_TOOLS による公開ツールの絞り込み
活用シーン
- 01Claude や ChatGPT で今週期限のタスクを確認する
- 02会話から優先度とラベル付きのタスクを作成する
- 03リモートサーバー経由で Claude のモバイル版や Web 版からタスクを操作する
MCP 対応
本プロジェクトは、タスク、プロジェクト、ワークスペース、検索などの Motion ツール 10 種を MCP クライアントに公開する MCP サーバーです。リモート配置では 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' は期限超過分を含め、「今日が期限のタスクは?」という質問に 1 回の呼び出しで答えられます。日付の完全一致や日付範囲での絞り込みはありません。特定の日に期限を迎えるタスクだけを表示するには、返された結果の Due Date を自分で絞り込んでください。CREATE/UPDATE:日付のみの値は、すべてのスケジュールでタイムゾーンが一致する場合、アカウントのスケジュールのタイムゾーンにおける当日終了時(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 および 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 サーバーは、Motion の API と Claude や ChatGPT などの LLM を Model Context Protocol 経由で橋渡しするため、自然な会話を通じてタスクの管理、プロジェクトの検索、スケジュールの確認などを行えます。デスクトップ、Web、モバイルで動作します。
プレビュー
上の画像をクリックするとフルサイズで表示されます
はじめに
前提条件: 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)
モバイルおよび Web クライアント — Claude モバイル/Web、ChatGPT モバイル/Web、その他の 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
タスク管理のための主要なツールです。name、description、priority、dueDate、duration、labels、assigneeId、autoScheduled を含むすべての Motion API パラメータをサポートします。ワークスペースとプロジェクトは名前で参照できます — サーバーが自動的に解決します。
list_all_uncompleted は 1 回の呼び出しで全ワークスペースにまたがり(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
ユーザーのスケジュールを取得し、各日の稼働時間(日ごとの開始-終了)とタイムゾーンを表示します。これらは繰り返しの稼働時間テンプレートにすぎません — 実際のカレンダーイベントや会議を公開するものではないため、これだけでは真の空き/予定の状況を示すことはできません。Motion が自動予約したものを確認するには、タスクの scheduledStart/scheduledEnd と組み合わせてください。
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 License
詳細については、完全な Motion API ドキュメント または Model Context Protocol ドキュメント を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
