Skip to main content
Glama

LumaMCP

PyPI version PyPI downloads Python 3.10+ License: MIT MCP

A Model Context Protocol (MCP) server for AI video generation using Luma Dream Machine through the AceDataCloud API.

Generate AI videos directly from Claude, VS Code, or any MCP-compatible client.

Features

  • Text to Video - Create AI-generated videos from text prompts

  • Image to Video - Animate images with start/end frame control

  • Video Extension - Extend existing videos with additional content

  • Multiple Aspect Ratios - Support for 16:9, 9:16, 1:1, and more

  • Loop Videos - Create seamlessly looping animations

  • Clarity Enhancement - Optional video quality enhancement

  • Task Tracking - Monitor generation progress and retrieve results

Related MCP server: SoraMCP

Tool Reference

Tool

Description

luma_generate_video

Generate AI video from a text prompt using Luma Dream Machine.

luma_generate_video_from_image

Generate AI video using reference images as start and/or end frames.

luma_extend_video

Extend an existing video with additional content.

luma_extend_video_from_url

Extend an existing video using its URL.

luma_get_task

Query the status and result of a video generation task.

luma_get_tasks_batch

Query multiple video generation tasks at once.

luma_list_aspect_ratios

List all available aspect ratios for Luma video generation.

luma_list_actions

List all available Luma API actions and corresponding tools.

Quick Start

1. Get Your API Token

  1. Sign up at AceDataCloud Platform

  2. Go to the API documentation page

  3. Click "Acquire" to get your API token

  4. Copy the token for use below

AceDataCloud hosts a managed MCP server — no local installation required.

Endpoint: https://luma.mcp.acedata.cloud/mcp

All requests require a Bearer token. Use the API token from Step 1.

Claude.ai

Connect directly on Claude.ai with OAuth — no API token needed:

  1. Go to Claude.ai Settings → Integrations → Add More

  2. Enter the server URL: https://luma.mcp.acedata.cloud/mcp

  3. Complete the OAuth login flow

  4. Start using the tools in your conversation

Claude Desktop

Add to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Cursor / Windsurf

Add to your MCP config (.cursor/mcp.json or .windsurf/mcp.json):

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

VS Code (Copilot)

Add to your VS Code MCP config (.vscode/mcp.json):

