🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@dishui/motion-mcp

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dishui/motion-mcp

Remote MCP server bridging Motion to Claude (Web + Code)

latest
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

motion-mcp

A remote MCP server that connects Claude to Motion — read and manage your tasks, projects, and comments using plain English.

Features

  • 11 tools — read and write tasks, projects, comments, schedules, and recurring tasks
  • Per-user auth — each person connects their own Motion account via OAuth; data is fully isolated
  • Works with Claude.ai and Claude Code

Tools

ToolDescription
get_tasksGet tasks (defaults to current user)
get_workspacesList all workspaces
get_projectsList projects in a workspace
get_scheduleGet work schedule and timezone
get_task_commentsGet comments on a task
get_recurring_tasksGet recurring task definitions (current user)
create_taskCreate a new task
update_taskUpdate task fields or status
delete_taskDelete a task
create_commentAdd a comment to a task
update_projectUpdate project fields

Usage

Add to Claude Code:

claude mcp add motion https://<your-deployment>/mcp --transport http --scope user

Claude will open a browser window to connect your Motion account. You'll need your Motion API key from app.usemotion.com/settings/api.

For Claude.ai, add your deployment URL as a custom connector in Settings → Connectors (requires team admin to approve first).

Self-hosting

Prerequisites

  • Node.js 20+
  • Fly.io account (or any hosting that supports persistent Node.js processes)

Setup

git clone <repo>
cd motion-mcp
npm install
cp .env.example .env
# Fill in .env
npm run dev

Environment Variables

VariableRequiredDescription
JWT_SECRETyesSecret for signing access tokens — openssl rand -hex 32
ENCRYPTION_KEYyesAES-256 key for encrypting stored API keys — openssl rand -hex 32
BASE_URLyesPublic URL of your deployment e.g. https://your-app.fly.dev
DB_PATHnoPath to SQLite file (default: ./motion.db)
PORTnoPort to listen on (default: 3000)

Deploy to Fly.io

fly launch --no-deploy
fly volumes create motion_data --size 1 --region sjc --yes
fly scale count 1 --yes
fly secrets set \
  JWT_SECRET=$(openssl rand -hex 32) \
  ENCRYPTION_KEY=$(openssl rand -hex 32) \
  BASE_URL=https://$(fly info --json | python3 -c "import sys,json; print(json.load(sys.stdin)['Hostname'])")
fly deploy

Add to your fly.toml under [env]:

DB_PATH = "/data/motion.db"

[[mounts]]
  source = "motion_data"
  destination = "/data"

Note: Keep fly scale count 1 — SQLite cannot be shared across multiple machines.

Register Claude with your instance

claude mcp add motion https://<your-app>.fly.dev/mcp --transport http --scope user

Auth flow

  • User adds the MCP URL to Claude
  • Claude detects OAuth support via /.well-known/oauth-authorization-server
  • Browser opens to /oauth/authorize
  • User pastes their Motion API key — validated live against Motion
  • Key is stored AES-256-GCM encrypted in SQLite
  • Claude receives a 90-day JWT stored in its config
  • All requests are scoped to that user's Motion data

Tech stack

License

MIT

FAQs

Package last updated on 06 May 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts