Kodi MCP Server
Provides tools for interacting with Kodi media center, including searching movies and TV shows, checking content existence, playing media, managing playback, scanning libraries, and tracking watch status.
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., "@Kodi MCP Serverplay next unwatched episode of Breaking Bad"
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.
Kodi MCP Server
A Model Context Protocol (MCP) server for interacting with Kodi media center. This server provides tools for querying media libraries, checking existing content, playing media, and managing Kodi remotely.
Features
Library Search: Search movies and TV shows by title, year, or genre
Content Verification: Check if movies/episodes exist before downloading
Smart Playback Control: Play movies/episodes and control playback
Watch Status Tracking: NEW v1.2.0 - Automatically track what you've watched and play next unwatched episodes
Targeted Library Scanning: NEW v1.2.0 - Scan specific TV show directories instead of entire library (fast!)
Library Management: Get statistics, recent additions, and trigger scans
SOCKS5 Proxy Support: Connect to remote Kodi instances through SSH tunnels
Fuzzy Matching: Intelligent title matching for better search results
Installation
Clone the repository:
git clone https://github.com/v-odoo-testing/kodi-mcp-server.git
cd kodi-mcp-serverCreate and activate a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtTest the connection:
python test_connection.py --host 192.168.1.71 --username kodi --password kodiConfiguration
Configure the server using environment variables:
Basic Configuration
export KODI_HOST="192.168.1.71"
export KODI_PORT="8080"
export KODI_USERNAME="kodi"
export KODI_PASSWORD="kodi"
export KODI_TIMEOUT="30"
export USE_HTTPS="false"SOCKS5 Proxy (for remote access)
export SOCKS5_HOST="localhost"
export SOCKS5_PORT="1080"
export SOCKS5_USERNAME="" # Optional
export SOCKS5_PASSWORD="" # OptionalClaude Desktop Integration
Add this configuration to your Claude Desktop config file:
{
"mcpServers": {
"kodi": {
"command": "/path/to/kodi-mcp-server/venv/bin/python",
"args": ["/path/to/kodi-mcp-server/src/server.py"],
"env": {
"KODI_HOST": "192.168.1.71",
"KODI_PORT": "8080",
"KODI_USERNAME": "kodi",
"KODI_PASSWORD": "kodi",
"KODI_TIMEOUT": "30",
"USE_HTTPS": "false",
"SOCKS5_HOST": "",
"SOCKS5_PORT": "1080",
"SOCKS5_USERNAME": "",
"SOCKS5_PASSWORD": ""
}
}
}
}Available Tools
Search Tools
search_movies- Search movies by title, year, or genresearch_tv_shows- Search TV shows by title or genrecheck_movie_exists- Quick check if a movie existscheck_tv_show_exists- Check TV show/season/episode availability
Playback Tools
play_movie- Play a movie by titleplay_episode- Play a specific TV episodeplay_next_unwatched- NEW v1.2.0 - Find and play the next unwatched episode automaticallycontrol_playback- Pause, stop, or get playback status
Library Tools
get_library_stats- Get library overview and statisticsget_recently_added- List recently added contentupdate_library- Trigger library scan (full library)scan_tv_show- NEW v1.2.0 - Scan specific TV show directory only (fast, targeted)get_episode_details- NEW v1.2.0 - Get detailed episode information with file paths
All tools support the use_socks5 parameter for remote access.
SOCKS5 Proxy Setup
For remote Kodi access through SSH:
Create SSH tunnel:
ssh -D 1080 -N user@remote-serverSet environment variables:
export SOCKS5_HOST="localhost"
export SOCKS5_PORT="1080"Use proxy in tool calls:
User: "Search my remote Kodi for movies, use SOCKS5"
Assistant: Uses search_movies with use_socks5=trueAPI Reference
Environment Variables
Variable | Default | Description |
|
| Kodi server IP address |
|
| Kodi web interface port |
|
| Authentication username |
|
| Authentication password |
|
| Request timeout in seconds |
|
| Use HTTPS connection |
| - | SOCKS5 proxy host |
|
| SOCKS5 proxy port |
| - | SOCKS5 proxy username (optional) |
| - | SOCKS5 proxy password (optional) |
Tool Parameters
search_movies
{
"title": "Movie title to search for",
"year": 2023,
"genre": "Action",
"use_socks5": false
}play_movie
{
"title": "The Matrix",
"year": 1999,
"use_socks5": false
}play_episode
{
"show_title": "Breaking Bad",
"season": 1,
"episode": 1,
"use_socks5": false
}play_next_unwatched
{
"show_title": "Murderbot",
"use_socks5": false
}scan_tv_show
{
"show_title": "Breaking Bad",
"use_socks5": false
}get_episode_details
{
"show_title": "Breaking Bad",
"season": 1,
"episode": 1,
"use_socks5": false
}control_playback
{
"action": "pause|stop|status",
"use_socks5": false
}Usage Examples
Smart Episode Management (NEW v1.2.0)
Scan specific show for new episodes and play next unwatched:
User: "Scan the Murderbot TV show directory for new episodes and play the last one that I have not watched"
Workflow:
1. Uses kodi:scan_tv_show("Murderbot") → Scans only Murderbot directory (fast)
2. Uses kodi:play_next_unwatched("Murderbot") → Finds S01E03 was last watched, plays S01E04Get detailed episode information:
User: "Get details for Murderbot S1E4"
Assistant: Uses kodi:get_episode_details → Shows file path, rating, plot, episode IDBasic Library Queries
Check if content exists:
User: "Do I have Inception (2010) in my Kodi library?"
Assistant: Uses kodi:check_movie_exists → "✅ Inception (2010) found in library!"Search for content:
User: "Show me all action movies from 2022"
Assistant: Uses kodi:search_movies → Lists matching movies with detailsPlayback Control
Play specific content:
User: "Play The Matrix"
Assistant: Uses kodi:play_movie → "🎬 Started playing The Matrix (1999)"
User: "Play Breaking Bad S1E1"
Assistant: Uses kodi:play_episode → "📺 Started playing Breaking Bad S01E01: Pilot"Smart unwatched playback:
User: "Play the next episode of Murderbot I haven't seen"
Assistant: Uses kodi:play_next_unwatched → Detects watch status, plays next episodeLibrary Management
Targeted scanning (no more full library scans!):
User: "Scan just the Murderbot folder for new episodes"
Assistant: Uses kodi:scan_tv_show → Scans only that show's directoryGet library information:
User: "How many movies do I have?"
Assistant: Uses kodi:get_library_stats → Shows totals and top genres
User: "What did I add recently?"
Assistant: Uses kodi:get_recently_added → Lists recent additions with datesIntegration Examples
Smart TV Show Management (NEW v1.2.0)
User: "Check for new Murderbot episodes and play where I left off"
Workflow:
1. kodi:scan_tv_show("Murderbot") → Fast targeted scan
2. kodi:play_next_unwatched("Murderbot") → Plays next unwatched episodeTroubleshooting
Connection Issues
Verify Kodi is running and accessible:
python test_connection.pyCheck network connectivity:
curl http://192.168.1.71:8080/jsonrpc -d '{"jsonrpc":"2.0","method":"JSONRPC.Ping","id":1}'Test SOCKS5 proxy:
python test_connection.py --socks5 socks5://localhost:1080Common Errors
"Cannot connect to Kodi"
Verify KODI_HOST and KODI_PORT
Check if Kodi web interface is enabled
Ensure firewall allows connections
"Authentication failed"
Verify KODI_USERNAME and KODI_PASSWORD
Check Kodi web interface authentication settings
"SOCKS5 proxy connection failed"
Verify SSH tunnel is active
Check SOCKS5_HOST and SOCKS5_PORT
Test proxy with curl:
curl --socks5 localhost:1080 http://example.com
Kodi Configuration
Ensure Kodi has the following enabled:
Web Interface:
Settings → Services → Control → Allow remote control via HTTP
Username:
kodiPassword:
kodi
Network Access:
Allow connections from other systems
Port:
8080
Development
Project Structure
kodi-mcp-server/
├── src/
│ └── server.py # Main MCP server
├── requirements.txt # Dependencies
├── test_connection.py # Connection testing
├── claude-desktop-config.json # Claude integration
├── README.md # This file
├── CHANGELOG.md # Development log
└── .gitignore # Git ignore rulesContributing
Fork the repository
Create a feature branch
Make changes with proper commit messages
Update CHANGELOG.md (append only)
Submit a pull request
License
MIT License - see LICENSE file for details.
Related Projects
Claude Desktop - AI assistant with MCP support
Support
For issues and questions:
Create an issue on GitHub
Check troubleshooting section
Test connection with
test_connection.py
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/dgoo2308/kodi-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server