Find BGM
Finds background music for YouTube shorts by analyzing script content and recommending tracks from YouTube Music.
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
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 suite
Installation
- 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 directory - Without 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=15
YouTube Music API Setup
Method 1: Browser Authentication (Recommended)
- Install ytmusicapi:
pip install ytmusicapi - Run:
ytmusicapi browser - Follow 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 oauth - Complete authentication flow
Without the API, the server works with mock data for testing.
Running the Server
python server.py
The 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.py
Claude 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! 🎵
Server Terkait
Rijksmuseum MCP Server
Explore the Rijksmuseum's art collection using natural language.
12306-mcp
Search for train tickets on 12306, the official China Railway website.
NullBR MCP Server
A server for searching and retrieving movie and media resource information via the MCP protocol.
RateMySupervisor MCP
Query supervisor evaluation data with fuzzy matching for Chinese and Pinyin names.
mcp-seo-audit
SEO audit and Google Search Console MCP server with 23 tools. Search analytics, URL inspection, Indexing API, Core Web Vitals (CrUX), striking distance keywords, keyword cannibalization detection, branded query analysis, and automated site audits.
Memex Targeted Search Server
Performs targeted searches across Memex conversation history and project files.
BrowseAI Dev
Evidence-backed web research for AI agents. BM25+NLI claim verification, confidence scores, citations, contradiction detection. 12 MCP tools. Works with Claude Desktop, Cursor, Windsurf. Python SDK (pip install browseaidev), LangChain, CrewAI, LlamaIndex integrations. npx browseai-dev
OpenSearch MCP Server
An MCP server for interacting with OpenSearch clusters.
Bocha
A search engine for AI applications, providing world knowledge from web pages and various content sources like weather, news, and images.
Brave Search
A server for Brave Search, enabling web search capabilities via its API.