streamprobe-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@streamprobe-mcp Why is https://cdn.example.com/live/master.m3u8 stalling?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
streamprobe-mcp
An MCP server that tells you why an HLS or DASH stream is broken.
Point it at a manifest URL and ask. It reads the playlist or MPD, checks the rendition ladder, the segment timing, the live window and the protection, and reports what is wrong with the evidence it judged on.
No ffmpeg. Manifest and delivery problems are HTTP and text, not pixels, so
this runs from npx with nothing else installed. That is the difference between
this and the media-processing MCP servers: they transcode, this diagnoses.
Install
Claude Code:
claude mcp add streamprobe -- npx -y streamprobe-mcpClaude Desktop, Cursor, or anything else that speaks MCP over stdio:
{
"mcpServers": {
"streamprobe": {
"command": "npx",
"args": ["-y", "streamprobe-mcp"]
}
}
}Node 20 or newer. No other dependencies.
Related MCP server: Video Brief Manifest MCP Server
Ask it things
Why is https://cdn.example.com/live/master.m3u8 stalling for some viewers?
What DRM is on this stream, and which key IDs?
Compare the ladder on our staging manifest against production.
Tools
Tool | What it answers |
| What is wrong with this stream, worst first. Pass |
| What is this stream: protocol, live or VOD, the ladder, codecs, audio and subtitle tracks, protection, ad markers. No opinions. |
| Which systems protect it, with key IDs and license URIs. Reads the manifest only; never requests a license or attempts decryption. |
| Are the segments actually there. Requests the newest few and reports failures and timings. |
All four accept a headers object, for CDN tokens or a Referer your origin
requires.
What it checks
Ladder shape: missing CODECS, duplicate bitrates, a rendition higher up the
ladder with a smaller picture, single-rendition ladders, missing audio, and HLS
variants pointing at an AUDIO group that has no EXT-X-MEDIA entry.
Delivery: segments longer than the declared EXT-X-TARGETDURATION, live windows
holding fewer than three target durations, VOD playlists with no
EXT-X-ENDLIST, renditions whose playlists do not load, and dynamic MPDs with
no minimumUpdatePeriod.
Protection: Widevine, PlayReady, FairPlay, ClearKey and AES-128, identified by the UUID both protocols agree on, plus a warning for a system it does not recognise rather than silently reporting "no DRM".
Every finding quotes the line, attribute or number it decided on. A diagnosis you cannot verify against your own manifest is one you should not trust.
Example
$ npx streamprobe-mcp # or: pnpm example <url> --deep
Protocol: HLS (6)
Type: vod
Structure: multivariant
Renditions: 24 video, 3 audio, 1 text
Protection: none declared
Video ladder:
480x270 541 kbps avc1.640015,mp4a.40.2
640x360 902 kbps avc1.64001e,mp4a.40.2
1920x1080 6208 kbps avc1.640028,mp4a.40.2
0 errors, 0 warnings, 0 notes
No problems found.What it does not do
It does not transcode, download, or decrypt. It does not request DRM licenses. It does not measure real playback quality, because that needs a player and a viewer; this reads what the manifest claims and checks whether the delivery matches. For encoding and transcoding work, use one of the ffmpeg MCP servers, which is a different job.
It reads media bytes in exactly one place: check_segments requests the first
two bytes of a segment to see whether it exists.
Use it without MCP
The diagnostics are a plain library, and importing it does not pull in the MCP SDK:
import { probeStream } from "streamprobe-mcp";
const { model, findings } = await probeStream(url, { deep: true });
for (const f of findings) console.log(f.severity, f.title, f.evidence);Useful in CI, or in a monitoring job that should fail on a regression in the ladder.
Contributing
Checks are the interesting part, and they are deliberately easy to add: a
Check is an id, an applies predicate and a run that returns findings.
See src/checks/index.ts. A new check needs a test proving it fires, and the
existing "finds nothing wrong with a healthy ladder" test must still pass. That
test exists because a diagnostic tool that cries wolf on a correct manifest is
worse than no tool.
pnpm install
pnpm check # format, typecheck, test, build, pack
pnpm example <manifest-url> --deepLicence
MIT. Built by CodeDTX, who build OTT and Android TV products and got tired of reading manifests by eye.
Available Tools
4 toolscheck_segmentsCheck that segments are really thereA
Request the newest few segments of the first rendition and report failures and timings. Answers the case where the manifest is valid but the media behind it is missing or slow. Uses HEAD where the CDN allows it.
Inputs: url (required), sample, headers.
describe_streamDescribe a stream without judging itA
The facts only: protocol, live or VOD, the rendition ladder, codecs, audio and subtitle tracks, protection and ad markers. Use when you want to know what a stream is rather than what is wrong with it.
Inputs: url (required), headers.
diagnose_streamDiagnose an HLS or DASH streamA
Fetch a manifest and report what is wrong with it, worst first. Start here when a stream misbehaves and you do not yet know why. Set deep to also read each rendition's media playlist, which is required to catch segment timing and live window problems.
Inputs: url (required), deep, headers, maxRenditions.
inspect_drmInspect stream protectionA
Report the DRM systems, key identifiers and license URIs a manifest declares. Reads the manifest only: it never requests a license or attempts decryption.
Inputs: url (required), headers.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
diagnose_stream is intentionally broad as a triage entry point, while describe_stream, inspect_drm, and check_segments each target a distinct concern. Some overlap exists between diagnose_stream's deep mode and check_segments, but the descriptions clearly delineate when each should be used.
All tool names follow a consistent verb_noun pattern: diagnose_stream, describe_stream, inspect_drm, check_segments. The verbs are distinct and the objects clearly indicate the target of each operation.
Four tools is well-scoped for a stream diagnostics server. Each tool covers a meaningful facet of the domain—overall diagnosis, factual description, DRM inspection, and segment health—without unnecessary redundancy.
The set covers the main streaming diagnostics workflows: triage, stream description, DRM inspection, and segment validation. Minor gaps remain, such as check_segments only examining the first rendition and no tool for deeper per-track analysis, but the core surface is reasonably complete.
Maintenance
Related MCP Connectors
Audit public webpages and supplied markup for HTML, CSS, SEO, JSON-LD, and link issues.
DNS, TLS, HTTP and SEO checks, plus stateful change watches that diff a page over time.
Audits TLS/SSL handshake latency, HSTS headers, and HTTPS availability on the edge.
Parse WebVTT, SRT, or TTML for conformance, timing, overlaps, line length, and reading speed.
Related MCP Servers
- AlicenseAqualityDmaintenanceLoudness compliance verdicts against formal broadcast standards (EBU R128, ATSC A/85). Measures audio/video with ffmpeg and returns a pass/fail verdict with exact deltas and remediation parameters.247 PyPI1MIT
- AlicenseAqualityDmaintenanceValidates structured AI video briefs for subject, motion, camera, visual-detail, and audio-direction signals, then builds a portable preflight manifest. Runs locally over stdio and does not call any generation backend.2MIT
- AlicenseNot gradedqualityDmaintenanceOffline, dependency-free transport-layer hardening auditor for MCP Streamable HTTP endpoints, probing for DNS rebinding, CORS, session-ID, cleartext, and protocol conformance defects with a severity-weighted score and CI gate.MIT
- AlicenseAqualityCmaintenanceProvides safe, read-only network diagnostics (ping, DNS, HTTP health, TLS expiry, port checks, traceroute, and fleet sweeps) for monitoring infrastructure.7MIT