Skip to content

Implement @camkit/mcp server wrapping @camkit/core #8

Description

@RichardBray

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:

  • infoprojectInfo
  • clipslistClips
  • sourceslistSources
  • silencesparseSilences / 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

  1. Read-only server (a few hours).
  2. Add rebuild (dry-run-first) + transcribe with tests (full parity ~1 day).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions