Skip to main content
Glama
hivementality-ai

makemkv-mcp

makemkv-mcp

Python 3.10+ License: MIT 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-mcp

With pip

pip install .

# Run locally (stdio)
makemkv-mcp

# Run on the network (HTTP)
makemkv-mcp --transport streamable_http --port 8099

With Docker

docker-compose up -d

Installation

Prerequisites

  • Python 3.10+

  • MakeMKV with makemkvcon in your PATH — download here

  • An 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.sh

The 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.sh

The 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.ps1

The installer will offer to create a scheduled task for auto-start at login.

Configuration

Generate the default config file:

makemkv-mcp --init-config

This writes to the platform-specific default location:

Platform

Config path

Linux

~/.config/makemkv-mcp/config.yaml

macOS

~/Library/Application Support/makemkv-mcp/config.yaml

Windows

%APPDATA%\makemkv-mcp\config.yaml

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 8099

Then 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 -d

The container exposes port 8099 by default and expects the optical drive passed through as a device.

MCP Tools Reference

Tool

Type

Description

makemkv_list_drives

read-only

List optical drives and disc status

makemkv_scan_disc

read-only

Scan disc for titles, streams, durations, sizes

makemkv_rip_title

action

Start ripping a single title (returns job ID immediately)

makemkv_rip_all

action

Start ripping all titles (returns job ID immediately)

makemkv_backup_disc

action

Full disc backup (returns job ID immediately)

makemkv_job_status

read-only

Check job progress, status, and result

makemkv_list_jobs

read-only

List recent jobs with optional status filter

makemkv_cancel_job

destructive

Cancel a queued or running job

makemkv_eject

action

Eject disc from drive

makemkv_monitor

action

Start, stop, or check status of the auto-rip monitor

makemkv_get_config

read-only

Get current configuration as YAML

makemkv_set_config

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: true

Or 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

longest

Rips only the longest title (usually the main movie)

all

Rips every title on the disc

min_duration

Rips all titles longer than makemkv.min_title_length seconds

How it works

  1. The monitor polls drives every poll_interval seconds

  2. When a new disc is detected (via MD5 fingerprint of drive + disc name), it scans the disc

  3. Based on the strategy, it creates rip job(s)

  4. After a successful rip, the disc is optionally ejected

  5. Notifications are sent through all configured channels

Notifications

Discord webhooks

  1. Create a webhook in your Discord server (Server Settings > Integrations > Webhooks)

  2. 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 tools
makemkv_backup_discC

Full disc backup. Returns immediately with a job ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_jobA
Destructive

Cancel a queued or running rip job.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_configA
Read-only

Get current server configuration as YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_statusA
Read-onlyIdempotent

Check the status and progress of a rip job.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_drivesA
Read-onlyIdempotent

List optical drives and their disc status.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_jobsB
Read-onlyIdempotent

List recent rip jobs with optional status filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_discB
Read-onlyIdempotent

Scan a disc for titles, streams, durations, and sizes.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 12 tool updatesv0.1.0
    • First observedmakemkv_backup_disc
    • First observedmakemkv_cancel_job
    • First observedmakemkv_eject
    • First observedmakemkv_get_config
    • First observedmakemkv_job_status
    • First observedmakemkv_list_drives
    • First observedmakemkv_list_jobs
    • First observedmakemkv_monitor
    • First observedmakemkv_rip_all
    • First observedmakemkv_rip_title
    • First observedmakemkv_scan_disc
    • First observedmakemkv_set_config

TDQS

A3.7/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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