Find BGM MCP Server
Uses Google Cloud project for OAuth authentication to access YouTube Music API through YouTube Data API v3.
Analyzes video script content and searches YouTube Music to recommend suitable background tracks based on mood, theme, pacing, and duration requirements for YouTube shorts.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Find BGM MCP Server
An MCP server that helps YouTube content creators find perfect background music for their shorts by analyzing script content and recommending tracks from YouTube Music.
Features
Script Analysis: Analyzes mood, theme, pacing, and sentiment from video scripts
Smart Recommendations: Uses YouTube Music API to find suitable background tracks
Duration Filtering: Ensures recommendations fit your short video length
Confidence Scoring: Ranks recommendations by relevance to your content
Related MCP server: Sonicmatch
Architecture
The server follows clean architecture principles with modular design:
find_bgm/
├── server.py # Main server entry point
├── config.py # Configuration management
├── models.py # Data models and types
├── script_analyzer.py # Script analysis logic
├── music_service.py # YouTube Music API integration
├── tools.py # MCP tool definitions
└── test_server.py # Test suiteInstallation
Install dependencies:
pip install -r requirements.txt(Optional) Set up YouTube Music API access:
Follow the ytmusicapi setup guide
Create
oauth.jsonfile in the project directoryWithout this, the server will use mock recommendations
Usage
The server provides one main tool: recommend_background_music
Parameters
script(required): Your YouTube short script/contentduration(required): Length of your short in seconds (15-60)genre_preference(optional): "pop", "electronic", "chill", "rock", "hip-hop", "classical", "ambient", "any"mood_preference(optional): "upbeat", "calm", "dramatic", "energetic", "relaxed", "motivational", "any"content_type(optional): "comedy", "educational", "lifestyle", "fitness", "cooking", "travel", "tech", "other"
Example Response
{
"analysis": {
"detected_mood": "motivational",
"detected_theme": "fitness",
"pacing": "medium",
"sentiment_score": 0.4,
"keywords": ["workout", "energy", "strong"]
},
"recommendations": [
{
"title": "Uplifting Corporate Background",
"artist": "Audio Library",
"youtube_music_id": "abc123",
"confidence_score": 0.85,
"reason": "Strong match for motivational mood and fitness content",
"duration": 45,
"loop_suitable": true
}
]
}Configuration
Customize behavior with environment variables:
# Logging level
export BGM_LOG_LEVEL=DEBUG
# OAuth file location
export BGM_OAUTH_FILE=my_oauth.json
# Search and recommendation limits
export BGM_MAX_DURATION=240
export BGM_SEARCH_LIMIT=15YouTube Music API Setup
Method 1: Browser Authentication (Recommended)
Install ytmusicapi:
pip install ytmusicapiRun:
ytmusicapi browserFollow prompts to paste browser headers from YouTube Music
Save as
oauth.json
Method 2: OAuth Setup
Create Google Cloud project
Enable YouTube Data API v3
Create OAuth credentials
Run:
ytmusicapi oauthComplete authentication flow
Without the API, the server works with mock data for testing.
Running the Server
python server.pyThe server runs on stdio and can be integrated with any MCP-compatible client.
Testing
# Test all components
python test_server.py
# Test with virtual environment
source venv/bin/activate
python test_server.pyClaude Desktop Integration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"find-bgm": {
"command": "/path/to/find_bgm/venv/bin/python",
"args": ["/path/to/find_bgm/server.py"]
}
}
}Components
ScriptAnalyzer
Analyzes script content to detect mood, theme, and pacing using natural language processing.
YouTubeMusicService & MusicRecommendationService
Handles YouTube Music API integration and generates scored recommendations.
BGMTools
MCP tool interface that orchestrates script analysis and music recommendations.
Configuration Management
Environment-based configuration with sensible defaults and type safety.
Example Usage
from models import RecommendationRequest
from script_analyzer import ScriptAnalyzer
from music_service import MusicRecommendationService
# Analyze script
analyzer = ScriptAnalyzer()
analysis = analyzer.analyze_script("Your video script here")
# Get recommendations
service = MusicRecommendationService(music_service, config)
recommendations = await service.get_recommendations(
analysis, "electronic", "upbeat", 30
)The server provides intelligent music recommendations to help creators find the perfect soundtrack for their content! 🎵
This server cannot be deployed
Maintenance
Related MCP Connectors
Turn long YouTube videos into shorts and music videos, and schedule posts to TikTok and YouTube
Free, copyright-safe AI music library for video creators and AI agents.
Create short-form scripts and paced audio, then hand clips to ScriptSeen's on-device video maker.
Royalty-free music fitted to your length: find, generate, adjust and download tracks and stems.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables video-aware background music recommendations by analyzing local videos or URLs for mood, pace, speech, and scene cuts, then returning license-safe, ranked tracks with beat/cut hints and preview mixes.12153MIT
- FlicenseNot gradedqualityAmaintenanceEnables agents to analyze video footage for mood, pace, speech, and scene cuts and return a license-safe royalty-free/CC BGM shortlist with a 12–20s hook window, beat-snapped cut suggestions, and an ffmpeg ducking/mix spec. Every recommendation prints its license and attribution, keeps non-commercial tracks out of auto-suggestions, and can export renderable specs for CapCut, Premiere, or DaVinci.-
- FlicenseNot gradedqualityBmaintenanceEnables agents and editors to analyze video footage or URLs, recommend license-safe BGM with license/attribution details, and generate hook windows plus ffmpeg ducking and mix specs for editing workflows.-
- FlicenseNot gradedqualityAmaintenanceWatches video footage or URLs to detect mood, energy, speech, and scene cuts, then returns ranked license-safe BGM shortlists with licensing and attribution printed on every row. Also produces 12–20s hook windows, beat-snapped cut suggestions, and ffmpeg ducking/mix specs ready for CapCut, Premiere, DaVinci, or an agent pipeline.-