Atlas / MCP servers / magichourhq / magic-hour-mcp

magic-hour-mcpSAFE

mcp/magichourhq/magic-hour-mcp

Hosted MCP server for generating and editing video, images, and audio with the Magic Hour API.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
—
Transport
streamable-http
License
Apache-2.0
Stars
8
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

OpenAPI-backed MCP server for Magic Hour image, video, and audio generation.

At startup, this server reads docs/openapi.json and builds MCP tools with FastMCP.from_openapi(). The OpenAPI spec supplies endpoint coverage, while Magic Hour MCP policies add agent-facing guidance for async polling, uploads, and project downloads.

Docs:

  • Magic Hour agent skills - media workflows, published examples, and recovery guidance
  • user.md - hosted endpoint user guide
  • integration-handoff.md - FastAPI mount checklist
  • docs/detailed-step-by-step-integration.md - full backend integration guide
  • docs/api-reference.md - generated API reference

Setup

pip install -e .

Run locally

python main.py

Local MCP endpoint:

http://127.0.0.1:8000/

This local dev server runs at /, not /mcp. The host app adds /mcp when it mounts the server.

By default, requests go to the production Magic Hour API:

https://api.magichour.ai

Tool discovery is public. Tool calls must include your Magic Hour API key:

Authorization: Bearer 

Agents can discover the hosted server card at:

https://mcp.magichour.ai/.well-known/mcp/server-card.json

Environment variables:

MAGIC_HOUR_API_BASE_URL=https://api.magichour.ai
MAGIC_HOUR_OPENAPI_PATH=docs/openapi.json
MCP_OAUTH_ISSUER_URL=https://mcp.magichour.ai
MCP_OAUTH_RESOURCE_URL=https://mcp.magichour.ai

Override MAGIC_HOUR_API_BASE_URL to use a mock or another API base:

MAGIC_HOUR_API_BASE_URL=https://api.sideko.dev/v1/mock/magichour/magic-hour/latest python main.py

OAuth

This server is an OAuth protected resource only. The authorization server is the Magic Hour web app (https://magichour.ai): users sign in and consent there, and it returns a Magic Hour API key as the access token, which this server passes through to the API. Production requires `MCP_

Read from source at commit ea0fde9b46d9OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add magic-hour-mcp-app --env MCP_OAUTH_ISSUER_URL=${MCP_OAUTH_ISSUER_URL} --env MCP_OAUTH_RESOURCE_URL=${MCP_OAUTH_RESOURCE_URL} --env POSTHOG_PROJECT_TOKEN=${POSTHOG_PROJECT_TOKEN} -- npx -y magic-hour-mcp-app
claude-desktop
{
  "mcpServers": {
    "magic-hour-mcp-app": {
      "command": "npx",
      "args": [
        "-y",
        "magic-hour-mcp-app"
      ],
      "env": {
        "MCP_OAUTH_ISSUER_URL": "${MCP_OAUTH_ISSUER_URL}",
        "MCP_OAUTH_RESOURCE_URL": "${MCP_OAUTH_RESOURCE_URL}",
        "POSTHOG_PROJECT_TOKEN": "${POSTHOG_PROJECT_TOKEN}"
      }
    }
  }
}
03

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (6 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (7)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.mcp.json.example:5
"url": "http://127.0.0.1:8000/",
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:33
http://127.0.0.1:8000/
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:87
- URL: `http://127.0.0.1:8000/`
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/detailed-step-by-step-integration.md:160
http://127.0.0.1:8000/mcp/
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/detailed-step-by-step-integration.md:176
- URL: `http://127.0.0.1:8000/mcp/`
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha ea0fde9b46d9full audit observations/trust-audit/mcp-server/magichourhq__magic-hour-mcp.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11ea0fde9b46d9SAFEB89first audit
05

Questions

What is the magic-hour-mcp MCP server?

Hosted MCP server for generating and editing video, images, and audio with the Magic Hour API.

Is magic-hour-mcp safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does magic-hour-mcp need?

It reads MCP_OAUTH_ISSUER_URL, MCP_OAUTH_RESOURCE_URL and POSTHOG_PROJECT_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does magic-hour-mcp run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as magic-hour-mcp-app.

How current is this page?

The grade is for one exact copy of the source (ea0fde9b46d9), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement