trackmcp
Back to directory
neal3000

mcp_media_server

View on GitHub

mcp media server

0 stars PythonServers & Infrastructure Updated Oct 19, 2025

Documentation

MCP Media Server

A Model Context Protocol (MCP) server and client for listing and playing media files from `~/Media/MOVIES`. Supports stdio, HTTP, and HTTPS transports, compatible with Claude Desktop.

Features

  • List Movies: Browse all media files in your Movies directory
  • Play Movies: Start playback using system default media player
  • Multiple Transports: stdio (for Claude Desktop), HTTP, and HTTPS
  • Cross-Platform: Works on Linux, ( later macOS, and Windows )

Installation

bash
# Install dependencies
pip install -r requirements.txt

# Or install individually
pip install mcp starlette uvicorn sse-starlette

Quick Start

Server

stdio (for Claude Desktop):

bash
python media_server.py --transport stdio

HTTP:

bash
python media_server.py --transport http --host 0.0.0.0 --port 3000

HTTPS:

there is no built in https (regardless of what said) use Caddy as reverse proxy to handle https and forwad http to media_server

bash
### Client

**List movies via stdio:**

python media_client.py --protocol stdio --command list

code
**Play movie via stdio:**

python media_client.py --protocol stdio --command play --movie "example.mp4"

code
**List movies via HTTP:**

python media_client.py --protocol http --url http://localhost:3000/sse --command list

code
**Play movie via HTTPS:**

python media_client.py --protocol https --url https://localhost:3001/sse \

--command play --movie "example.mp4"

code
## Caddy for https

pi5c.example.com:3001 {

tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/privkey.pem

reverse_proxy localhost:3000

}

code
In my case "pi5c.example.com" is public DNS entry with a local IP. There has got to be a better way,
but it works for now.

I have a wildcard cert for *.example.com which I copied locally 
Copy the certs to  /etc/caddy/certs/ (create if missing) and change owner to caddy

mkdir -p /etc/caddy/certs

cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/caddy/certs/

cp /etc/letsencrypt/live/example.com/privkey.pem /etc/caddy/certs/

chown caddy:caddy /etc/caddy/certs/*

chmod 644 /etc/caddy/certs/fullchain.pem

chmod 600 /etc/caddy/certs/privkey.pem

code
## Configuration

### Media Directory

By default, the server looks for media files in `~/Media/MOVIES`. To change this, edit the `MEDIA_DIR` variable in `media_server.py`:

MEDIA_DIR = Path.home() / "Media" / "MOVIES"

code
### Supported File Types

The following video formats are supported:
- .mp4, .mkv, .avi, .mov, .wmv, .flv, .webm, .m4v, .mpg, .mpeg

To add more formats, edit the `MEDIA_EXTENSIONS` set in `media_server.py`.

## Claude Desktop Integration

Add to your Claude Desktop configuration (`claude_desktop_config.json`):

{

"mcpServers": {

"media-server": {

"command": "python",

"args": ["/path/to/media_server.py", "--transport", "stdio"]

}

}

}

code
## n8n Integration
UNTESTED
For n8n, use the HTTP or HTTPS transport:

1. Start the server with HTTP/HTTPS transport
2. In n8n, use the HTTP Request node to connect to `http://your-server:8000/sse`
3. Use POST requests to `/messages` endpoint for MCP communication

## Media Player Requirements

The server will automatically detect and use available media players:

**Linux:**
- MPV (`mpv`)  this is the only player that works reliably
- VLC (`vlc`)
- MPlayer (`mplayer`)
- Or system default (`xdg-open`)

**macOS:**
- Uses `open` command (system default player)

**Windows:**
- Uses `os.startfile()` (system default player)

### Install a Player (Linux)

Ubuntu/Debian

sudo apt install vlc

Fedora

sudo dnf install vlc

Arch

sudo pacman -S vlc

code
## API Reference

### Tools

#### list_movies

Lists all media files in the Movies directory.

**Arguments:** None

**Returns:** List of movies with name, path, size, and file type

**Example:**

{

"name": "list_movies",

"arguments": {}

}

code
#### play_movie

Plays a specific movie using the system's default media player.

**Arguments:**
- `filename` (string, required): Name of the movie file

**Returns:** Status message indicating success or error

**Example:**

{

"name": "play_movie",

"arguments": {

"filename": "example.mp4"

}

}

code
## Server Command-Line Options

usage: media_server.py [-h] [--transport {stdio,http,https}] [--host HOST]

[--port PORT] [--certfile CERTFILE] [--keyfile KEYFILE]

optional arguments:

--transport {stdio,http}

Transport protocol to use (default: stdio)

--host HOST Host to bind to for HTTP/HTTPS (default: 127.0.0.1)

--port PORT Port to bind to for HTTP/HTTPS (default: 8000)

code
## Client Command-Line Options

usage: media_client.py [-h] --protocol {stdio,http,https} --command {list,play}

[--movie MOVIE] [--url URL] [--server-script SERVER_SCRIPT]

optional arguments:

--protocol {stdio,http,https}

Protocol to use for connecting to server

--command {list,play}

Command to execute (list or play)

--movie MOVIE Movie filename to play (required for 'play' command)

--url URL Server URL for HTTP/HTTPS (e.g., http://localhost:8000/sse)

--server-script SERVER_SCRIPT

Path to server script for stdio (default: media_server.py)

code
## Troubleshooting

### No media player found

Install MPV or another supported media player:

sudo apt install mpv # Linux

code
### Connection errors with HTTP/HTTPS

- Check that the server is running
- Verify the URL includes `/sse` endpoint
- For HTTPS, ensure certificate files are valid

### Permission errors

Ensure the `~/Media/MOVIES` directory exists and is readable:

mkdir -p ~/Media/MOVIES

chmod 755 ~/Media/MOVIES

code
## Security Notes

- The server only accesses files in the configured media directory
- The server does not modify or delete any files

## License

MIT License - Feel free to use and modify as needed.

Frequently asked questions

What is mcp_media_server?

mcp_media_server is mcp media server

How do I install mcp_media_server?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is mcp_media_server open source?

Yes — it is hosted on GitHub at https://github.com/neal3000/mcp_media_server.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP