mcpField
M
Motion MCP Server

Motion MCP Server

ローカル
github.com/devondragon生産性305 週間前に更新

Motion MCP Server について

Motion MCP Server は、AI 対応のカレンダー・タスク管理アプリ Motion の MCP サーバーです。LLM クライアントから会話を通じてタスクの管理、プロジェクト検索、スケジュール確認を行えます。デスクトップ、Web、モバイルで Motion を使う利用者向けで、npx によるローカル実行と Cloudflare Workers へのリモート配置の両方に対応します。

主な機能

  1. 01タスクの作成、取得、更新、削除、移動、担当解除
  2. 02ワークスペースとプロジェクトを名前で解決
  3. 03フィルター付きで全ワークスペースの未完了タスクを一覧表示
  4. 04コメント、ユーザー、ステータス、カスタムフィールドの管理
  5. 05定期タスクテンプレートの管理
  6. 06MOTION_MCP_TOOLS による公開ツールの絞り込み

活用シーン

  1. 01Claude や ChatGPT で今週期限のタスクを確認する
  2. 02会話から優先度とラベル付きのタスクを作成する
  3. 03リモートサーバー経由で Claude のモバイル版や Web 版からタスクを操作する

MCP 対応

本プロジェクトは、タスク、プロジェクト、ワークスペース、検索などの Motion ツール 10 種を MCP クライアントに公開する MCP サーバーです。リモート配置では Streamable HTTP を使用し、パス内のシークレットまたは Bearer ヘッダーでアクセスを制御します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"MotionMCP": {
"command": "npx",
"args": [
"-y",
"motionmcp"
],
"env": {
"MOTION_API_KEY": "<MOTION_API_KEY>"
}
}
}
}
起動コマンドnpx -y motionmcp
設定が必要な環境変数
MOTION_API_KEYシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmotionmcp

ツール

10

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
namestringいいえタスク名(作成時は必須。一覧表示では省略可能で、大文字と小文字を区別しない部分文字列検索としてクライアント側で絞り込みます)
limitnumberいいえ返すタスクの最大数(list および list_all_uncompleted 用)
labelsarrayいいえラベル名の配列。作成または更新時にタスクに適用され、一覧表示時は結果の絞り込みに使用されます。
statusanyいいえステータスで絞り込みます(list 用)。単一の文字列または文字列配列を指定します(例:["Todo", "Completed"])。status または includeAllStatuses を指定しない場合、アクティブ(未解決)なタスクのみを返します。各ワークスペースの有効な値を一覧表示するには motion_statuses を使用してください。
taskIdstringいいえタスク ID(get/update/delete/move/unassign では必須)
dueDatestringいいえ期限(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 にフォールバックします。
assigneestringいいえ担当者の名前、メールアドレス、または 'me' ショートカット。list、list_all_uncompleted、create、update、move では自動的に ID に解決されます。解決できない名前を指定するとエラーが返されます。空でない値が必須です。タスクの担当者を解除するには unassign 操作を使用してください。
durationanyいいえ分数(数値)または 'NONE'/'REMINDER'(文字列)
priorityenumいいえタスクの優先度:ASAP、HIGH、MEDIUM、LOW。作成/更新時に設定し、list および list_all_uncompleted では結果の絞り込みに使用します(クライアント側で絞り込み)。ASAP | HIGH | MEDIUM | LOW
operationenumはい実行する操作create | list | get | update | delete | move | unassign | list_all_uncompleted
projectIdstringいいえプロジェクトで絞り込みます(list 用)。
assigneeIdstringいいえ担当者のユーザー ID、または現在のユーザーを示す 'me' ショートカット。list/list_all_uncompleted では絞り込みに使用し、create/update では担当者を設定し、move では担当者を再割り当てします。これらすべての操作で 'me' ショートカットは具体的な ID に解決されます。空でない値が必須です。タスクの担当者を解除するには unassign 操作を使用してください。
descriptionstringいいえタスクの説明
projectNamestringいいえプロジェクト名(projectId の代替)
workspaceIdstringいいえワークスペースで絞り込みます(list 用)。list_all_uncompleted では無視され、常にすべてのワークスペースが対象になります。
autoScheduledanyいいえ自動スケジュール設定。次のいずれかを指定できます: - スケジュール名の文字列:"Work Hours"(簡易形式、開始日なし) - 詳細設定用のオブジェクト:{"schedule": "Work Hours", "startDate": "2025-03-05", "deadlineType": "SOFT"} ユーザーが開始日を指定した場合は、必ずオブジェクト形式を使用してください。 利用可能なスケジュール名を確認するには motion_schedules を使用してください。
workspaceNamestringいいえワークスペース名で絞り込みます(list 用)。list_all_uncompleted では無視され、常にすべてのワークスペースが対象になります。
completedAfterstringいいえ絞り込み(list 用):このローカル暦日以降に完了したタスクのみを残します。形式:YYYY-MM-DD、または 'today'、'yesterday' などの相対指定。クライアント側で絞り込み、完了済み/解決済みのタスクを自動的に含めます。そのため、「今週何を完了した?」という質問には、completedAfter に週の開始日を設定します。completedBefore と組み合わせて期間を指定できます。注:期限日ではなく完了日で絞り込みます。対象期間のタスク数が非常に多い場合、ページネーションによって結果が上限に達することがあります(応答に表示されます)。その場合も、通知なしに切り捨てられることはありません。
completedBeforestringいいえフィルター(一覧用):このローカルカレンダー日付以前に完了したタスクのみを保持します。形式:YYYY-MM-DD、または “today” のような相対指定。クライアント側でフィルタリングされます。completedAfter と併用すると完了期間を指定できます。
targetWorkspaceIdstringいいえ移動先のワークスペース ID(移動操作に必須)。移動するとタスクがワークスペース間で転送されます。Motion API ではプロジェクト単位の指定はサポートされていません。
includeAllStatusesbooleanいいえtrue の場合、完了済み/解決済みを含むすべてのステータスのタスクを返します(一覧用)。ステータスフィルターとは併用できません。

詳細

NPM Version License

Motion MCP サーバー

Motion は、AI を活用したカレンダーおよびタスク管理アプリで、作業を自動的にスケジュールしてくれます。この MCP サーバーは、Motion の API と Claude や ChatGPT などの LLM を Model Context Protocol 経由で橋渡しするため、自然な会話を通じてタスクの管理、プロジェクトの検索、スケジュールの確認などを行えます。デスクトップ、Web、モバイルで動作します。

プレビュー

Motion MCP Server Preview

上の画像をクリックするとフルサイズで表示されます

はじめに

前提条件: 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 クライアント向けです。

ワンクリックデプロイ

Deploy to Cloudflare Workers

デプロイ後、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 からの接続
  1. claude.ai > Settings > Connectors に移動します
  2. MCP URL を追加します
  3. サーバーは 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 からの接続
  1. ChatGPT Settings > Connectors に移動します
  2. 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 環境変数で公開するツールを絞り込めます。

レベルツール数説明
minimal3タスク、プロジェクト、ワークスペースのみ
essential8ユーザー、検索、コメント、スケジュール、ステータスを追加
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 ドキュメント を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。