@miraiclip/mcp
MCP server for Miraiclip: let Claude, Codex, or any MCP client edit a video project through the command catalog — with frame previews so the agent sees its edits, and export to file.
npm install @miraiclip/mcp| Version | 0.1.3 |
| Runs in | Node ≥ 18 |
| Exports | 9 |
| Guides | MCP server |
Functions
callTool
function callTool(session: ProjectSession, name: string, args: Record<string, unknown>): Promise<ToolResult>Guides: MCP server
createMcpServer
The Miraiclip MCP server over one project session: every editing command in
the catalog behind a validating dispatch, transactional batches, undo,
frame previews the agent can look at, and export — the same engine a human
UI drives, speaking MCP.
function createMcpServer(session: ProjectSession, version?: string): ServerGuides: MCP server
listTools
function listTools(session: ProjectSession): ToolDefinition[]Guides: MCP server
Classes
ProjectSession
One project, on disk, being edited over MCP: the document loads from (or is
created at) projectPath, every successful edit autosaves back atomically,
and previews render through one warm headless Chrome kept alive across
calls. The undo/redo history lives for the lifetime of the server process.
new ProjectSession()| Member | Type | Description |
|---|---|---|
project | Project | |
projectPath | string | |
assetsDir | string | |
open | (options: ProjectSessionOptions) => Promise<ProjectSession> | |
save | () => Promise<void> | Atomic write: tmp + rename, so a crash never leaves a half project file. |
preview | (options: { timeUs: number; width?: number; height?: number; }) => Promise<Uint8Array> | Render one frame as PNG through the warm render session (started lazily). |
export | (options: SessionExportOptions) => Promise<ExportProjectFileResult> | |
close | () => Promise<void> |
Guides: MCP server
Constants
MCP_SERVER_NAME
const MCP_SERVER_NAME: "miraiclip"Interfaces
ProjectSessionOptions
| Member | Type | Description |
|---|---|---|
projectPath | string | The project JSON file this session edits. Created if missing. |
assetsDir? | string | Base directory for resolving relative asset src paths for previews and exports (default: the project file's directory). |
defaults? | { width: number; height: number; fps: number; } | Composition settings for a NEW project file (default 1920×1080 @ 30). |
browser? | BrowserOptions | Browser options for previews and exports (executablePath etc.). |
SessionExportOptions
| Member | Type | Description |
|---|---|---|
out | string | Output file path; relative paths resolve against the project directory. |
format | "mp4" | "webm" | |
quality? | "draft" | "standard" | "high" | |
fps? | number | |
width? | number | |
height? | number | |
range? | { startUs: number; endUs: number; } |
ToolDefinition
| Member | Type | Description |
|---|---|---|
name | string | |
description | string | |
inputSchema | Record<string, unknown> |
ToolResult
The MCP tool-result shape (structured content list + error flag).
| Member | Type | Description |
|---|---|---|
[key] | [key: string]: unknown; | |
content | ({ type: "text"; text: string; } | { type: "image"; data: string; mimeType: string; })[] | |
isError? | boolean |
@miraiclip/assistant
An AI editing assistant for Miraiclip: a vendor-neutral ChatModel contract (OpenAI first; any OpenAI-compatible server works), an agent loop that edits a forked project and lands each request as one undo step, high-level editing tools, and a server handler that keeps API keys off the browser.
@miraiclip/audio-sources
Stock and generated audio for Miraiclip: one AudioProvider contract (search, resolve, generate) with Openverse, Freesound, static-catalog and HTTP-backend adapters, a one-transaction importAudio, and LLM tool definitions.