Skip to main content
Glama
threadlimit

Motion Text

by threadlimit
README.md
# Motion Text MCP server

Turn words, images, and audio into an animated video with MP4 export.

[Motion Text](https://motiontext.video) is a kinetic story studio. This
repository is the front door for its hosted MCP server — the server itself is
a remote service, so there is nothing here to install or run.

- **Docs:** https://motiontext.video/ai
- **Privacy:** https://motiontext.video/privacy
- **Registry:** `video.motiontext/motion-text`

## Two endpoints

The server is hosted and speaks streamable HTTP. There is no npm package and
no local process.

| | URL | Auth | Tools |
| --- | --- | --- | --- |
| Anonymous | `https://motiontext.video/mcp` | none | 3 drafting tools |
| Studio | `https://motiontext.video/mcp/studio` | OAuth 2.1, `studio` scope | full toolset |

**Use `/mcp/studio`.** It is the URL you want in almost every case — it
authenticates you and unlocks the full toolset: scenes, narration, stock
photos, music, brand and logo, render and export.

`/mcp` exists so that a client with no account can connect and evaluate the
server immediately. It answers anonymously and exposes three tools
(`create_story_draft`, `list_visual_presets`, `get_spec`), enough to build a
draft and hand it off to the editor.

The distinction matters because of *when* each endpoint challenges. `/mcp`
only sends a `WWW-Authenticate` challenge if you present a token that turns
out to be invalid; arriving with no token connects cleanly. `/mcp/studio`
challenges immediately, which is what makes a client start the OAuth flow on
its own.

Some clients — ChatGPT is the one that bites — begin sign-in *only* in
response to a challenge. Point those at `/mcp/studio` or they will connect to
`/mcp`, never prompt, and appear to be a broken server with three tools.

## Setup

### Claude Code

```bash
claude mcp add --transport http motion-text https://motiontext.video/mcp/studio
```

Then run `/mcp` inside Claude Code to complete the OAuth sign-in.

### Claude Desktop / claude.ai

Settings → Connectors → Add custom connector, and give it
`https://motiontext.video/mcp/studio`. Sign-in runs in the browser.

### ChatGPT

Add it as a custom connector with `https://motiontext.video/mcp/studio`. Use
that URL specifically — see the note above.

### Generic client config

```json
{
  "mcpServers": {
    "motion-text": {
      "type": "streamable-http",
      "url": "https://motiontext.video/mcp/studio"
    }
  }
}
```

### Try it without an account

```bash
curl -sS -X POST https://motiontext.video/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## What you can build

Ask your agent for a video and it drafts one — you finish it in the editor at
[motiontext.video](https://motiontext.video).

- **Kinetic captions** — lyrics or a script timed to audio, with per-line
  motion (beat, glitch, slam, karaoke, and others)
- **Narrated picture stories** — scenes with generated or stock imagery and
  text-to-speech narration
- **Brand treatment** — colors, typography, logo, and format presets
- **Export** — render to MP4

Call `get_spec` for the machine-readable capabilities, limits, and draft
schema.

## Issues

Bug reports and feature requests for the MCP server are welcome in this
repository's issue tracker. The Motion Text product source is not public.