{
  "servers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Or install the Ace Data Cloud MCP extension for VS Code, which registers the hosted MCP servers with one-click setup.

JetBrains IDEs

  1. Go to Settings → Tools → AI Assistant → Model Context Protocol (MCP)

  2. Click AddHTTP

  3. Paste:

{
  "mcpServers": {
    "luma": {
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Claude Code

Claude Code supports MCP servers natively:

claude mcp add luma --transport http https://luma.mcp.acedata.cloud/mcp \
  -h "Authorization: Bearer YOUR_API_TOKEN"

Or add to your project's .mcp.json:

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Cline

Add to Cline's MCP settings (.cline/mcp_settings.json):

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Amazon Q Developer

Add to your MCP configuration:

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Roo Code

Add to Roo Code MCP settings:

{
  "mcpServers": {
    "luma": {
      "type": "streamable-http",
      "url": "https://luma.mcp.acedata.cloud/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Continue.dev

Add to .continue/config.yaml:

mcpServers:
  - name: luma
    type: streamable-http
    url: https://luma.mcp.acedata.cloud/mcp
    headers:
      Authorization: "Bearer YOUR_API_TOKEN"

Zed

Add to Zed's settings (~/.config/zed/settings.json):

{
  "language_models": {
    "mcp_servers": {
      "luma": {
        "url": "https://luma.mcp.acedata.cloud/mcp",
        "headers": {
          "Authorization": "Bearer YOUR_API_TOKEN"
        }
      }
    }
  }
}

cURL Test

# Health check (no auth required)
curl https://luma.mcp.acedata.cloud/health

# MCP initialize
curl -X POST https://luma.mcp.acedata.cloud/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

3. Or Run Locally (Alternative)

If you prefer to run the server on your own machine:

# Install from PyPI
pip install mcp-luma
# or
uvx mcp-luma

# Set your API token
export ACEDATACLOUD_API_TOKEN="your_token_here"

# Run (stdio mode for Claude Desktop / local clients)
mcp-luma

# Run (HTTP mode for remote access)
mcp-luma --transport http --port 8000

Claude Desktop (Local)

{
  "mcpServers": {
    "luma": {
      "command": "uvx",
      "args": ["mcp-luma"],
      "env": {
        "ACEDATACLOUD_API_TOKEN": "your_token_here"
      }
    }
  }
}

Docker (Self-Hosting)

docker pull ghcr.io/acedatacloud/mcp-luma:latest
docker run -p 8000:8000 ghcr.io/acedatacloud/mcp-luma:latest

Clients connect with their own Bearer token — the server extracts the token from each request's Authorization header.

Available Tools

Video Generation

Tool

Description

luma_generate_video

Generate video from a text prompt

luma_generate_video_from_image

Generate video using reference images

luma_extend_video

Extend an existing video by ID

luma_extend_video_from_url

Extend an existing video by URL

Tasks

Tool

Description

luma_get_task

Query a single task status

luma_get_tasks_batch

Query multiple tasks at once

Information

Tool

Description

luma_list_aspect_ratios

List available aspect ratios

luma_list_actions

List available API actions

Usage Examples

Generate Video from Prompt

User: Create a video of waves on a beach

Claude: I'll generate a beach wave video for you.
[Calls luma_generate_video with prompt="Ocean waves gently crashing on sandy beach, sunset"]

Animate an Image

User: Animate this image: https://example.com/image.jpg

Claude: I'll create a video from your image.
[Calls luma_generate_video_from_image with start_image_url and appropriate prompt]

Extend a Video

User: Continue this video with more action

Claude: I'll extend the video with additional content.
[Calls luma_extend_video with video_id and new prompt]

Available Aspect Ratios

Aspect Ratio

Description

Use Case

16:9

Landscape (default)

YouTube, TV, presentations

9:16

Portrait

TikTok, Instagram Reels

1:1

Square

Instagram posts

4:3

Traditional

Classic video format

3:4

Portrait traditional

Portrait content

21:9

Ultrawide

Cinematic content

9:21

Tall ultrawide

Special vertical displays

Configuration

Environment Variables

Variable

Description

Default

ACEDATACLOUD_API_TOKEN

API token from AceDataCloud

Required

ACEDATACLOUD_API_BASE_URL

API base URL

https://api.acedata.cloud

ACEDATACLOUD_OAUTH_CLIENT_ID

OAuth client ID (hosted mode)

ACEDATACLOUD_PLATFORM_BASE_URL

Platform base URL

https://platform.acedata.cloud

LUMA_DEFAULT_ASPECT_RATIO

Default aspect ratio

16:9

LUMA_REQUEST_TIMEOUT

Request timeout in seconds

1800

LOG_LEVEL

Logging level

INFO

Command Line Options

mcp-luma --help

Options:
  --version          Show version
  --transport        Transport mode: stdio (default) or http
  --port             Port for HTTP transport (default: 8000)

Development

Setup Development Environment

# Clone repository
git clone https://github.com/AceDataCloud/LumaMCP.git
cd LumaMCP

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # or `.venv\Scripts\activate` on Windows

# Install with dev dependencies
pip install -e ".[dev,test]"

Run Tests

# Run unit tests
pytest

# Run with coverage
pytest --cov=core --cov=tools

# Run integration tests (requires API token)
pytest tests/test_integration.py -m integration

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Type check
mypy core tools

Build & Publish

# Install build dependencies
pip install -e ".[release]"

# Build package
python -m build

# Upload to PyPI
twine upload dist/*

Project Structure

LumaMCP/
├── core/                   # Core modules
│   ├── __init__.py
│   ├── client.py          # HTTP client for Luma API
│   ├── config.py          # Configuration management
│   ├── exceptions.py      # Custom exceptions
│   ├── server.py          # MCP server initialization
│   ├── types.py           # Type definitions
│   └── utils.py           # Utility functions
├── tools/                  # MCP tool definitions
│   ├── __init__.py
│   ├── video_tools.py     # Video generation tools
│   ├── task_tools.py      # Task query tools
│   └── info_tools.py      # Information tools
├── prompts/                # MCP prompts
│   └── __init__.py        # Prompt templates
├── tests/                  # Test suite
│   ├── conftest.py
│   ├── test_client.py
│   ├── test_config.py
│   ├── test_integration.py
│   └── test_utils.py
├── deploy/                 # Deployment configs
│   └── production/
│       ├── deployment.yaml
│       ├── ingress.yaml
│       └── service.yaml
├── .env.example           # Environment template
├── .gitignore
├── CHANGELOG.md
├── Dockerfile             # Docker image for HTTP mode
├── docker-compose.yaml    # Docker Compose config
├── LICENSE
├── main.py                # Entry point
├── pyproject.toml         # Project configuration
└── README.md

API Reference

This server wraps the AceDataCloud Luma API:

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing)

  5. Open a Pull Request

Documentation

Documentation

License

MIT License - see LICENSE for details.


Made with love by AceDataCloud

Available Tools

8 tools
luma_extend_videoAInspect

Extend an existing video with additional content.

This allows you to continue a previously generated video, adding more motion
and content after the original video ends.

Use this when:
- A generated video is too short and you want to add more
- You want to continue the story or motion from a previous video
- You're building a longer video piece by piece

Returns:
    Task ID and the extended video information.
ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDescription of what should happen in the extended portion of the video. Describe the continuation of motion and new content.
video_idYesID of the video to extend. This is the 'video_id' field from a previous generation result.
callback_urlNoWebhook callback URL for asynchronous notifications.
end_image_urlNoOptional URL of an image to use as the final frame of the extended video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the key behavior ('adding more motion and content after the original video ends') and mentions the return of a Task ID, implying an asynchronous task. However, it does not mention potential side effects, requirements, or whether the original video is modified, which would be valuable for a generation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear intro, a bulleted 'Use this when' list, and a brief 'Returns' section. It is slightly verbose but every sentence earns its place by clarifying purpose and usage. No filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with output schema, the description is fairly complete: it covers purpose, usage scenarios, and return values. It lacks explicit mention of asynchronous behavior or a comparison with luma_extend_video_from_url, but the 'Task ID' and 'previous generation' hints mitigate this. Given the moderate complexity, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so the baseline is 3. The description adds no extra parameter details beyond what the schema already defines for prompt, video_id, callback_url, and end_image_url. It does not repeat or expand on schema descriptions, so no additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'Extend an existing video with additional content.' It distinguishes from siblings by specifying 'previously generated video' and 'after the original video ends,' which aligns with the tool name and separates it from luma_extend_video_from_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use this when' guidance with three concrete scenarios: video too short, continue story/motion, build longer piece by piece. It does not mention when to use alternatives like luma_extend_video_from_url, but the context of 'previously generated video' implies this is for existing Luma generations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_extend_video_from_urlAInspect

Extend an existing video using its URL.

Similar to luma_extend_video, but uses the video URL instead of video ID.
This is useful when you have the video URL but not the original video ID.

Use this when:
- You have the video URL from a previous generation
- You want to extend a video but don't have the video_id

Returns:
    Task ID and the extended video information.
ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDescription of what should happen in the extended portion of the video.
video_urlYesURL of the video to extend. Must be a valid video URL from a previous Luma generation.
callback_urlNoWebhook callback URL for asynchronous notifications.
end_image_urlNoOptional URL of an image to use as the final frame of the extended video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. It hints at async behavior by mentioning a returned Task ID and notes the URL must be from a previous generation, but it does not disclose details about polling, error handling, or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise, starting with a clear statement, followed by a comparative note, usage bullets, and a return note. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and a clear comparison to a sibling, the description covers the core purpose, usage conditions, and return type. It lacks deeper async workflow details, but is sufficient for tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides, such as the meaning of prompt or callback_url.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Extend an existing video using its URL' with a clear verb and resource, and distinctly separates itself from the sibling luma_extend_video by noting URL instead of video ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly compares to luma_extend_video and lists specific 'Use this when' bullets, giving the agent clear criteria for selecting this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_generate_videoAInspect

Generate AI video from a text prompt using Luma Dream Machine.

This is the simplest way to create video - just describe what you want and Luma
will generate a high-quality AI video.

Use this when:
- You want to create a video from a text description
- You don't have reference images
- You want quick video generation

For using reference images (start/end frames), use luma_generate_video_from_image instead.

Returns:
    Task ID and generated video information including URLs, dimensions, and thumbnail.
ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoIf true, generate a looping video where end connects seamlessly to start. Default is false.
promptYesDescription of the video to generate. Be descriptive about the scene, motion, style, and mood. Examples: 'A cat walking through a garden with butterflies', 'Astronauts shuttle from space to volcano', 'Ocean waves crashing on a beach at sunset'
timeoutNoTimeout in seconds for the API to return data. Default is 300.
enhancementNoIf true, enable clarity enhancement for the video. Default is true.
aspect_ratioNoVideo aspect ratio. Options: '16:9' (landscape, default), '9:16' (portrait), '1:1' (square), '4:3', '3:4', '21:9' (ultrawide), '9:21'.16:9
callback_urlNoWebhook callback URL for asynchronous notifications. When provided, the API will call this URL when the video is generated.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions return values, but does not disclose async nature, generation time, or any side effects. The timeout parameter hints at long duration, but description implies immediate return. Could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise yet comprehensive: single line for purpose, explanatory paragraph, bullet list for usage, explicit alternative, and return format. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema available, description adequately covers return values. All 6 parameters have schema descriptions. Sibling tools are referenced. Lacks only async workflow details, but still fully functional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already described. The description adds only minor context (like prompt examples) but nothing significant beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Generate AI video from a text prompt' with specific verb and resource. Explicitly distinguishes from sibling tool luma_generate_video_from_image by stating when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use this when:' bullet list and directly tells when not to use it (have reference images), naming the alternative tool. Complete guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_generate_video_from_imageAInspect

Generate AI video using reference images as start and/or end frames.

This allows you to control the video by specifying what the first frame
and/or last frame should look like. Luma will generate smooth motion between them.

Use this when:
- You have a specific image you want to animate
- You want to create a video transition between two images
- You need precise control over the video's visual content

At least one of start_image_url or end_image_url must be provided.

Returns:
    Task ID and generated video information including URLs, dimensions, and thumbnail.
ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoIf true, generate a looping video. Default is false.
promptYesDescription of the video motion and content. Describe what should happen in the video, how objects should move, what transitions to include.
timeoutNoTimeout in seconds for the API to return data. Default is 300.
enhancementNoIf true, enable clarity enhancement. Default is true.
aspect_ratioNoVideo aspect ratio. Usually should match your input image ratio.16:9
callback_urlNoWebhook callback URL for asynchronous notifications. When provided, the API will call this URL when the video is generated.
end_image_urlNoURL of the image to use as the last frame of the video. The video will animate towards this image.
start_image_urlNoURL of the image to use as the first frame of the video. The video will animate from this image.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It mentions generating 'smooth motion' and returns 'Task ID and generated video information.' However, it does not clarify if the operation is asynchronous (suggested by callback_url parameter), potential rate limits, or other side effects. For a generation tool, more transparency about the async nature would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is about 100 words, well-structured with bullet points for use cases. It is concise and front-loaded with the main action. However, it could be slightly more concise by avoiding redundancy in the use case list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, generation tool, likely async), the description covers the core functionality but lacks details on the async workflow (returning a task ID and then later polling) and explanation of parameters like callback_url and timeout. The output schema likely covers return values, but the description should mention the async behavior for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the role of start_image_url and end_image_url and the constraint on providing at least one. However, it does not elaborate on parameters like timeout, callback_url, or loop beyond what the schema already defines. It adds marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate AI video using reference images as start and/or end frames.' It specifies the action (generate), resource (video from images), and scope (using start/end frames). This distinguishes it from sibling tools like luma_generate_video (no images) and luma_extend_video (extend existing video).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: when you have a specific image to animate, want a transition between two images, or need control over visual content. It also states the constraint 'At least one of start_image_url or end_image_url must be provided.' While it doesn't explicitly say when not to use it, the use cases are clear and help the agent choose between this and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_get_taskAInspect

Query the status and result of a video generation task.

Use this to check if a generation is complete and retrieve the resulting
video URLs, thumbnails, and other metadata.

Use this when:
- You want to check if a generation has completed
- You need to retrieve video URLs from a previous generation
- You want to get the full details of a generated video

Task states:
- 'pending': Generation is still in progress
- 'completed': Generation finished successfully
- 'failed': Generation failed (check error message)

Returns:
    Task status and generated video information including URLs, dimensions, and thumbnail.
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID returned from a generation request. This is the 'task_id' field from any luma_generate_* or luma_extend_* tool response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description covers behavioral traits. Discloses task states and return values. Does not mention rate limits or auth, but for a simple read tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullet points for usage and task states. Front-loaded purpose. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key aspects: purpose, when to use, task states, return summary. Output schema exists, so no need for detailed return spec. Adequate for a straightforward polling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has one parameter with description. Description adds value by explaining task_id source and summarzing return fields. With 100% coverage, baseline 3, and description enhances it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it queries status and result of a video generation task. It distinguishes from sibling generation/extend tools by focusing on retrieval. Specific verb+resource with context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use scenarios (check completion, retrieve URLs). Describes task states. Does not explicitly state when not to use, but context implies it's for after generation, not for batch retrieval (use luma_get_tasks_batch).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_get_tasks_batchAInspect

Query multiple video generation tasks at once.

Efficiently check the status of multiple tasks in a single request.
More efficient than calling luma_get_task multiple times.

Use this when:
- You have multiple pending generations to check
- You want to get status of several videos at once
- You're tracking a batch of generations

Returns:
    Status and video information for all queried tasks.
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idsYesList of task IDs to query. Maximum recommended batch size is 50 tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, but the description accurately describes the read-only query behavior and mentions status/video information returns. The parameter description adds a max batch size constraint, aiding transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with purpose, uses clear sections, and every sentence adds value with no unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and existing output schema, the description sufficiently covers purpose, usage, and return value. It is complete for a simple batch query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of task_ids including the max batch size. The main description adds no further parameter details beyond the schema, so it meets the baseline but does not exceed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Query multiple video generation tasks at once' using a specific verb and resource, and distinguishes from the sibling luma_get_task (singular) by emphasizing batch efficiency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists when to use with bullet points and contrasts with luma_get_task by stating it is 'More efficient than calling luma_get_task multiple times', providing clear context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_list_actionsAInspect

List all available Luma API actions and corresponding tools.

Reference guide for what each action does and which tool to use.
Helpful for understanding the full capabilities of the Luma MCP.

Returns:
    Categorized list of all actions and their corresponding tools.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description adequately discloses it returns a categorized list. No side effects implied. Could mention idempotence but not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with purpose. No wasted words. Perfectly concise for a list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, an output schema exists, and sibling tools are action tools, description is complete. Could mention 'use before calling other luma_* tools' but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters defined; schema coverage is 100% vacuously. Baseline 4 applies as description adds no param info but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all available Luma API actions and corresponding tools.' Verb 'list' and resource 'actions' is specific. Distinguishes from sibling action tools like luma_generate_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit context: 'Reference guide for what each action does and which tool to use.' Implies usage for discovery. No exclusions needed as it's a unique list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luma_list_aspect_ratiosAInspect

List all available aspect ratios for Luma video generation.

Shows all available aspect ratio options with their use cases.
Use this to understand which aspect ratio to choose for your video.

Returns:
    Table of all aspect ratios with their descriptions and use cases.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden. It indicates a read-only listing operation and specifies the return format as a table with descriptions and use cases. No side effects are expected, so this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: it states the function, explains the benefit, and describes the return. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and a straightforward operation, the description is fully complete. It covers purpose, usage context, and return expectations. The output schema exists but the description already summarizes the return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline score applies. The description adds no parameter-specific information, which is appropriate since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available aspect ratios for Luma video generation, and it distinguishes from sibling tools like luma_generate_video or luma_extend_video, which are about generation and extension, not enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to use this tool to understand which aspect ratio to choose, providing clear context. While it doesn't explicitly mention when not to use it or name alternatives, the task is simple and no direct alternative exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.7
    • Changedluma_extend_video1 field changed
      • addedInput schema / properties / callback_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Webhook callback URL for asynchronous notifications.",
        +  "title": "Callback Url"
        +}
    • Changedluma_extend_video_from_url1 field changed
      • addedInput schema / properties / callback_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Webhook callback URL for asynchronous notifications.",
        +  "title": "Callback Url"
        +}
  2. 8 tool updatesv0.1.3
    • Addedluma_extend_video
    • Addedluma_extend_video_from_url
    • Addedluma_generate_video
    • Addedluma_generate_video_from_image
    • Addedluma_get_task
    • Addedluma_get_tasks_batch
    • Addedluma_list_actions
    • Addedluma_list_aspect_ratios
  3. 8 tool updatesv0.1.2
    • Removedluma_extend_video
    • Removedluma_extend_video_from_url
    • Removedluma_generate_video
    • Removedluma_generate_video_from_image
    • Removedluma_get_task
    • Removedluma_get_tasks_batch
    • Removedluma_list_actions
    • Removedluma_list_aspect_ratios
  4. 8 tool updatesv0.1.0
    • First observedluma_extend_video
    • First observedluma_extend_video_from_url
    • First observedluma_generate_video
    • First observedluma_generate_video_from_image
    • First observedluma_get_task
    • First observedluma_get_tasks_batch
    • First observedluma_list_actions
    • First observedluma_list_aspect_ratios

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. The tools cover different aspects of video generation workflow: generation (from text or image), extension (by ID or URL), status checking (single or batch), and reference information (actions and aspect ratios). The descriptions explicitly differentiate when to use each tool, preventing confusion.

Naming Consistency5/5

All tools follow a perfect 'luma_verb_noun' pattern consistently. The naming convention is uniform throughout: luma_extend_video, luma_generate_video, luma_get_task, luma_list_actions, etc. This predictable pattern makes it easy for agents to understand and navigate the toolset.

Tool Count5/5

With 8 tools, this server is well-scoped for video generation workflows. The count is appropriate for covering core operations (generate, extend, check status) plus reference tools, without being overwhelming. Each tool earns its place in supporting a complete video generation lifecycle.

Completeness4/5

The toolset covers the essential video generation lifecycle well: creation (from text or image), extension, and status monitoring. The inclusion of reference tools for actions and aspect ratios adds helpful context. A minor gap exists in not having tools for video editing or deletion operations, but the core workflow is complete and agents can work effectively with what's provided.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AceDataCloud/LumaMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server