
OpenSubtitles MCP Server
OfficialDownloads subtitles from OpenSubtitles.com using their API. Search by movie title, IMDB ID, file hash, or TV show episode and get subtitles in multiple formats.
Enables searching and downloading subtitles from OpenSubtitles.com through their API. Supports comprehensive search by movie title, IMDB/TMDB ID, file hash, and TV show episodes with multiple subtitle formats (SRT, ASS, VTT).
What it does
- Search subtitles by movie title or TV show
- Find subtitles using IMDB or TMDB IDs
- Match subtitles by file hash
- Download subtitles in SRT, ASS, and VTT formats
- Search specific TV show episodes
Best for
About OpenSubtitles MCP Server
OpenSubtitles MCP Server is an official MCP server published by opensubtitles that provides AI assistants with tools and capabilities via the Model Context Protocol. Search and download movie & TV subtitles via OpenSubtitles subtitles API — supports title, IMDB/TMDB ID, file hash, epis It is categorized under other, developer tools.
How to install
You can install OpenSubtitles MCP Server in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
License
OpenSubtitles MCP Server is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
OpenSubtitles MCP Server
A TypeScript/Node.js-based MCP (Model Context Protocol) server for OpenSubtitles API integration. This server provides subtitle search and download functionality with a freemium model, using the Kong gateway at api.opensubtitles.com for all API management.
Features
- Comprehensive Search: Search subtitles using all OpenSubtitles API parameters (title, IMDB ID, TMDB ID, file hash, etc.)
- Multiple Download Formats: Support for SRT, ASS, and VTT subtitle formats
- File Hash Calculation: Calculate OpenSubtitles hash for exact movie file matching
- Rate Limiting: Integrated with Kong gateway for proper rate limiting
- Freemium Model: Unlimited search, downloads limited by API key status
Installation & Usage
The OpenSubtitles MCP Server supports three modes:
- HTTP Mode: Web server for n8n workflows, browser access, and HTTP integrations
- Stdio Mode (Local): Run locally for Claude Desktop integration
- Stdio Mode (Remote): Connect to hosted server at mcp.opensubtitles.com
1. HTTP Mode (Recommended for Server Deployment)
Run as a web server on port 1620:
# Install dependencies
npm install
npm run build
# Start HTTP server
npm start
# or
PORT=1620 MCP_MODE=http node dist/index.js
Access points:
- Health Check:
http://localhost:1620/health - API Info:
http://localhost:1620/ - Web Interface:
http://localhost:1620/web(Browser UI - No Node.js required!) - Direct API:
http://localhost:1620/proxy(POST requests) - Tools List:
http://localhost:1620/tools(Schema discovery) - MCP Endpoint:
http://localhost:1620/sse(Server-Sent Events)
2. Stdio Mode (For Claude Desktop)
Quick Start with npx
npx @opensubtitles/mcp-server
Install via mcp-get
npx @michaellatman/mcp-get@latest install @opensubtitles/mcp-server
Claude Code Integration
For claude-code environments, you can add the server using the claude mcp add-json command:
claude mcp add-json "opensubtitles" '{"command":"npx","args":["-y","@opensubtitles/mcp-server@latest"],"env":{"MCP_MODE":"stdio","LOG_LEVEL":"info"},"disabled":false}'
Claude Desktop Integration - Local Mode
Add to your Claude Desktop configuration:
{
"mcpServers": {
"opensubtitles": {
"command": "npx",
"args": ["-y", "@opensubtitles/mcp-server"],
"env": {
"MCP_MODE": "stdio",
"OPENSUBTITLES_USER_KEY": "your_api_key_here"
}
}
}
}
Claude Desktop Integration - Remote Mode
Connect to the hosted server at mcp.opensubtitles.com:
{
"mcpServers": {
"opensubtitles": {
"command": "npx",
"args": ["-y", "@opensubtitles/mcp-server", "remote-proxy.js"]
}
}
}
Or using the dedicated remote command:
{
"mcpServers": {
"opensubtitles": {
"command": "npx",
"args": ["-y", "mcp-opensubtitles-remote"]
}
}
}
MCP Tools
1. search_subtitles
Search for subtitles with comprehensive parameter support:
Parameters:
query(string): Text search queryimdb_id(number): IMDB ID for exact matchingtmdb_id(number): TMDB ID for exact matchingparent_imdb_id(number): Parent IMDB ID for TV seriesparent_tmdb_id(number): Parent TMDB ID for TV seriesseason_number(number): Season number for TV episodesepisode_number(number): Episode number for TV episodesyear(number): Release yearmoviehash(string): OpenSubtitles file hash for exact matchingmoviebytesize(number): File size in bytes for hash matchinglanguages(string): Comma-separated language codes (e.g., 'en,es,fr')machine_translated(string): Include machine translated subtitlesai_translated(string): Include AI translated subtitleshearing_impaired(string): Include hearing impaired subtitlesforeign_parts_only(string): Include foreign parts onlytrusted_sources(string): Only trusted sourcesorder_by(string): Sort orderorder_direction(string): Sort direction (asc/desc)
Example:
await mcpClient.callTool("search_subtitles", {
query: "The Matrix",
year: 1999,
languages: "en"
});
2. download_subtitle
Download subtitle content by ID:
Parameters:
subtitle_id(string, required): Subtitle ID from search resultsformat(string): Subtitle format (srt, ass, vtt) - defaults to 'srt'user_api_key(string): Optional user API key for authenticated downloads
Example:
await mcpClient.callTool("download_subtitle", {
subtitle_id: "123456",
format: "srt",
user_api_key: "your_api_key"
});
3. calculate_file_hash
Calculate OpenSubtitles hash for local movie files:
Parameters:
file_path(string, required): Path to the movie file
Example:
await mcpClient.callTool("calculate_file_hash", {
file_path: "/path/to/movie.mkv"
});
Usage Examples
Search by Movie Title
await mcpClient.callTool("search_subtitles", {
query: "Inception",
year: 2010,
languages: "en"
});
Search by File Hash
// First calculate the hash
const hashResult = await mcpClient.callTool("calculate_file_hash", {
file_path: "/path/to/inception.mkv"
});
// Then search using the hash
await mcpClient.callTool("search_subtitles", {
moviehash: "8e245d9679d31e12",
moviebytesize: 12909756
});
Search TV Show Episodes
await mcpClient.callTool("search_subtitles", {
parent_imdb_id: 944947, // Game of Thrones
season_number: 1,
episode_number: 5,
languages: "en"
});
n8n Workflow Integration
The OpenSubtitles MCP Server has native n8n MCP client support for seamless workflow automation. Connect directly to the MCP server using n8n's built-in MCP client tools.
1. Start Server in HTTP Mode
First, start the MCP server in HTTP mode:
# Option 1: Use npm script (recommended)
npm start
# Option 2: Direct command with custom port
MCP_MODE=http PORT=1620 node dist/index.js
# Option 3: Using environment variables
export MCP_MODE=http
export PORT=1620
node dist/index.js
The server will be available at:
- Base URL:
http://localhost:1620 - Health Check:
http://localhost:1620/health - MCP Endpoint:
http://localhost:1620/message(Streamable HTTP) - Force JSON:
http://localhost:1620/json(Plain JSON for debugging) - Debug Info:
http://localhost:1620/debug(Server diagnostics) - Legacy MCP:
http://localhost:1620/sse(Server-Sent Events)
2. n8n MCP Client Configuration
Using n8n Native MCP Client
Configure the n8n MCP Client Tool node:
- Server URL:
http://localhost:1620/message(or your server URL) - Transport: HTTP Streamable
- Protocol: Model Context Protocol (MCP)
Search Subtitles with MCP Client
Configure the MCP Client node with these parameters:
{
"tool": "search_subtitles",
"arguments": {
"query": "The Matrix",
"year": 1999,
"languages": "en"
}
}
Alternative: Direct HTTP Request
For manual HTTP integration, use HTTP Request node:
{
"method": "POST",
"url": "http://localhost:1620/message",
"headers": {
"Content-Type": "application/json"
},
"body": {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_subtitles",
"arguments": {
"query": "The Matrix",
"year": 1999,
"languages": "en"
}
}
}
}
Download Subtitle with MCP Client
{
"tool": "download_subtitle",
"arguments": {
"file_id": 123456,
"user_api_key": "{{ $env.OPENSUBTITLES_API_KEY }}"
}
}
Calculate File Hash with MCP Client
{
"tool": "calculate_file_hash",
"arguments": {
"file_path": "/path/to/movie.mkv"
}
}
3. n8n Workflow Examples
Basic Search Workflow
- MCP Client Tool: Search for subtitles using movie title
- Code Node: Parse search results and extract file IDs
- MCP Client Tool: Download best matching subtitle
- File System Node: Save subtitle to disk
Automated Processing Workflow
- File Trigger: Monitor folder for new movie files
- MCP Client Tool: Calculate file hash
- MCP Client Tool: Search subtitles by hash for exact match
- Conditional Node: Check if subtitles found
- MCP Client Tool: Download subtitle if found
- File System Node: Save subtitle next to movie file
Benefits of Native MCP Integration
- Auto-discovery: Tools are automatically discovered via MCP protocol
- Type Safety: Full schema validation for tool arguments
- Error Handling: Proper MCP error responses
- Tool Documentation: Inline help and parameter descriptions
- JSON Compatibility: Automatic plain JSON responses for n8n clients
- Debug Support: Built-in debugging endpoints for troubleshooting
Troubleshooting n8n Integration
If you encounter JSON parsing errors:
- Try Force JSON Endpoint: Use
http://localhost:1620/jsoninstead of/message - Check Debug Info: Visit
http://localhost:1620/debugto verify server status - Verify User-Agent: Server auto-detects n8n clients (node, n8n, langchain, mcpClientTool)
- Check Logs: Look for "Sending plain JSON response for n8n compatibility" messages
4. Environment Variables for n8n
Set these environment variables in your n8n instance:
# OpenSubtitles API Key (optional but recommended)
OPENSUBTITLES_API_KEY=your_api_key_here
# MCP Server URL (if running on different host/port)
MCP_SERVER_URL=http://localhost:1620
5. Response Format
All n8n HTTP requests will receive JSON-RPC 2.0 responses:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "Search results or download data..."
}
]
}
}
6. Error Handling i
README truncated. View full README on GitHub.
Alternatives
Related Skills
Browse all skillsUse when working with the OpenAI API (Responses API) or OpenAI platform features (tools, streaming, Realtime API, auth, models, rate limits, MCP) and you need authoritative, up-to-date documentation (schemas, examples, limits, edge cases). Prefer the OpenAI Developer Documentation MCP server tools when available; otherwise guide the user to enable `openaiDeveloperDocs`.
UI design system toolkit for Senior UI Designer including design token generation, component documentation, responsive design calculations, and developer handoff tools. Use for creating design systems, maintaining visual consistency, and facilitating design-dev collaboration.
Tools, patterns, and utilities for creating music with code. Output as a .mp3 file with realistic instrument sounds. Write custom compositions to bring creativity to life through music. This skill should be used whenever the user asks for music to be created. Never use this skill for replicating songs, beats, riffs, or other sensitive works. The skill is not suitable for vocal/lyrical music, audio mixing/mastering (reverb, EQ, compression), real-time MIDI playback, or professional studio recording quality.
Syncs Claude Skills with other AI coding tools like Cursor, Copilot, and Codeium by creating cross-references and shared knowledge bases. Invoke when user wants to leverage skills across multiple tools or create unified AI context.
Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".
Master API documentation with OpenAPI 3.1, AI-powered tools, and modern developer experience practices. Create interactive docs, generate SDKs, and build comprehensive developer portals. Use PROACTIVELY for API documentation or developer portal creation.