MCP server for searching songs, retrieving lyrics, and listing artist songs from the Genius API
The server implements 3 read-only tools with clear action verbs and reasonable descriptions. All tools have input schemas with type definitions and parameter descriptions. However, there are notable gaps: output schemas are not formally documented (responses are JSON-stringified text), some parameter descriptions are terse, and error handling lacks recovery guidance. The tools follow single-responsibility principles and compose well, but output formatting could be more structured for downstream LLM consumption.
List songs of an artist in Genius by their ID
Search for songs or web pages in genius
Get a song's lyrics by song id
Output schemas are not formally documented. All tools return text-wrapped JSON via {type: 'text', text: JSON.stringify(...)}, making it opaque to LLMs. LLMs cannot determine output field structure, types, or what to extract for downstream tool calls.
Error handling lacks recovery guidance. Two tools return generic errors ({error: true, message: ...}) without actionable next steps. For example, search failures should suggest alternative queries or parameter adjustments.
Parameter descriptions are sparse and miss format/constraint details. 'The numeric ID of the artist in Genius' does not explain valid ID ranges, whether to resolve from artist names first, or when lookup is required. Description for 'sort' enum lacks explanation of when each option is useful.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 76 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
No pagination or result limits documented. genius-list-artist-songs has 'perPage' parameter but tool description does not state max result size or explain when pagination is required. Response could return hundreds of items, blowing context window.
tool description for 'genius-song-lyrics' is overly terse (31 chars). It says WHAT the tool does but not WHEN to use it vs. the resource genius://songs/{id}/lyrics, or what format lyrics are returned in (parsed vs. raw text).