Skip to main content

content-mcp — Content MCP server

The official MCP server for the Content engine: give Claude, an IDE or any MCP-compatible agent the ability to drive your Content instance — analyze a URL, generate video/audio/subtitles/transcripts, watch the job, land the files in your library. It is an agentic facade over the official Python SDK: no REST of its own, no business logic.

any MCP client → content-mcp (this) → content_sdk → your Content engine (/api/v1)

Install

The server is an ordinary Python application — nothing to clone:

uv tool install content-mcp     # isolated, on your PATH — recommended
content-mcp --help

# or
pipx install content-mcp

content-mcp on PyPI pulls content-sdk as an ordinary dependency, pinned to the matching release. The wheels are also attached to each GitHub release for air-gapped installs (uv tool install ./content_mcp-<v>-py3-none-any.whl --find-links .).

Connect it to your engine

One environment variable: CONTENT_API_URL (default http://localhost:8010). The server speaks stdio — your MCP client spawns it; you never run it by hand.

Claude Code

claude mcp add content --env CONTENT_API_URL=http://localhost:8010 -- content-mcp

Claude Desktop, Cursor, and other clients

Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) and any other client using the standard JSON shape:

{
  "mcpServers": {
    "content": {
      "command": "content-mcp",
      "env": { "CONTENT_API_URL": "http://localhost:8010" }
    }
  }
}

Then ask for something like "analyze this YouTube URL and download the audio into my library" — the expected flow is get_configanalyze_sourcegenerateget_job, ending with a delivered_path you can find under the engine's delivery folder.

Logs go to stderr (stdout carries only the MCP JSON-RPC framing), so a client's log pane shows them without corrupting the session.

Tools (intention-level, not one-per-endpoint)

Tool Intent
analyze_source Analyze a URL: what it is + what can be produced
list_capabilities Resolve the capabilities for an analyzed source
generate Start a job producing outputs from an analysis_id; an output spec may carry delivery (mode/folder/filename, ADR 0018)
get_job Job status; once terminal, its artifacts — user-facing names (ADR 0017) and delivered_path in the server library
cancel_job Cooperative cancellation
list_jobs Recent jobs
get_artifact Artifact metadata; small text is inlined, larger/binary returns a download reference (never raw bytes over MCP)
get_config Request-building context: credential ids, whether delivery-by-default is on, the existing library folders

Resources (read-only, content:// namespace)

content://analyses/{id}, content://jobs/{id}, content://artifacts/{id} — JSON views for a host to attach as context. Prompts are intentionally not provided yet.

For development

From a clone:

make install    # editable installs of the engine, SDK, CLI and MCP in one venv
claude mcp add content --env CONTENT_API_URL=http://localhost:8010 \
  -- apps/backend/.venv/bin/python -m content_mcp.server

Build the distributions with make wheels (they land in dist/).

Verification status

  • Service logic over a mock transport: verified (tests/test_service.py).
  • The MCP wiring against the real mcp library (tools, resource templates): verified (tests/test_server.py).
  • The full journey — MCP service → SDK → real FastAPI engine → executor → delivery library, including delivery intent and mode: "none": verified in-process (tests/test_end_to_end.py, in make validate).
  • The installed wheel driven over stdio by an MCP client session against a running engine: verified at packaging time (see the repository's release notes); re-run it after any transport change.

Design

  • service.py — the intention logic; takes an SDK client, returns JSON. No MCP imports, no HTTP. Fully unit-tested over a mock transport.
  • server.py — thin wiring: registers the tools/resources on an MCPServer and runs stdio. content-mcpcontent_mcp.server:main.
  • The layering is enforced by tests: the MCP server may import content_sdk only — never an HTTP client, never backend internals (tests/test_layering.py at the repo root).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

content_mcp-0.3.3.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

content_mcp-0.3.3-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file content_mcp-0.3.3.tar.gz.

File metadata

  • Download URL: content_mcp-0.3.3.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for content_mcp-0.3.3.tar.gz
Algorithm Hash digest
SHA256 6eff42f46a73680a183308f8be15c5d3d24444fd43ccba2b0b51d0011090c357
MD5 fab96ea1d6296309647490887105043b
BLAKE2b-256 d111c8a59202594a67449ef8c3b1d26a473e4a5bc4a67d6f5a73d70ffff81bef

See more details on using hashes here.

Provenance

The following attestation bundles were made for content_mcp-0.3.3.tar.gz:

Publisher: publish-pypi.yml on LatentNoise/content

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file content_mcp-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: content_mcp-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for content_mcp-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 12af263234be2f011e12215372847ec52b7f7a0a647739624422c0f399feb83b
MD5 bd95ec000005cd7ca40c982f6ed0fe5c
BLAKE2b-256 48fefcfc2057a69795b82f4ad919a68a49777776f75a52874e29adf20be6189e

See more details on using hashes here.

Provenance

The following attestation bundles were made for content_mcp-0.3.3-py3-none-any.whl:

Publisher: publish-pypi.yml on LatentNoise/content

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

This release

0.3.3 This release

2 files

0.3.0

2 files

0.2.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page