makemkv-mcp
Click on "Install 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., "@makemkv-mcpscan the disc in the drive and rip the longest title"
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.
makemkv-mcp
What is this?
makemkv-mcp is a standalone Model Context Protocol (MCP) server that wraps the makemkvcon command-line tool, exposing disc ripping capabilities as tools that any MCP-compatible client (Claude Desktop, Hivemind, etc.) can call. It runs on the machine with MakeMKV installed and an optical drive attached. The MCP client connects to it remotely via Streamable HTTP or locally via stdio.
Related MCP server: Markdownify MCP Server
Features
Scan optical drives and detect loaded discs
Scan disc contents — titles, streams, durations, sizes, codecs
Rip individual titles or all titles as async background jobs
Full disc backup
Persistent job queue with real-time progress tracking (SQLite-backed)
Auto-rip daemon with configurable strategies (
longest,all,min_duration)Discord webhook and generic webhook notifications
Agent callback notifications for rip lifecycle events
Cross-platform support (Linux, macOS, Windows)
Runs over stdio (local) or Streamable HTTP (remote/network)
Quick Start
From source
git clone https://github.com/hivementality/makemkv-mcp.git
cd makemkv-mcp
pip install .
makemkv-mcpWith pip
pip install .
# Run locally (stdio)
makemkv-mcp
# Run on the network (HTTP)
makemkv-mcp --transport streamable_http --port 8099With Docker
docker-compose up -dInstallation
Prerequisites
Python 3.10+
MakeMKV with
makemkvconin your PATH — download hereAn optical drive (Blu-ray, DVD, etc.)
Linux
# Install MakeMKV (Ubuntu/Debian example)
sudo apt install makemkv-bin makemkv-oss
# Install makemkv-mcp
git clone https://github.com/hivementality/makemkv-mcp.git
cd makemkv-mcp
./install.shThe installer will offer to set up a systemd service for auto-start.
macOS
# Install MakeMKV from https://www.makemkv.com/
git clone https://github.com/hivementality/makemkv-mcp.git
cd makemkv-mcp
./install.shThe installer will offer to set up a launchd service for auto-start.
Windows
# Install MakeMKV from https://www.makemkv.com/
git clone https://github.com/hivementality/makemkv-mcp.git
cd makemkv-mcp
.\install.ps1The installer will offer to create a scheduled task for auto-start at login.
Configuration
Generate the default config file:
makemkv-mcp --init-configThis writes to the platform-specific default location:
Platform | Config path |
Linux |
|
macOS |
|
Windows |
|
You can also pass --config /path/to/config.yaml or set the MAKEMKV_MCP_CONFIG environment variable.
Full config reference
server:
host: "0.0.0.0" # Bind address for HTTP transport
port: 8099 # Port for HTTP transport
transport: "stdio" # "stdio" or "streamable_http"
makemkv:
binary: "makemkvcon" # Path or name of makemkvcon binary
default_output: "~/makemkv-output" # Default rip output directory
min_title_length: 120 # Minimum title duration (seconds) for auto-rip filtering
timeout: 7200 # Max seconds for a single rip operation
auto_rip:
enabled: false # Enable auto-rip on disc insertion
poll_interval: 30 # Seconds between drive polls
strategy: "longest" # Title selection: "longest", "all", or "min_duration"
eject_after: true # Eject disc after successful rip
notifications:
agent_notify: true # Send notifications back to MCP agent
discord_webhook: null # Discord webhook URL
webhook_url: null # Generic webhook URL (POST JSON)Usage
With Claude Desktop (stdio)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"makemkv": {
"command": "makemkv-mcp"
}
}
}With Hivemind / Remote clients (Streamable HTTP)
Start the server on the machine with the optical drive:
makemkv-mcp --transport streamable_http --host 0.0.0.0 --port 8099Then point your MCP client at it:
{
"mcpServers": {
"makemkv": {
"url": "http://YOUR_IP:8099/mcp"
}
}
}With Docker
# Edit docker-compose.yaml to set your output path and drive device
docker-compose up -dThe container exposes port 8099 by default and expects the optical drive passed through as a device.
MCP Tools Reference
Tool | Type | Description |
| read-only | List optical drives and disc status |
| read-only | Scan disc for titles, streams, durations, sizes |
| action | Start ripping a single title (returns job ID immediately) |
| action | Start ripping all titles (returns job ID immediately) |
| action | Full disc backup (returns job ID immediately) |
| read-only | Check job progress, status, and result |
| read-only | List recent jobs with optional status filter |
| destructive | Cancel a queued or running job |
| action | Eject disc from drive |
| action | Start, stop, or check status of the auto-rip monitor |
| read-only | Get current configuration as YAML |
| action | Update a config value at runtime (in-memory only) |
Tool details
makemkv_list_drives — Lists all detected optical drives with disc status. Returns a markdown table (or JSON). Shows disc name and device path for each drive.
makemkv_scan_disc — Scans a disc and returns all titles with their streams (video, audio, subtitle), durations, sizes, chapter counts, and output filenames. Highlights the longest title.
makemkv_rip_title / makemkv_rip_all / makemkv_backup_disc — All rip operations are async. They create a background job, return the job ID immediately, and the rip runs in the background. Use makemkv_job_status to check progress. The server prevents double-ripping the same drive.
makemkv_set_config — Takes a dot-separated key like auto_rip.enabled and a value. The value is automatically type-coerced to match the existing type. Changes are in-memory only (not persisted to disk), letting agents tweak settings without file writes.
Auto-Rip Mode
Auto-rip monitors your drives and automatically starts ripping when a disc is inserted.
Enable auto-rip
In config.yaml:
auto_rip:
enabled: true
poll_interval: 30
strategy: "longest"
eject_after: trueOr at runtime via an agent:
Agent: calls makemkv_set_config(key="auto_rip.enabled", value="true")
Agent: calls makemkv_monitor(action="start")Strategies
Strategy | Behavior |
| Rips only the longest title (usually the main movie) |
| Rips every title on the disc |
| Rips all titles longer than |
How it works
The monitor polls drives every
poll_intervalsecondsWhen a new disc is detected (via MD5 fingerprint of drive + disc name), it scans the disc
Based on the strategy, it creates rip job(s)
After a successful rip, the disc is optionally ejected
Notifications are sent through all configured channels
Notifications
Discord webhooks
Create a webhook in your Discord server (Server Settings > Integrations > Webhooks)
Add the URL to your config:
notifications:
discord_webhook: "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"Discord notifications include color-coded embeds:
Event | Color | Emoji |
Disc detected | Blue | CD |
Rip started | Orange | Arrows |
Rip completed | Green | Check |
Rip failed | Red | X |
Disc ejected | Purple | Eject |
Embeds include fields for disc name, job ID, status, progress, duration, and errors as applicable.
Generic webhooks
For custom integrations (Home Assistant, Slack via incoming webhook, etc.):
notifications:
webhook_url: "https://your-service.com/hook"The server POSTs JSON with this structure:
{
"event": "rip_completed",
"data": {
"id": "a3f7c2d1",
"job_type": "rip_title",
"disc_name": "INTERSTELLAR",
"status": "completed",
"progress": 100.0,
"duration_seconds": 2700.5,
"output_dir": "/output/INTERSTELLAR",
"result": {
"success": true,
"files": ["/output/INTERSTELLAR/title00.mkv"]
}
}
}Agent Notifications
When notifications.agent_notify is true (the default), the server tracks rip lifecycle events internally. MCP agents see updated state the next time they call makemkv_job_status or makemkv_list_jobs — completed jobs will show their final status, output files, and duration.
Events tracked:
disc_detected — a new disc was inserted
rip_started — a rip job began processing
rip_completed — a rip job finished successfully
rip_failed — a rip job encountered an error
disc_ejected — a disc was ejected after ripping
Example Conversations
These show what interacting with an agent connected to makemkv-mcp looks like:
"What drives do I have?"
User: What drives do I have?
Agent: Let me check your optical drives.
> calls makemkv_list_drives()
You have 1 optical drive:
Drive 0: BD-RE ASUS BW-16D1HT — Disc loaded: INTERSTELLAR (/dev/sr0)"What's on the disc?"
User: What's on the disc?
Agent: Scanning the disc now...
> calls makemkv_scan_disc(drive_index=0)
Interstellar (INTERSTELLAR):
Title 0: Interstellar — 2:49:00 — 42.1 GB — 33 chapters (longest)
Title 1: Special Features — 0:45:12 — 8.2 GB
Title 2: Trailer — 0:02:30 — 350 MB
The main movie is Title 0 at 2h49m and 42.1 GB."Rip the main movie"
User: Rip the main movie.
Agent: Starting the rip now.
> calls makemkv_rip_title(drive_index=0, title_index=0)
Rip job started! Job ID: a3f7c2d1
Disc: Interstellar | Title: 0 | Output: ~/makemkv-output/Interstellar/
I'll check on it for you.
> calls makemkv_job_status(job_id="a3f7c2d1")
Job a3f7c2d1: running — 34.2%
[Later]
> calls makemkv_job_status(job_id="a3f7c2d1")
Done! Interstellar has been saved to ~/makemkv-output/Interstellar/title00.mkv
(42.1 GB). The disc has been ejected. Total time: 45 minutes."Start auto-ripping"
User: Turn on auto-rip so it grabs the main movie whenever I put a disc in.
Agent: I'll enable auto-rip with the "longest" strategy.
> calls makemkv_set_config(key="auto_rip.enabled", value="true")
> calls makemkv_monitor(action="start")
Auto-rip is now active. Whenever you insert a disc, I'll automatically
rip the longest title (usually the main movie) and eject the disc when done.Development
# Clone and install in development mode
git clone https://github.com/hivementality/makemkv-mcp.git
cd makemkv-mcp
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=makemkv_mcp
# Lint
ruff check .Project structure
makemkv_mcp/
server.py # MCP server, tools, CLI entry point
makemkv.py # makemkvcon wrapper, output parser, async runner
jobs.py # Persistent job queue (aiosqlite)
notifications.py # Discord, webhook, agent notifications
drive_monitor.py # Auto-rip polling daemon
config.py # Pydantic config models, YAML loader
platform/ # Platform-specific eject/detect
linux.py
darwin.py
windows.py
tests/
test_parser.py # makemkvcon output parsing
test_jobs.py # Job queue operations
test_config.py # Config loading/saving
test_notifications.py # Notification channels
test_server.py # Integration tests (mocked makemkvcon)API / Protocol
This server implements the Model Context Protocol (MCP), an open standard for connecting AI assistants to external tools and data sources. MCP provides a structured way for LLM agents to discover and invoke tools over a transport layer.
makemkv-mcp supports two transports:
stdio — the server communicates over stdin/stdout. Best for local usage where the MCP client runs on the same machine (e.g., Claude Desktop).
Streamable HTTP — the server listens on a port and clients connect via HTTP. Best for network/remote usage where the optical drive is on a different machine than the MCP client.
All tool inputs and outputs follow the MCP tool specification with Pydantic-validated schemas.
License
MIT — see LICENSE file.
Available Tools
12 toolsmakemkv_backup_discC
Full disc backup. Returns immediately with a job ID.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the tool returns immediately with a job ID, which is useful context about asynchronous behavior. However, it lacks critical details like whether this is a destructive operation (e.g., modifies the disc), permission requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that are front-loaded and waste no words. Every sentence adds value: the first states the purpose, and the second clarifies the asynchronous nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, 0% schema description coverage, and an output schema (which helps with return values), the description is incomplete. It lacks parameter explanations, usage context, and behavioral details like side effects or error conditions, making it inadequate for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about parameters. The input schema defines 'drive_index' and 'output_dir', but the description doesn't explain their purpose, usage, or constraints, failing to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Full disc backup') and resource ('disc'), distinguishing it from siblings like 'rip_title' or 'scan_disc'. However, it doesn't explicitly differentiate from 'rip_all', which might also involve backing up content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'rip_all' or 'rip_title'. The description mentions it 'Returns immediately with a job ID', but this doesn't clarify usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_cancel_jobADestructive
Cancel a queued or running rip job.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide 'destructiveHint: true,' indicating a mutation operation. The description adds value by specifying the target ('queued or running rip job'), which clarifies the scope of the destructive action. It doesn't contradict annotations, and it offers useful context beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one parameter, destructive operation) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the core action and target, though it could benefit from more detailed usage guidelines or behavioral context to be fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with one parameter ('job_id') documented only in the schema. The description doesn't add any parameter-specific information beyond what's implied by the tool name. However, with only one parameter, the baseline is higher, and the description's general context partially compensates for the lack of detailed param semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Cancel') and the target ('a queued or running rip job'), providing specific verb+resource information. However, it doesn't explicitly differentiate from sibling tools like 'makemkv_job_status' or 'makemkv_list_jobs' beyond the cancel action itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'queued or running rip job,' suggesting when this tool is applicable. However, it doesn't provide explicit guidance on when to use it versus alternatives (e.g., 'makemcv_job_status' for checking job state) or any prerequisites, leaving some gaps in usage clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_ejectB
Eject disc from the specified drive.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('eject disc') but lacks details on permissions, side effects (e.g., if the drive becomes unavailable after ejection), or error conditions. This is a significant gap for a tool that performs a physical operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero waste—it states the action and the parameter context efficiently. It's front-loaded and appropriately sized for a simple tool, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema, the description is minimally adequate. However, with no annotations and a physical operation involved, it should ideally include more behavioral context (e.g., safety warnings or prerequisites) to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by specifying that the parameter is for 'the specified drive', which clarifies the purpose of the 'drive_index' parameter. With 0% schema description coverage and only one parameter, this compensation is effective, though it doesn't detail format or constraints beyond what's implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('eject') and resource ('disc from the specified drive'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'makemkv_cancel_job' or 'makemkv_list_drives', which might also involve drive operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention prerequisites like needing a disc to be present or when to use it in relation to sibling tools such as 'makemkv_rip_all' or 'makemkv_scan_disc'. This leaves the agent with insufficient context for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_get_configARead-only
Get current server configuration as YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by specifying the output format ('as YAML'), which is not covered by annotations. It doesn't contradict annotations (readOnlyHint=true aligns with 'Get'), and while it could mention more about behavior like response structure or errors, it provides useful context for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, front-loading the key information ('Get current server configuration as YAML'). It's efficiently structured and easy to parse, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter with no properties, read-only operation, and an output schema exists), the description is reasonably complete. It specifies the output format, which complements the output schema, though it could briefly mention the tool's role relative to 'makemkv_set_config' for better context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter ('input') that has no properties, the description doesn't need to explain parameters. It appropriately focuses on the tool's purpose, and since there are effectively zero meaningful parameters, it compensates well by clarifying the output format, earning a high baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current server configuration') with a specific format ('as YAML'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'makemkv_set_config' beyond the obvious get/set distinction, which keeps it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'makemkv_set_config' for configuration management, nor does it mention any prerequisites or context for retrieving configuration. It's a basic statement of function without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_job_statusARead-onlyIdempotent
Check the status and progress of a rip job.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and idempotentHint=true, indicating safe, repeatable reads. The description adds context about checking 'status and progress,' which suggests it returns dynamic job information, but doesn't detail rate limits, auth needs, or specific behavioral traits like error handling. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Check the status and progress') without unnecessary words. Every part earns its place by directly conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter), annotations covering safety, and an output schema (which handles return values), the description is reasonably complete. It could improve by mentioning the job ID parameter or error cases, but it adequately supports agent usage in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (parameter 'job_id' has minimal description), the description compensates by implying the parameter's purpose ('rip job'), but doesn't specify format or constraints. Since there's only one parameter, the baseline is high, and the description adds some meaning beyond the schema, though not exhaustively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Check') and resource ('status and progress of a rip job'), making the purpose evident. It distinguishes from siblings like 'makemkv_list_jobs' (which lists jobs) and 'makemkv_cancel_job' (which cancels jobs) by focusing on status/progress of a specific job. However, it doesn't explicitly mention the job ID parameter, which could enhance specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to check a rip job's status, but doesn't explicitly state when to use this vs. alternatives like 'makemkv_list_jobs' (for listing all jobs) or 'makemkv_monitor' (which might monitor ongoing jobs). No exclusions or prerequisites are mentioned, leaving some ambiguity in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_list_drivesARead-onlyIdempotent
List optical drives and their disc status.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and idempotent operations, which the description does not contradict. The description adds value by specifying that it lists drives and their disc status, providing context on what information is returned. However, it lacks details on potential errors, rate limits, or authentication needs, though annotations cover safety aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and resource, making it efficient and easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, read-only/idempotent annotations, and an output schema), the description is complete enough. It specifies what the tool does, and the output schema handles return values, so no additional details are needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description does not mention the 'response_format' parameter. However, since there is only one parameter and an output schema exists, the description's focus on the tool's purpose compensates adequately. It does not add parameter details, but the minimal parameter count and output schema reduce the need for extensive parameter explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('optical drives and their disc status'), making the purpose specific and unambiguous. It distinguishes itself from siblings like 'makemkv_scan_disc' (which scans disc contents) or 'makemkv_list_jobs' (which lists jobs), as it focuses on hardware drives and their status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking drive availability and disc presence, but does not explicitly state when to use this tool versus alternatives like 'makemkv_scan_disc' for disc content or 'makemkv_list_jobs' for job status. No exclusions or prerequisites are mentioned, leaving usage context somewhat inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_list_jobsBRead-onlyIdempotent
List recent rip jobs with optional status filter.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, repeatable read operation. The description adds minimal behavioral context beyond this—it mentions 'recent' jobs and 'optional status filter,' but doesn't clarify what 'recent' means (e.g., time range, pagination) or other traits like rate limits or authentication needs. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'List recent rip jobs with optional status filter.' It's front-loaded with the core action and includes key details without unnecessary words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations cover safety (read-only, idempotent) and there's an output schema (so return values are documented elsewhere), the description is moderately complete. However, it lacks details on usage context, behavioral nuances (e.g., what 'recent' entails), and differentiation from siblings, leaving gaps for an agent to fully understand when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description mentions 'optional status filter,' which aligns with the 'status_filter' parameter in the schema. However, it doesn't explain the 'limit' parameter or provide additional semantic context beyond what's implied. With one parameter documented in the schema and the description adding some value, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List recent rip jobs with optional status filter.' It specifies the verb ('List'), resource ('recent rip jobs'), and scope ('optional status filter'), but doesn't explicitly differentiate it from sibling tools like 'makemkv_job_status' or 'makemkv_monitor' that might also provide job-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'makemkv_job_status' (which might get details for a specific job) or 'makemkv_monitor' (which might provide real-time updates), nor does it specify prerequisites or appropriate contexts for listing jobs versus other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_monitorB
Start, stop, or check the status of the drive auto-rip monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions actions but doesn't detail effects like whether starting the monitor requires specific permissions, if it runs continuously, what happens on errors, or how status checks return data. This is inadequate for a tool that controls a monitoring process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key actions without any wasted words. It directly communicates the tool's functionality in a clear and structured manner, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (controlling a monitor) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral details, it doesn't fully cover aspects like error handling or operational constraints, leaving gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter semantics beyond what the input schema provides. Schema description coverage is 0%, but the schema itself includes a clear enum description for 'action' (start, stop, status), which compensates somewhat. Since there's only one parameter, the baseline is 4, but the description fails to add any value, so it's scored lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Start, stop, or check') and resource ('drive auto-rip monitor'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'makemkv_rip_all' or 'makemkv_rip_title' that might also involve ripping operations, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't explain if this should be used before or after ripping tools, or how it relates to monitoring versus job status tools like 'makemkv_job_status'. This lack of context leaves the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_rip_allC
Start ripping all titles from disc. Returns immediately with a job ID.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'Returns immediately with a job ID,' which is useful for understanding it's an asynchronous operation. However, it lacks details on permissions, rate limits, error handling, or what the job ID is used for (e.g., with 'makemkv_job_status').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise with two sentences that are front-loaded and waste no words. Each sentence adds value: the first states the action, and the second explains the return behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of an asynchronous ripping operation with 1 parameter (nested with 3 properties) and no annotations, the description is incomplete. It lacks parameter explanations, usage context, and behavioral details like error handling. While an output schema exists (implying return values are documented elsewhere), the description doesn't adequately cover the tool's full scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning parameters are undocumented in the schema. The description provides no information about the 'input' parameter or its nested properties (drive_index, output_dir, min_duration), failing to compensate for the schema gap. This leaves parameters completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start ripping all titles from disc') and resource ('disc'), making the purpose specific and understandable. It distinguishes from sibling 'makemkv_rip_title' by specifying 'all titles' versus a single title, though it doesn't explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'makemkv_rip_title' for specific titles or 'makemkv_backup_disc' for backup operations. The description lacks context about prerequisites, such as needing a disc in the drive or using 'makemkv_list_drives' first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_rip_titleB
Start ripping a single title from disc. Returns immediately with a job ID.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions that it 'Returns immediately with a job ID'. It doesn't disclose behavioral traits like whether it's destructive (likely writes files), requires specific permissions, has rate limits, or what the job ID is used for (e.g., monitoring with 'makemkv_job_status'). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and key behavioral note (immediate return with job ID). There is no wasted verbiage, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no annotations, 0% schema coverage, and an output schema (which might describe the job ID), the description is incomplete. It lacks details on parameters, behavioral implications (e.g., file system changes), and integration with sibling tools like 'makemkv_job_status', making it inadequate for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'title_index' or 'drive_index' mean, what 'output_dir' defaults to, or how to determine valid values. This fails to address the undocumented parameters, leaving semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start ripping') and resource ('a single title from disc'), distinguishing it from sibling tools like 'makemkv_rip_all' which rips all titles. However, it doesn't specify what 'ripping' entails (e.g., extracting video content), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for single-title ripping versus 'makemkv_rip_all' for all titles, but lacks explicit guidance on prerequisites (e.g., disc must be scanned first) or when to use alternatives like 'makemkv_backup_disc'. It provides basic context but no exclusions or detailed comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_scan_discBRead-onlyIdempotent
Scan a disc for titles, streams, durations, and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and idempotent operations, which the description doesn't contradict. However, the description adds minimal behavioral context beyond this—it mentions scanning for specific data types but doesn't cover aspects like execution time, error handling, or dependencies on disc presence. With annotations providing safety hints, the description adds some value but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Scan a disc') and lists key outputs. There is no wasted verbiage, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, simple scanning operation), annotations covering safety, and the presence of an output schema, the description is reasonably complete. It specifies what data is scanned for, which aligns with the tool's purpose. However, it lacks details on usage context or parameter meanings, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning parameters are undocumented in the schema. The description doesn't mention any parameters, so it adds no semantic information beyond what the schema provides. However, with only one parameter (a nested object with two fields), the baseline is moderate as the tool is simple, but the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Scan') and resource ('a disc'), listing what it scans for ('titles, streams, durations, and sizes'). It distinguishes from siblings like 'makemkv_list_drives' (which lists drives) or 'makemkv_rip_title' (which rips content), though it doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention prerequisites like needing a disc inserted or how it differs from 'makemkv_list_drives' for drive information. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makemkv_set_configB
Update a config value at runtime (not persisted to disk).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that updates are 'not persisted to disk', which is a key behavioral trait, but lacks details on permissions needed, whether changes are reversible, error handling, or rate limits. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and adds a critical behavioral detail ('not persisted to disk') without any wasted words. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema (which should cover return values), the description's main gap is the lack of parameter explanation and insufficient behavioral details for a mutation tool. It covers the transient nature but misses other aspects like error conditions or usage context, making it minimally adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any parameters, while the input schema has 1 parameter with 0% description coverage (the schema's 'input' property lacks a description). Since schema coverage is low, the description fails to compensate by explaining what 'input' entails, leaving parameters largely undocumented. The baseline is adjusted due to low coverage, but no value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update a config value') and specifies the resource ('config value'), with the additional detail 'at runtime (not persisted to disk)' distinguishing it from persistent configuration changes. However, it doesn't explicitly differentiate from sibling tools like 'makemkv_get_config', which is a read operation, though the verb 'Update' implies a write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'makemkv_get_config' for reading config values or other tools for related tasks. It mentions the runtime nature but doesn't specify prerequisites, exclusions, or typical scenarios for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
makemkv_backup_disc - First observed
makemkv_cancel_job - First observed
makemkv_eject - First observed
makemkv_get_config - First observed
makemkv_job_status - First observed
makemkv_list_drives - First observed
makemkv_list_jobs - First observed
makemkv_monitor - First observed
makemkv_rip_all - First observed
makemkv_rip_title - First observed
makemkv_scan_disc - First observed
makemkv_set_config
TDQS
Each tool has a clearly distinct purpose with no ambiguity: backup, cancel, eject, get config, job status, list drives, list jobs, monitor, rip all, rip title, scan disc, and set config. The actions and targets are well-defined, making it easy for an agent to select the correct tool.
All tool names follow a consistent 'makemkv_' prefix with snake_case and clear verb_noun patterns (e.g., 'makemkv_backup_disc', 'makemkv_list_drives'). This predictability enhances readability and usability for agents.
With 12 tools, the server is well-scoped for optical disc ripping and management. Each tool serves a specific function in the workflow, from disc handling to job control, without being overly sparse or bloated.
The toolset provides complete coverage for the domain, including disc scanning, ripping (both full and title-specific), job management (status, cancel, list), drive operations (list, eject), configuration handling, and monitoring. There are no obvious gaps that would hinder agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
OCR, transcription, file extraction, and image generation for AI agents via MCP.
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA comprehensive Model Context Protocol server that bridges LLMs with self-hosted media services, enabling natural language control of TV shows, movies, downloads, and notifications while maintaining traditional API access.7AGPL 3.0
- AlicenseAqualityDmaintenanceA Model Context Protocol server that converts diverse file types, including PDFs, images, audio, and Office documents, into Markdown format. It also transforms web content like YouTube transcripts and Bing search results into readable text for model consumption.13347MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides comprehensive video tools: transcript retrieval, video downloading, and automatic subtitle generation using AI speech-to-text. Works with YouTube, Bilibili, Vimeo, and any platform supported by yt-dlp.11MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language control of self-hosted media services like Sonarr, Prowlarr, Overseerr, and Gotify through the Model Context Protocol.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hivementality-ai/makemkv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server