Red Bee MCP Server

by tamsi

Not rated
GitHub

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

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.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.