Skip to main content
Glama
kdr

yt-mcp-server

by kdr
README.md
# yt-mcp-server

MCP server with various utility functions for dealing with YouTube data. This server provides tools for working with YouTube URLs, video IDs, and thumbnails.

<img src="sample-usage.png" />

## 📖 Resources

- [Model Context Protocol](https://modelcontextprotocol.io/introduction)

## Prerequisites

- Python 3.12 or higher
- [UV](https://github.com/astral-sh/uv) package manager

## Setup

### 1. Install UV

If you haven't installed UV yet, you can install it using:

```bash
brew install uv
# alternatively curl -LsSf https://astral.sh/uv/install.sh | sh
```

### 2. Installation Methods

#### Method 1: Install from GitHub (Recommended)

This is the simplest way to install and run the server:

```bash
uvx --from git+https://github.com/kdr/yt-mcp-server.git server
```

#### Method 2: Local Development Setup

If you want to modify the code locally:

```bash
git clone https://github.com/kdr/yt-mcp-server.git
cd yt-mcp-server
uv venv
source .venv/bin/activate  # On Unix/macOS
# or
.venv\Scripts\activate  # On Windows
uv pip install -e .
```

### 3. Configure MCP Client

Add the following configuration to your MCP client settings:

```json
{
    "mcpServers": {
        "yt-mcp-server": {
            "command": "uvx",
            "args": [
                "--from",
                "git+https://github.com/kdr/yt-mcp-server.git",
                "server"
            ]
        }
    }
}
```

For local development (Method 2), use this configuration instead:

```json
{
    "mcpServers": {
        "yt-mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/PARENT/FOLDER/yt-mcp-server/yt_mcp_server",
                "run",
                "main.py"
            ]
        }
    }
}
```

## Available Tools

The following tools are available to the LLM:

- `get_watch_url`: Returns the YouTube watch URL for a given video ID, optionally starting at a specific time
  - Parameters:
    - `video_id`: The YouTube video ID
    - `start_time`: (Optional) The start time in seconds

- `get_thumbnail_url`: Returns the thumbnail URL for a given YouTube video ID
  - Parameters:
    - `video_id`: The YouTube video ID

- `get_normalized_url`: Normalizes various YouTube URL formats to the canonical watch URL and extracts the video ID
  - Parameters:
    - `url`: The YouTube URL to normalize

TDQS

A4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct output: watch URL, thumbnail URL, and normalized URL. Inputs differ (video ID vs. URL), so there is no overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent get_ verb_noun pattern, clearly indicating the returned resource. The naming convention is uniform and predictable.

Tool Count5/5

The server is narrowly scoped to YouTube URL helpers, and 3 tools is an appropriate size for this purpose. Each tool earns its place without redundancy.

Completeness5/5

The server covers the core operations for URL generation, thumbnails, and normalization. The get_normalized_url tool effectively handles URL parsing and standardization, leaving no obvious missing functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues