cave-motion
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cave-motionFind a motion recipe for our SaaS launch and prepare a 12s 16:9 prompt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DarkKnight Cave Motion Library
Search motion recipes and prepare a prompt for your coding agent. The initial catalog has 50 original DKC recipes, one approved MIT adaptation, 12 browser-checked reference builds, and five links to external source repositories. It covers interface motion, product films, explainers, and procedural scenes.
The server returns instructions and requirements. Your coding agent implements the result in your project. It does not call a model API or render video.
Connect over HTTP
Live endpoint: https://cave-motion.darkknightcave.workers.dev/mcp
claude mcp add --transport http cave-motion https://cave-motion.darkknightcave.workers.dev/mcpFor Codex, configure url = "https://cave-motion.darkknightcave.workers.dev/mcp"
inside [mcp_servers.cave_motion]. For Cursor, use
{"mcpServers":{"cave-motion":{"url":"https://cave-motion.darkknightcave.workers.dev/mcp"}}}.
No local process or account is needed for hosted access.
Related MCP server: motionprompts
Run locally
Node.js 22 or newer:
git clone https://github.com/DKC-Engineering/motion-library.git
cd motion-library
npm ci
npm run build
npm startnpm start waits for MCP messages on standard input. Startup is silent because
stdout is reserved for the protocol. No API key or network access is required
after installation. The packaged server carries a fixed catalog snapshot.
In Claude Code, from this directory:
claude mcp add cave-motion -- node "$PWD/dist/src/stdio.js"For Codex, add the absolute path to its config.toml:
[mcp_servers.cave_motion]
command = "node"
args = ["/absolute/path/to/motion-library/dist/src/stdio.js"]For Cursor, use project .cursor/mcp.json or your user MCP settings:
{
"mcpServers": {
"cave-motion": {
"command": "node",
"args": ["/absolute/path/to/motion-library/dist/src/stdio.js"]
}
}
}Setup references: Claude Code, OpenAI, Cursor. These configuration formats follow the vendors' documentation. Protocol checks do not establish that a native editor installation was tested; see verification.
Two calls
search_motion({"query":"SaaS product launch"})
prepare_motion({"id":"feature-launch","brief":"Show our scheduling product using the three screenshots I supplied.","customization":{"accent":"#35745e","duration":12,"aspectRatio":"16:9"}})Exact IDs can go straight to prepare_motion. get_motion returns the full
recipe, requirements, attribution, version, and verification status. Search
accepts category, stack, verifiedOnly, includeReferences, and a limit from one
to ten (default five). Categories: ui, film, explainer, 3d. Stacks: css, svg,
canvas, threejs. Unknown IDs and unsupported customization return clear errors.
Preparation is deterministic and only supports accent, duration, and aspectRatio.
The use-motion prompt accepts id and brief. Resources:
motion://catalogmotion://recipes/{id}motion://originals/{id}for separately cleared imported originals, if any.
Source-only references are opt-in search results. They cannot be prepared and include no copied prompt or media. First-party original recipes are not presented as the original creator prompts from those collections.
Gallery and deployment
The separate DarkKnight Cave Next.js site consumes a pinned package version
for its gallery at /labs/motion-library. Its build copies the package's demo assets and posters;
iframes only load after interaction. Prompt preparation runs in the browser.
An optional project brief explicitly submits contact details and recipe ID
through the existing contact endpoint.
The public endpoint is https://cave-motion.darkknightcave.workers.dev/mcp.
The branded motion.darkknightcave.co domain still needs separate DNS/hosting
configuration. The npm package and
MCP Registry listing remain unpublished. See deployment.
Reference previews are served alongside the Worker as static assets.
The optional skill is in skills/motion-library/SKILL.md. Copy that folder to
your agent's skill location if you want workflow guidance in addition to tools.
Verify
npm test
npx playwright install chromium
npm run verify:demos
npm run devWith the local Worker running, use another terminal:
npm run test:httpThe HTTP check deliberately reaches the local rate limit. Wait for the 60-second window to reset before repeating it. The optional gallery integration check accepts a website export explicitly:
npm run verify:site -- --site-out /absolute/path/to/darkknight/outBrowser checks can use an
existing Chromium with -- --browser-executable /absolute/path/to/browser.
Use node scripts/test-http.mjs URL --smoke against production to omit the
deliberate burst. Cloudflare's limits are approximate and apply per location;
see verification for the observed results.
See repository layout for the website package boundary and release workflow. Cloudflare hosting is independent of the Git checkout location; moving this repository does not change the live MCP URL.
Catalog maintenance and licensing
Read CONTRIBUTING.md for source discovery, entry-level rights, approval records, and reproducibility. Discovery reports never publish entries.
New code: MIT. Original DKC recipe text: CC BY 4.0. Imported content retains its own license and notices. See NOTICE. For corrections or removal, email hello@darkknightcave.co with the recipe ID, source link, and the affected material. Prior downloads may persist.
Available Tools
3 toolsget_motionBRead-onlyIdempotent
Read a recipe prompt, dependencies, customization parameters, verification, source, and license. Source-only references return a link and no prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent operation. The description adds useful behavioral detail by explaining that source-only references return a link and no prompt, which is not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no wasted wording. The main retrieval behavior is front-loaded, followed by the important source-only caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers returned fields and the source-only edge case, which helps given there is no output schema. However, it leaves the id parameter semantics unexplained and does not route the agent among sibling tools, leaving clear gaps for a get-by-id operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single required id parameter, so the description should compensate but does not. It never explains what the id identifies, its format, or how it relates to the recipe prompt being read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read operation and enumerates the returned content: recipe prompt, dependencies, customization parameters, verification, source, and license. It is clear what the tool retrieves, though it does not explicitly differentiate itself from sibling tools such as search_motion or prepare_motion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The note about source-only references describes return behavior, not usage conditions or exclusions, and the sibling tools are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_motionARead-onlyIdempotent
Prepare a motion prompt for the user coding agent using a recipe ID and project brief. Deterministic text preparation; does not render, call an LLM, or spend money.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| brief | Yes | ||
| customization | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely new behavior facts: deterministic, no LLM call, no cost. It stops short of describing the output shape (a prompt string? object?), which would have made it a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the behavioral caveat immediately after. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description never says what the prepared prompt looks like or how it is returned. Combined with the undescribed nested customization object, an agent can call the tool but cannot make full use of its inputs or predict its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry parameter meaning, and it only covers two of three: 'recipe ID' for id and 'project brief' for brief. The nested customization object (accent, duration, aspectRatio) is never mentioned, leaving its most complex parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Prepare a motion prompt' from a recipe ID and project brief. That distinguishes it from the lookup-oriented siblings search_motion and get_motion, though the contrast is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clarifies the tool is a deterministic text-preparation step that does not render or spend money, which edges toward usage guidance. But there is no explicit 'use this before X' framing or named alternative, so the when-to-use case is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_motionARead-onlyIdempotent
Find motion recipes by effect, use case, category, or stack. Returns compact matches; select an ID and call prepare_motion. No generation or network fetches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| stack | No | ||
| category | No | ||
| verifiedOnly | No | ||
| includeReferences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world; the description reinforces this with "No generation or network fetches" and adds return-shape context ("compact matches"). That is useful but partially duplicative of openWorldHint=false, and pagination/limit behavior is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero padding, front-loading the search purpose before the next-step guidance and the negative constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no output schema and no per-parameter documentation, the description should explain the boolean filters and result-count behavior. It covers purpose, next step, and return brevity adequately, but leaves callers guessing about verifiedOnly, includeReferences, and limit defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the six parameters carry no inline semantics. The description implies the roles of query, category, and stack but says nothing about limit, verifiedOnly, or includeReferences, leaving half the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Find motion recipes") and enumerates the retrieval dimensions (effect, use case, category, stack). It names the downstream sibling prepare_motion, though it never distinguishes itself from get_motion, which is the other adjacent read tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear follow-on path: "select an ID and call prepare_motion," which tells the agent this is a search-then-fetch flow. It stops short of explicit when-not conditions or a direct comparison against get_motion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.2- First observed
get_motion - First observed
prepare_motion - First observed
search_motion
TDQS
Scored across 3 tools
Each tool targets a distinct stage: search finds recipes, get reads recipe details, and prepare builds a prompt. Their descriptions explicitly clarify boundaries and handoffs.
All three tools follow the same verb_motion pattern: search_motion, get_motion, prepare_motion. The shared noun and consistent verb-first style make the set predictable.
Three tools are well-scoped for a focused recipe-discovery-and-preparation workflow. Each tool has a clear role in the sequence, with no unnecessary surface area.
The surface covers the full expected lifecycle: discover recipes, inspect recipe details including dependencies and licensing, then prepare a motion prompt. No obvious dead ends for the stated purpose.
Maintenance
Related MCP Connectors
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Search 2,000+ real iOS app interactions in plain language, read the motion anatomy behind each one (trigger, timing, easing, spring) and get starter SwiftUI tuned to the real timing.
React components and blocks with motion. Search docs, props and shadcn install commands.
Search starter tracks, get original scene prompts and prepare free local playlist video projects.
31
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with comprehensive access to Motion.dev animation library documentation and code generation tools. Enables LLMs to generate Motion animations for React, JavaScript, and Vue with proper documentation backing and framework conversion capabilities.14MIT
- AlicenseAqualityCmaintenanceMCP server over a catalog of production-grade GSAP and WebGL motion components. Your agent can plan a page's sections, pick a mechanic for each one, get composition rules so animations don't fight each other, and fetch build prompts validated against live demos. Hosted at motionprompts.dev/mcp or local with npx motionprompts-mcp.144 npm-
- AlicenseNot gradedqualityBmaintenanceEnables searching, inspecting, auditing, and composing AI video prompts using 150 verified prompts that were each rendered into real Seedance 2 videos.23 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables LLM agents to generate and validate multi-granularity storyboard assets from text prompts, including 2D SVG motion, 3D Blender depth/blockout, and SDXL ControlNet final images. It also supports vision-based self-correction and a SQLite knowledge database of successful recipes.MIT