
Security News
New CVE Forecasting Tool Predicts 47,000 Disclosures in 2025
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
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 33 tools for authentication, content search, user management, purchases, and system operations.
Version 1.4.0 now supports multiple operating modes:
# 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.json
Windows: %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"
}
}
}
}
Start the HTTP server:
redbee-mcp --http --customer YOUR_CUSTOMER --business-unit YOUR_BU
The server will be available at http://localhost:8000
with these endpoints:
Method | URL | Description |
---|---|---|
GET | / | API information |
GET | /health | Server health check |
POST | / | JSON-RPC MCP requests |
GET | /sse | Server-Sent Events stream |
curl http://localhost:8000/health
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');
Connect to real-time event stream:
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);
}
};
Variable | Required | Description | Example |
---|---|---|---|
REDBEE_CUSTOMER | โ Yes | Red Bee customer identifier | CUSTOMER_NAME |
REDBEE_BUSINESS_UNIT | โ Yes | Red Bee business unit | BUSINESS_UNIT_NAME |
REDBEE_EXPOSURE_BASE_URL | โ No | API base URL | https://exposure.api.redbee.live |
REDBEE_USERNAME | โ No | Username for authentication | user@example.com |
REDBEE_PASSWORD | โ No | Password for authentication | password123 |
REDBEE_SESSION_TOKEN | โ No | Existing session token | eyJhbGciOiJIUzI1... |
REDBEE_DEVICE_ID | โ No | Device identifier | web-browser-123 |
REDBEE_CONFIG_ID | โ No | Configuration ID | sandwich |
REDBEE_TIMEOUT | โ No | Request timeout in seconds | 30 |
login_user
- Authenticate with username/passwordcreate_anonymous_session
- Create anonymous sessionvalidate_session_token
- Validate existing sessionlogout_user
- Logout and invalidate sessionget_public_asset_details
- Get asset details via public endpoint (no auth)search_content_v2
- Search V2: free text query in asset fields (including descriptions)get_asset_details
- Get detailed asset informationget_playback_info
- Get streaming URLs and playback infosearch_assets_autocomplete
- Autocomplete search suggestionsget_epg_for_channel
- Get Electronic Program Guide for a channelget_episodes_for_season
- Get all episodes in a seasonget_assets_by_tag
- Get assets by tag type (e.g., origin)list_assets
- List assets with advanced filterssearch_multi_v3
- Multi-search for assets, tags, and participantsget_asset_collection_entries
- Get collection entries for an asset collectionget_asset_thumbnail
- Get thumbnail URL for an asset at a specific timeget_seasons_for_series
- Get all seasons for a TV seriessignup_user
- Create new user accountchange_user_password
- Change user passwordget_user_profiles
- Get user profilesadd_user_profile
- Add new user profileselect_user_profile
- Select active profileget_user_preferences
- Get user preferencesset_user_preferences
- Set user preferencesget_account_purchases
- Get user purchasesget_account_transactions
- Get transaction historyget_offerings
- Get available product offeringspurchase_product_offering
- Purchase a productcancel_purchase_subscription
- Cancel subscriptionget_stored_payment_methods
- Get saved payment methodsadd_payment_method
- Add new payment methodget_system_config
- Get platform configurationget_system_time
- Get server timeget_user_location
- Get user location by IPget_active_channels
- Get active TV channelsget_user_devices
- Get registered devicesdelete_user_device
- Delete a device# 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:
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
โโโ auth.py
โโโ content.py
โโโ purchases.py
โโโ system.py
โโโ user_management.py
Ask your AI assistant:
"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 in http_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:
Each tool includes:
# 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.
For issues and questions:
FAQs
MCP Server for Red Bee Media OTT Platform - MCP Interface for Exposure APIs
We found that redbee-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.