FreqBlog Music Metadata
Qué hace este MCP
Analyzes music audio features and supports catalog search, recommendations, harmonic and tempo matching, DJ transition scoring, and setlist generation.
Herramientas
Esquema de entrada
{'type': 'object', 'title': 'build_setlistArguments', 'required': ['track_ids'], 'properties': {'arc': {'type': 'string', 'title': 'Arc', 'default': 'peak_time', 'description': "Energy arc: 'peak_time' (default), 'warmup', 'cooldown', or 'flat'."}, 'track_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Track Ids', 'maxItems': 100, 'minItems': 2, 'description': 'The crate to order — 2 to 100 catalog itunes_track_ids.'}, 'start_track_id': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}], 'title': 'Start Track Id', 'default': None, 'description': 'Optional fixed opener — must be one of track_ids.'}}}
Esquema de salida
{'type': 'object', 'title': 'build_setlistDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'find_compatible_keysArguments', 'required': ['camelot'], 'properties': {'camelot': {'type': 'string', 'title': 'Camelot', 'maxLength': 3, 'minLength': 2, 'description': "Camelot key, e.g. '8A' or '12B'."}, 'extended': {'type': 'boolean', 'title': 'Extended', 'default': False, 'description': 'Also return the +7/-7 energy-boost / energy-drop keys.'}}}
Esquema de salida
{'type': 'object', 'title': 'find_compatible_keysDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'find_tracks_by_bpmArguments', 'required': ['bpm'], 'properties': {'bpm': {'type': 'number', 'title': 'Bpm', 'maximum': 300, 'minimum': 20, 'description': 'Target tempo in BPM.'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max tracks (default 10).'}, 'tolerance': {'type': 'number', 'title': 'Tolerance', 'default': 2.0, 'maximum': 10, 'minimum': 0.5, 'description': 'Plus/minus BPM window (default 2).'}}}
Esquema de salida
{'type': 'object', 'title': 'find_tracks_by_bpmDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'find_tracks_by_keyArguments', 'required': ['key'], 'properties': {'key': {'type': 'string', 'title': 'Key', 'maxLength': 20, 'minLength': 1, 'description': "Camelot ('8A'), Open Key ('1m'), or key name ('A-Minor', 'F#-Major')."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max tracks (default 10).'}}}
Esquema de salida
{'type': 'object', 'title': 'find_tracks_by_keyDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'get_audio_featuresArguments', 'properties': {'isrc': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Isrc', 'default': None, 'description': "ISRC, e.g. 'USUM71900001'."}, 'mbid': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Mbid', 'default': None, 'description': 'MusicBrainz recording ID (UUID). The precise key when there is no ISRC, e.g. pre-1986 recordings.'}, 'track': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Track', 'default': None, 'description': 'Track title. Use with `artist` when known. Supply AT LEAST ONE of track/isrc/mbid/spotify_id. Sending several is fine — they resolve by precedence (track > isrc > mbid > spotify_id) and the rest are ignored.'}, 'artist': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Artist', 'default': None, 'description': 'Artist name. Only used with `track`; required when the title is <=2 characters.'}, 'spotify_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Spotify Id', 'default': None, 'description': "Spotify track ID, 'spotify:track:...' URI, or open.spotify.com URL. Resolved per request by reading the track's title from Spotify's public embed page and matching it against our catalogue (no Spotify IDs are stored) — a title several artists share is ambiguous and misses rather than guessing; prefer track (+artist) or isrc."}}}
Esquema de salida
{'type': 'object', 'title': 'get_audio_featuresDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', '$defs': {'TrackQuery': {'type': 'object', 'title': 'TrackQuery', 'properties': {'isrc': {'anyOf': [{'type': 'string', 'maxLength': 15}, {'type': 'null'}], 'title': 'Isrc', 'default': None, 'description': "ISRC, e.g. 'USUM71900001' (hyphens optional). Matched exactly first — resolves CJK/K-pop/niche tracks whose fuzzy name-match misses. Supply this OR `track`."}, 'track': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'title': 'Track', 'default': None, 'description': 'Track title. Supply this OR `isrc` (or both — ISRC is matched exactly first, the name is the fallback).'}, 'artist': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'title': 'Artist', 'default': None, 'description': 'Artist name (optional, improves name-match accuracy)'}}, 'description': 'One track to look up by name and/or ISRC. Supply `track` or `isrc` (or both); an item\ncarrying neither is skipped by the batch tool (`invalid_no_query`), not an error.'}}, 'title': 'get_audio_features_batchArguments', 'required': ['tracks'], 'properties': {'tracks': {'type': 'array', 'items': {'$ref': '#/$defs/TrackQuery'}, 'title': 'Tracks', 'maxItems': 200, 'minItems': 1, 'description': 'List of {track?, artist?, isrc?} objects. Up to 50 are processed per call; any extra (up to 200 accepted) come back skipped. Each item should carry `track` or `isrc`.'}}}
Esquema de salida
{'type': 'object', 'title': 'get_audio_features_batchDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'get_recommendationsArguments', 'properties': {'max': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'number'}}, {'type': 'null'}], 'title': 'Max', 'default': None, 'description': "HARD upper bounds, e.g. {'tempo': 130}. Same attributes as `min`. Combine the two for a range."}, 'min': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'number'}}, {'type': 'null'}], 'title': 'Min', 'default': None, 'description': "HARD lower bounds, e.g. {'tempo': 100, 'energy': 0.5}. Tracks below the bound — and tracks we hold no analysed value for — are dropped. Attributes: acousticness, danceability, duration_ms, energy, loudness, tempo, valence."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of recommendations to return (default 20).'}, 'track': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'title': 'Track', 'default': None, 'description': 'Seed by track NAME instead of an id — resolved to the best catalog match (echoed back as seed_query). Pair with artist to disambiguate. Ignored when seed_tracks is given.'}, 'artist': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'title': 'Artist', 'default': None, 'description': 'Artist name narrowing the track seed (case-insensitive).'}, 'target': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'number'}}, {'type': 'null'}], 'title': 'Target', 'default': None, 'description': "PREFERRED values, e.g. {'energy': 0.8}. Tracks nearer the value rank higher; unlike min/max nothing is removed. Same attributes as `min`."}, 'cross_genre': {'type': 'string', 'title': 'Cross Genre', 'default': 'auto', 'description': "Genre handling (mirrors suggest_next_track): 'auto' (default) re-ranks by genre affinity so a feature-close cross-genre track can't outrank same-genre picks; 'strict' = same genre-family only (off-genre dropped server-side); 'allow' = genre-blind (pure audio-feature cosine)."}, 'seed_tracks': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5}, {'type': 'null'}], 'title': 'Seed Tracks', 'default': None, 'description': "1-5 catalog itunes_track_ids to base recommendations on, e.g. ['apple_ad1829eeccb70f9a'] (blended into a feature-space centroid). Omit and use track(+artist) to seed by name instead."}, 'exclude_seed_artists': {'type': 'boolean', 'title': 'Exclude Seed Artists', 'default': False, 'description': 'Drop tracks by any of the seed artists (default false).'}}}
Esquema de salida
{'type': 'object', 'title': 'get_recommendationsDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'get_related_artistsArguments', 'required': ['artist'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Number of related artists to return (default 20).'}, 'artist': {'type': 'string', 'title': 'Artist', 'maxLength': 200, 'minLength': 1, 'description': 'Seed artist name (as it appears in the catalog; case-insensitive).'}}}
Esquema de salida
{'type': 'object', 'title': 'get_related_artistsDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'score_transitionArguments', 'required': ['from_track_id', 'to_track_id'], 'properties': {'to_track_id': {'type': 'string', 'title': 'To Track Id', 'maxLength': 80, 'minLength': 1, 'description': "The candidate track you're mixing INTO — a catalog itunes_track_id."}, 'from_track_id': {'type': 'string', 'title': 'From Track Id', 'maxLength': 80, 'minLength': 1, 'description': "The track you're mixing FROM — a catalog itunes_track_id, e.g. 'apple_ad1829eeccb70f9a'."}}}
Esquema de salida
{'type': 'object', 'title': 'score_transitionDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'search_catalogArguments', 'required': ['q'], 'properties': {'q': {'type': 'string', 'title': 'Q', 'maxLength': 200, 'minLength': 1, 'description': 'Search query — any mix of artist / track / album tokens.'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 10).'}}}
Esquema de salida
{'type': 'object', 'title': 'search_catalogDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'suggest_next_trackArguments', 'required': ['seed_track_id'], 'properties': {'n': {'type': 'integer', 'title': 'N', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many next-track suggestions to return (default 10).'}, 'bpm_drift': {'type': 'number', 'title': 'Bpm Drift', 'default': 12.0, 'maximum': 30, 'minimum': 0.5, 'description': 'Max BPM difference pre-filter before scoring (default 12).'}, 'min_score': {'type': 'integer', 'title': 'Min Score', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Drop candidates below this overall transition score (default 0).'}, 'cross_genre': {'type': 'string', 'title': 'Cross Genre', 'default': 'auto', 'description': "Genre handling: 'auto' (default) keeps picks in a mixable genre lane so an off-genre track that only shares key/BPM sinks to the bottom; 'strict' = same genre-family only; 'allow' = genre-blind (harmonic+tempo+energy only)."}, 'seed_track_id': {'type': 'string', 'title': 'Seed Track Id', 'maxLength': 80, 'minLength': 1, 'description': 'The track currently playing — a catalog itunes_track_id.'}, 'max_key_distance': {'type': 'integer', 'title': 'Max Key Distance', 'default': 2, 'maximum': 12, 'minimum': 0, 'description': 'Max Camelot-wheel hops pre-filter before scoring (default 2).'}, 'exclude_same_artist': {'type': 'boolean', 'title': 'Exclude Same Artist', 'default': False, 'description': "Drop tracks by the seed's artist (default false)."}}}
Esquema de salida
{'type': 'object', 'title': 'suggest_next_trackDictOutput', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'title': 'tag_trackArguments', 'properties': {'isrc': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Isrc', 'default': None, 'description': "ISRC, e.g. 'USUM71900001'."}, 'mbid': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Mbid', 'default': None, 'description': 'MusicBrainz recording ID (UUID). Tags come from AcousticBrainz for that exact recording.'}, 'track': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Track', 'default': None, 'description': 'Track title. Use with `artist` when known. Supply AT LEAST ONE of track/isrc/mbid/spotify_id/track_id. Sending several is fine — they resolve by precedence (track > isrc > track_id > mbid > spotify_id).'}, 'artist': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Artist', 'default': None, 'description': 'Artist name. Only used with `track`; improves accuracy.'}, 'track_id': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}], 'title': 'Track Id', 'default': None, 'description': 'Catalog itunes_track_id from a search_catalog or get_audio_features result.'}, 'spotify_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Spotify Id', 'default': None, 'description': "Spotify track ID, 'spotify:track:...' URI, or open.spotify.com URL. Resolved per request by reading the track's title from Spotify's public embed page and matching it against our catalogue (no Spotify IDs are stored) — a title several artists share is ambiguous and misses rather than guessing; prefer track (+artist) or isrc."}}}
Esquema de salida
{'type': 'object', 'title': 'tag_trackDictOutput', 'additionalProperties': True}
Cambios recientes en herramientas
Servidores MCP similares
UFCalendar Fight API — MMA MCP server
Provides MMA event, fighter, bout, rankings, broadcast, judging, live statistics, prediction, and webhook data across multiple pr…
Mlb Stats
Provides official MLB schedules, scores, standings, rosters, player statistics, game logs, matchups, probable pitchers, lineups, …
Football Data
Retrieves soccer competitions, matches, team details, standings, schedules, and competition metadata.
Openf1
Provides live and historical Formula 1 meeting, session, driver, lap, timing, and telemetry data.
Openligadb
Provides football and soccer league listings, fixtures, match results, and standings.
Gdelt
Provides access to GDELT global news and event data for researching events, media coverage, language, and tone.
extract
Extracts and verifies information from webpages, PDFs, images, invoices, payslips, and company sources, with OCR, document parsin…
Mukoko News
Searches and reads African news, provides regional briefings and source views, tracks stories, and analyzes coverage trends, cate…