trackmcp
Back to directory
opiuman

mcp-bgm-recommender

View on GitHub

Find BGM

1 stars PythonOthers Updated Aug 12, 2025

Documentation

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:

text
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

1. Install dependencies:

bash
pip install -r requirements.txt

2. (Optional) Set up YouTube Music API access:

    Usage

    The server provides one main tool: `recommend_background_music`

    Parameters

    • `script` (required): Your YouTube short script/content
    • `duration` (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

    json
    {
      "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:

    bash
    # 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

    1. Install ytmusicapi: `pip install ytmusicapi`

    2. Run: `ytmusicapi browser`

    3. Follow prompts to paste browser headers from YouTube Music

    4. Save as `oauth.json`

    Method 2: OAuth Setup

    1. Create Google Cloud project

    2. Enable YouTube Data API v3

    3. Create OAuth credentials

    4. Run: `ytmusicapi oauth`

    5. Complete authentication flow

    Without the API, the server works with mock data for testing.

    Running the Server

    bash
    python server.py

    The server runs on stdio and can be integrated with any MCP-compatible client.

    Testing

    bash
    # 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`:

    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

    python
    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! 🎵

    Frequently asked questions

    What is mcp-bgm-recommender?

    mcp-bgm-recommender is Find BGM

    How do I install mcp-bgm-recommender?

    Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

    Is mcp-bgm-recommender open source?

    Yes — it is hosted on GitHub at https://github.com/opiuman/mcp-bgm-recommender and has 1 stars.

    Related MCP tools

    Run your own MCP server? See who uses it and what to fix.

    Measure it with TrackMCP