MCP server: Playwright automation against suno.com (fragile); DOM recon tools; no official Suno API
Suno MCP exhibits significant definition quality gaps. While most tools have descriptions and basic schemas, the quality is inconsistent and many descriptions are generic or lack actionable context. Tool naming is reasonably clear, but parameter documentation is sparse. The server exposes authentication credentials as parameters (email/password in suno_login), violating critical security patterns. Error handling is not visible in the provided code. Output schemas are undocumented for most tools, making it impossible for LLMs to plan downstream tool chains. The agentic_suno_workflow tool relies on the deprecated Sampling pattern (SEP-1577) and passes explicit tool names, which is an anti-pattern for stateless MCP. Several tools (recon_*) have minimal descriptions under 50 characters. Overall, the toolset reads as exploratory/beta rather than production-grade.
Execute multi-step workflows via sampling with tools (SEP-1577); pass explicit tool names.
Get the current server and browser status.
Get help information about available tools and capabilities.
Capture DOM for whatever URL the shared Playwright page is on (create, studio, library, etc.). Unlike capture_studio_dom, does not require /studio in the URL—use this from the webapp Analyze flow or MCP when you are already navigated to the right screen.
Capture the current Suno Studio DOM structure. Saves the full HTML and extracts structured data about interactive elements, containers, and potential automation targets.
Close the reconnaissance session and cleanup resources.
Ensure authenticated session using manual login + persisted cookies. Workflow: 1) Open browser and attempt cookie restore. 2) Navigate to target URL. 3) If auth wall detected, ask user to login manually and save cookies.
Credentials exposed as tool parameters: suno_login accepts email and password as plaintext string parameters. This violates the critical security pattern of secret-injection. Credentials must never appear in tool parameters as they are logged in traces and agent history.
Output schemas completely undocumented: None of the 19 tools document what fields they return. LLMs cannot plan tool chains or extract required data when they don't know what a tool produces. Examples: does suno_generate_track return a track_id? Does suno_get_status return a JSON object or a string?
agentic_suno_workflow relies on deprecated Sampling pattern (SEP-1577). This tool references sampling endpoints and uses 'explicit tool names' parameter, which is a deprecated server-initiated sampling pattern. Per MCP 2026-07-28, sampling should integrate directly with the LLM provider, not delegate to MCP server.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Map interactive elements + suggested selectors on the current Playwright page.
Load browser cookies from file to restore session.
Capture periodic DOM/screenshot snapshots for UI drift detection.
Save browser cookies to file for session persistence.
Take a screenshot of the current browser page.
Start a reconnaissance session with non-headless browser. Opens browser in visible mode so user can manually authenticate with Suno AI before running DOM capture operations.
Close the browser and cleanup resources.
Download a generated track from Suno AI library.
Generate a new music track using Suno AI.
Get the current status of music generation and browser session.
Login to Suno AI account.
Open browser and navigate to Suno AI create page.
Several recon_* tools have minimal descriptions (<50 chars): recon_find_interactive_elements ('Map interactive elements + suggested selectors on the current Playwright page.'), recon_close_session ('Close the reconnaissance session and cleanup resources.'), help ('Get help information about available tools and capabilities.'), suno_get_status ('Get the current status of music generation and browser session.'), suno_close_browser ('Close the browser and cleanup resources.'). These lack sufficient context for LLM selection and do not explain prerequisites or return values.
No error handling guidance: The provided code does not show error handling patterns. Tools do not indicate what errors are retryable, user-fixable, or fatal. No recovery guidance is visible (e.g., if suno_login fails, what should the LLM try next?).
Parameters lack actionable constraints: Tools like suno_generate_track accept 'style' and 'duration' as free-form strings with no enum constraint or list of valid values. LLMs will hallucinate invalid values like 'duration: verylong' instead of being guided to predefined options.
help and get_server_status tools are generic and add no functional value. 'help' with no parameters and no documented output is noise. These should either be removed or reimplemented as resources (for discovery) rather than tools.
Browser state management is implicit and fragile: Multiple tools (suno_open_browser, suno_login, suno_generate_track, recon_start_session, etc.) depend on a shared Playwright page object, but the state is not explicitly returned or documented. LLMs cannot verify browser state between calls and are vulnerable to silent failures.