MediaRouter / app /mcp /tools /probe.py
basyx's picture
Upload 142 files
fba6023 verified
Raw
History Blame Contribute Delete
1.79 kB
from __future__ import annotations
from typing import Any
from mcp.server.fastmcp import FastMCP
from app.mcp.registry import MCPRegistry, MediaInput
def register_probe_tools(server: FastMCP[Any], registry: MCPRegistry) -> None:
"""Register FFprobe metadata views through MediaProcessor.probe."""
@server.tool(description="Return complete normalized FFprobe metadata.")
async def probe_media(input: MediaInput) -> dict[str, Any]:
"""Probe all media streams and container metadata."""
return await registry.run_probe("probe_media", input, "all")
@server.tool(
name="probe_video_metadata",
description="Return FFprobe video stream, resolution, FPS, and rotation metadata.",
)
async def ffprobe_video_metadata(input: MediaInput) -> dict[str, Any]:
"""Return the video-specific FFprobe metadata view."""
return await registry.run_probe("probe_video_metadata", input, "video")
@server.tool(description="Return FFprobe audio stream metadata.")
async def audio_metadata(input: MediaInput) -> dict[str, Any]:
"""Return audio streams, duration, and bitrate."""
return await registry.run_probe("audio_metadata", input, "audio")
@server.tool(description="Return all video, audio, and subtitle stream summaries.")
async def stream_info(input: MediaInput) -> dict[str, Any]:
"""Return normalized stream information."""
return await registry.run_probe("stream_info", input, "streams")
@server.tool(description="Return container, tags, creation date, size, and duration.")
async def container_info(input: MediaInput) -> dict[str, Any]:
"""Return normalized container information."""
return await registry.run_probe("container_info", input, "container")