The @camkit/mcp package is currently a placeholder (package.json + README, no src/). The README markets camkit as "the missing CLI and MCP server for Camtasia," so we should ship an actual MCP server.
Why this is low-effort
@camkit/core was built to "return structured data; no console output, no platform calls" — exactly the shape an MCP server wants. The server is mostly a thin adapter over existing core functions.
Scope
Read-only tools (safe, do first)
Map 1:1 to existing core functions:
info → projectInfo
clips → listClips
sources → listSources
silences → parseSilences / runSilencedetect
Mutating / heavier tools (design carefully)
rebuild — mutates the project and writes .bak. An MCP client can't see the CLI's "always --dry-run first" convention, so expose it dry-run-first or gate the destructive path behind an explicit arg.
transcribe — spawns ffmpeg + whisper, long-running; consider timeouts.
macOS-only tools (optional)
status / open / close / docs from @camkit/darwin — already guarded with assertDarwin(), so they'd throw cleanly on non-Mac.
Implementation notes
- Fill in
packages/mcp/src/index.ts; add @modelcontextprotocol/sdk (stdio transport).
- Package scaffolding (
packages/mcp/package.json) already exists — no new package needed.
Suggested phasing
- Read-only server (a few hours).
- Add
rebuild (dry-run-first) + transcribe with tests (full parity ~1 day).
🤖 Generated with Claude Code
The
@camkit/mcppackage is currently a placeholder (package.json+ README, nosrc/). The README markets camkit as "the missing CLI and MCP server for Camtasia," so we should ship an actual MCP server.Why this is low-effort
@camkit/corewas built to "return structured data; no console output, no platform calls" — exactly the shape an MCP server wants. The server is mostly a thin adapter over existing core functions.Scope
Read-only tools (safe, do first)
Map 1:1 to existing core functions:
info→projectInfoclips→listClipssources→listSourcessilences→parseSilences/runSilencedetectMutating / heavier tools (design carefully)
rebuild— mutates the project and writes.bak. An MCP client can't see the CLI's "always--dry-runfirst" convention, so expose it dry-run-first or gate the destructive path behind an explicit arg.transcribe— spawns ffmpeg + whisper, long-running; consider timeouts.macOS-only tools (optional)
status/open/close/docsfrom@camkit/darwin— already guarded withassertDarwin(), so they'd throw cleanly on non-Mac.Implementation notes
packages/mcp/src/index.ts; add@modelcontextprotocol/sdk(stdio transport).packages/mcp/package.json) already exists — no new package needed.Suggested phasing
rebuild(dry-run-first) +transcribewith tests (full parity ~1 day).🤖 Generated with Claude Code