Red Bee MCP Server
About
An MCP server for the Red Bee Media OTT Platform, offering tools for authentication, content search, user management, purchases, and system operations.
Details
- Author
- tamsi
- Categories
- Cloud Service, Search, Knowledge Base, Infrastructure
Jump to
Setup
Install Red Bee MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/tamsi/redbee-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
An MCP server for the Red Bee Media OTT Platform, offering tools for authentication, content search, user management, purchases, and system operations.
Model Context Protocol (MCP) Server for Red Bee Media OTT Platform
Connect to Red Bee Media streaming services from MCP-compatible clients like Claude Desktop, or integrate via HTTP/SSE for web applications. This server provides 65 tools aligned with theExposure APIfor authentication, catalog search, recommendations, user management, purchases, and system operations.
Version 1.5.0aligns tools with the current Exposure API and supports multiple operating modes:
- Stdio Mode(original): For local AI agents like Claude Desktop
- HTTP Mode: REST API with JSON-RPC for web integration
- SSE Mode: Server-Sent Events for real-time communication
- Both Modes: Run stdio and HTTP simultaneously
# Test the server uvx redbee-mcp --help # Stdio mode (original) uvx redbee-mcp --stdio --customer YOUR_CUSTOMER --business-unit YOUR_BU # HTTP mode (new) uvx redbee-mcp --http --customer YOUR_CUSTOMER --business-unit YOUR_BU # Both modes simultaneously uvx redbee-mcp --both --customer YOUR_CUSTOMER --business-unit YOUR_BU
pip install redbee-mcp # Same usage as uvx, but with redbee-mcp command redbee-mcp --http --customer YOUR_CUSTOMER --business-unit YOUR_BU
Add to your Claude Desktop MCP configuration file:
macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%/Claude/claude_desktop_config.json
{ "mcpServers": { "redbee-mcp": { "command": "uvx", "args": ["redbee-mcp", "--stdio"], "env": { "REDBEE_CUSTOMER": "CUSTOMER_NAME", "REDBEE_BUSINESS_UNIT": "BUSINESS_UNIT_NAME" } } } }
redbee-mcp --http --customer YOUR_CUSTOMER --business-unit YOUR_BU
The server will be available athttp://localhost:8000with these endpoints:
curl -X POST http://localhost:8000/ \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tools/list", "id": "1" }'
curl -X POST http://localhost:8000/ \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "search_content_v2", "arguments": { "query": "french films", "types": "MOVIE", "pageSize": 5 } }, "id": "search-1" }'
class RedBeeMCPClient { constructor(baseUrl = 'http://localhost:8000') { this.baseUrl = baseUrl; } async callTool(toolName, arguments) { const response = await fetch(this.baseUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', method: 'tools/call', params: { name: toolName, arguments }, id: Date.now().toString() }) }); return response.json(); } async searchContent(query, options = {}) { return this.callTool('search_content_v2', { query, types: options.types || 'MOVIE,TV_SHOW', pageSize: options.pageSize || 10, ...options }); } } // Usage const mcp = new RedBeeMCPClient(); const results = await mcp.searchContent('comedy movies');
const eventSource = new EventSource('http://localhost:8000/sse'); eventSource.onmessage = function(event) { const data = JSON.parse(event.data); console.log('Event received:', data.type); if (data.type === 'welcome') { console.log('Connected with client ID:', data.client_id); } else if (data.type === 'tools') { console.log('Available tools:', data.tools.length); } };
Aligned withExposure API 1.0.0(OAS 3.1).
- login_user- Login viaPOST /v3/.../auth/login
- create_anonymous_session- Anonymous session viaPOST /v2/.../auth/anonymous
- validate_session_token- Validate session viaGET /v2/.../auth/session
- logout_user- Logout viaDELETE /v2/.../auth/login
- request_password_reset- Send a reset email viaGET /v2/.../user/password/reset/{username}
- get_public_asset_details- Public asset by ID or slug
- search_content_v2- Free-text search including descriptions
- get_asset_details- Asset details (anonymous session if needed)
- get_playback_info- Play entitlement viaGET /v2/.../entitlement/{assetId}/play
- entitle_asset- Entitle the user to an asset
- search_assets_autocomplete- Title autocomplete
- get_epg_for_channel- EPG for one channel (slugs supported)
- get_epg_all_channels- EPG for all channels
- get_episodes_for_season- Season by ID or slug
- get_season_episodes- Episodes of season N of a series
- get_assets_by_tag- Unique tags referenced by assets
- list_tags/get_tag- Tag catalog
- list_assets- Main catalog listing
- search_multi_v3- Prefix search on assets and tags
- get_asset_collection_entries- Collection entries
- get_asset_thumbnail- Thumbnail URL (307 redirect)
- get_seasons_for_series- Seasons of a TV series
- get_next_episode/get_previous_episode- Adjacent episodes
- get_watch_next- Watch-next list (works without login)
- get_user_recommendations- Personalized recommendations
- get_continue_watching- Continue-watching rail
- get_last_viewed_offset- Playback bookmarks
- get_continue_tvshow- Episode in progress for a series
- signup_user- Create account (emailAddressbecomes username)
- change_user_password/change_user_email
- get_user_details/update_user_details
- get_user_profiles/add_user_profile/select_user_profile
- update_user_profile/delete_user_profile
- get_user_preferences/set_user_preferences
- get_preference_list/add_asset_to_list/remove_asset_from_list- favorites / watchlists
- get_account_purchases/get_account_transactions/get_active_purchases
- get_offerings- Offerings for a country (IP-detected if omitted)
- initialize_purchase- Payment types and discounted price (experimental)
- purchase_product_offering/cancel_purchase_subscription
- get_stored_payment_methods/add_payment_method/delete_payment_method
- get_account_products- Entitled vs not-entitled products
- get_system_config-GET /v2/.../system/config
- get_system_time-GET /v2/time
- get_user_location-GET /v2/location
- get_active_channels/get_channel_onnow- Live channel status
- get_user_devices/delete_user_device
- get_client_config- Whitelabel pages and components
- get_document- Privacy policy, terms, consent documents
# Start the server redbee-mcp --http --customer DEMO --business-unit DEMO # In another terminal, run the test script python example_usage.py
# Using uvx REDBEE_CUSTOMER=CUSTOMER_NAME REDBEE_BUSINESS_UNIT=BUSINESS_UNIT_NAME uvx redbee-mcp --stdio # Using pip installation REDBEE_CUSTOMER=CUSTOMER_NAME REDBEE_BUSINESS_UNIT=BUSINESS_UNIT_NAME redbee-mcp --stdio
# Initialize and list tools echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {"roots": {"listChanged": true}}, "clientInfo": {"name": "test", "version": "1.0.0"}}} {"jsonrpc": "2.0", "method": "notifications/initialized"} {"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}' | uvx redbee-mcp --stdio
The server is architected with clean separation of concerns:
- McpHandler: Core business logic shared between all modes
- Stdio Server: Traditional MCP stdio interface for AI agents
- HTTP Server: FastAPI-based REST/SSE interface for web apps
- CLI: Multi-mode command line interface
src/redbee_mcp/ ├── handler.py # Core business logic ├── server.py # Stdio MCP server ├── http_server.py # HTTP/SSE server ├── cli.py # Multi-mode CLI ├── models.py # Data models └── tools/ # Tool modules ├── _common.py ├── auth.py ├── content.py ├── discovery.py ├── purchases.py ├── system.py └── user_management.py
"Search for French documentaries about nature"
const mcp = new RedBeeMCPClient(); const results = await mcp.searchContent('french documentaries', { types: 'MOVIE', locale: ['fr'], pageSize: 10 });
# First search for a TV show { "query": "Game of Thrones", "types": "TV_SHOW" } # Then get its seasons { "assetId": "tv-show-asset-id" }
{ "username": "user@example.com", "password": "password123", "remember_me": true }
FROM python:3.11-slim WORKDIR /app COPY . . RUN pip install -e . EXPOSE 8000 # HTTP mode CMD ["redbee-mcp", "--http", "--host", "0.0.0.0", "--port", "8000"]
export REDBEE_CUSTOMER="your-customer" export REDBEE_BUSINESS_UNIT="your-business-unit" export REDBEE_EXPOSURE_BASE_URL="https://exposure.api.redbee.live"
# /etc/systemd/system/redbee-mcp-http.service [Unit] Description=Red Bee MCP HTTP Server After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/redbee-mcp Environment=REDBEE_CUSTOMER=your-customer Environment=REDBEE_BUSINESS_UNIT=your-business-unit ExecStart=/usr/local/bin/redbee-mcp --http --host 0.0.0.0 --port 8000 Restart=always [Install] WantedBy=multi-user.target
For production HTTP deployments, configure CORS properly inhttp_server.py:
self.app.add_middleware( CORSMiddleware, allow_origins=["https://yourdomain.com"], # Specify allowed domains allow_credentials=True, allow_methods=["GET", "POST"], allow_headers=["Content-Type"], )
The Red Bee MCP Server provides access to Red Bee Media Exposure API through:
- MCP Tools: For AI agents and local applications
- HTTP/JSON-RPC: For web applications and remote integration
- Server-Sent Events: For real-time updates
- Input validation with required and optional parameters
- Comprehensive error handling and messages
- Type safety for all inputs and outputs
- Detailed documentation and examples
- Python 3.8+
- MCP SDK
- pydantic for data validation
- FastAPI and uvicorn for HTTP mode
# Clone and install git clone https://github.com/tamsibesson/redbee-mcp cd redbee-mcp pip install -e . # Run in development mode PYTHONPATH=src python -m redbee_mcp --http --customer TEST --business-unit TEST
MIT License - see LICENSE file for details.
- GitHub Issues:https://github.com/tamsibesson/redbee-mcp/issues
- Red Bee Media Documentation:https://exposure.api.redbee.live/docs/index.html
- Model Context Protocol
- Claude Desktop
- Red Bee Media
- FastAPI
Access, search, and get recommendations from public AWS documentation.
Provides an MCP interface for FreshMCP operations using Azure Cosmos DB and AI Search.
Find deals on virtual and dedicated server hosting
Live availability, search, listing detail and cross OTA price comparison for Airbnb, Booking.com, Vrbo and Google Hotels in one unified schema, exposed as 7 read only MCP tools and 8 REST endpoints
Search content using Azure AI Agent Service and Azure AI Search.
A serverless NoSQL database and search platform.
An MCP server for accessing and searching AWS documentation, with support for different partitions.
Provides MCP tools to search, download, and manage 1M+ research records (papers, images, videos, datasets) from the Compoid AI content repository
Expose LlamaCloud services as MCP tools for building and managing LLM applications.
Access OSDU platform capabilities including search, data management, and schema operations.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


