Lacuna Music

Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~542Tokens (tool definitions)
~1.4 KBTypical response size
Minimal attention impact (0.42% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "lacuna-mcp": {
      "command": "npx",
      "args": [
        "lacuna-mcp"
      ]
    }
  }
}

Runnable packages

npmlacuna-mcp0.3.4stdio

Remote endpoints

https://www.lacuna.fm/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡generate_music(style, title, lyrics, instrumental, model, ...)

Create an AI music generation task on Lacuna. Returns immediately with a `pending` task; poll `get_generation` to retrieve the finished tracks and their audio URLs.

Input Schema

{
  "type": "object",
  "properties": {
    "style": {
      "type": "string",
      "maxLength": 1000,
      "description": "Style description, e.g. \"pop, female vocal, 120 bpm, energetic\"."
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "description": "Track title."
    },
    "lyrics": {
      "type": "string",
      "maxLength": 5000,
      "description": "Lyrics in plain text. Required unless `instrumental` is true."
    },
    "instrumental": {
      "type": "boolean",
      "description": "Generate an instrumental track (no lyrics). Defaults to false."
    },
    "model": {
      "type": "string",
      "enum": [
        "aether",
        "echo"
      ],
      "description": "Generation model. Defaults to `aether`. Call `list_models` for what each one covers."
    },
    "vocal_gender": {
      "type": "string",
      "enum": [
        "m",
        "f"
      ],
      "description": "Lead vocal gender hint (aether only)."
    },
    "negative_tags": {
      "type": "string",
      "maxLength": 500,
      "description": "Negative style tags to avoid (aether only)."
    },
    "style_weight": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Style weight 0–1 (aether only)."
    },
    "weirdness_constraint": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Weirdness constraint 0–1 (aether only)."
    },
    "audio_weight": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Audio reference weight 0–1 (aether only)."
    }
  },
  "required": [
    "style",
    "title"
  ],
  "additionalProperties": false
}
🟢get_generation(id)

Retrieve the current state of a music generation task by id. Status is `pending`, `ready`, or `failed`; audio URLs appear on `ready`.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Generation task id, returned by generate_music."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢list_models

List the music models available through the API, with their credit cost per task, tracks produced per task, and language coverage.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools