MCP server for video transcripts, screenshots, and OCR on YouTube and web videos.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y ocular-audio-mcp
MCP client config
{
"mcpServers": {
"ocularaudio": {
"command": "npx",
"args": [
"-y",
"ocular-audio-mcp"
]
}
}
}Universal local-first media intelligence for AI agents.
OcularAudio lets MCP-compatible AI systems watch, listen to, search, inspect, compare, and reason over media. It turns URLs, streams, and local media into reusable timestamped evidence: metadata, transcripts, frames, OCR, retrieval results, multimodal moments, and cross-video intelligence.
v1.3.0 · MIT
Research and lecture analysis · product demonstrations · competitor analysis · interviews · technical talks · UI walkthroughs · multi-video comparison · evidence-grounded AI investigation.
| Capability | User outcome |
|---|---|
| Universal sources | Analyze URLs, files and streams through one interface |
| Transcript evidence | Find exactly when something was said |
| Visual evidence | Inspect what was shown at a timestamp |
| OCR | Search text visible inside video frames |
| Hybrid retrieval | Combine speech and visual evidence |
| Multimodal moments | Understand speech and visuals together |
| Batch analysis | Investigate collections of videos |
| Cross-video comparison | Compare evidence across sources |
| Agentic workflows | Execute bounded evidence investigations |
| Capability modes | Trade speed for analysis depth |
| Cache | Make repeated analysis faster |
| MCP prompts | Start common investigation workflows |
| MCP resources | Give hosts operational context |
| HTTP deployment | Run as a protected network service |
npx -y ocular-audio-mcp
Local MCP hosts can launch the same command. Example:
{
"mcpServers": {
"ocular-audio": {
"command": "npx",
"args": ["-y", "ocular-audio-mcp"]
}
}
}
Claude Code:
claude mcp add ocular-audio -- npx -y ocular-audio-mcp
Codex CLI:
codex mcp add ocular-audio -- npx -y ocular-audio-mcp
npx ocular-audio "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
npx ocular-audio --check
npx ocular-audio --json "URL"
npx ocular-audio --visual-index --ocr "URL"
npx ocular-audio --multimodal-search "pricing" "URL"
npx ocular-audio --plan "Find the pricing discussion and inspect its visual evidence"
npx ocular-audio --agentic "Find every pricing discussion and inspect the relevant slides"
MCP host / agent
|
MCP tools + prompts + resources
|
Universal source resolver
|
Evidence: metadata + transcript + timestamps + chapters
/ | \
visual OCR retrieval
\ | /
multimodal moments
|
batch intelligence
|
agentic execution
|
operations / audit / readiness
Media/evidence: get_ocular_audio_transcript, get_ocular_audio_video_context, search_ocular_audio_video, get_ocular_audio_video_timeline, inspect_ocular_audio_moment, get_ocular_audio_metadata, get_ocular_audio_chapters, inspect_ocular_audio_source, get_ocular_audio_capabilities.
Visual/OCR: get_ocular_audio_video_screenshots, index_ocular_audio_video_visuals, search_ocular_audio_visuals, get_ocular_audio_video_frame, get_ocular_audio_video_frame_burst, crop_ocular_audio_video_frame.
Retrieval/multimodal: search_ocular_audio_hybrid, analyze_ocular_audio_multimodal, inspect_ocular_audio_multimodal_moment, search_ocular_audio_cache.
Batch: analyze_ocular_audio_batch, search_ocular_audio_videos, compare_ocular_audio_videos, get_ocular_audio_batch, list_ocular_audio_batches.
Agentic/operations: plan_ocular_audio_analysis, run_ocular_audio_analysis, get_ocular_audio_health, get_ocular_audio_audit, get_ocular_audio_contract, get_ocular_audio_identity.
Cache: list_ocular_audio_cache, clear_ocular_audio_cache.
stdio is the default local MCP transport and requires no HTTP authentication.
npx ocular-audio --transport streamable-http --host 127.0.0.1 --port 8000
The MCP endpoint is /mcp. For network exposure, configure authentication, real issuer/resource URLs, allowed hosts and allowed origins. Do not expose an unauthenticated instance to an untrusted network.
cp .env.example .env
docker compose -f docker/docker-compose.yml up --build -d
The supplied deployment uses Python 3.11, FFmpeg, a persistent cache volume, a read-only container filesystem, dropped capabilities, no-new-privileges, restart policy and a healthcheck.
For internet-facing deployments, use TLS and an organization identity provider. The built-in static bearer verifier is intended for controlled deployments and can be replaced by JWT validation or RFC 7662 introspection.
The NPM package does not hide native Python/system prerequisites; OcularAudio is a local media-processing server rather than a hosted API.
Operator-supplied cookies.txt can be used for sources that require an authenticated browser session. Never commit cookies, access tokens or credentials.
npm install
npm run check
npm pack
This creates ocular-audio-mcp-1.3.0.tgz. Inspect it before publishing:
npm publish ocular-audio-mcp-1.3.0.tgz --access public
See RELEASE_v1.3.0.md. A manual GitHub Actions workflow can also build and upload the exact tarball as an artifact.
python -m unittest discover -s tests -v
node --check bin/cli.js
npm run check
CI additionally validates the MCP SDK surface, tool/resource/prompt registration, Streamable HTTP authorization behavior, compilation, CLI syntax and package metadata.
MIT. See LICENSE.