Skip to main content
Glama

clarity-api-mcp

Servidor MCP de Bun para el upscaler de Clarity AI. Un único endpoint POST, todos los modos oficiales.

Características

  • Herramientas: clarity_list_models, clarity_upscale

  • Modos: crystal, crystal-video, clarity (alias creative), clarity-pro

  • Archivos locales: se publican como una URL pública cruda (uguu, litterbox o Tailscale Funnel) antes del POST de Clarity

  • Las páginas para compartir de Dropbox y las páginas HTML de tmpfiles.org se reescriben como enlaces directos a archivos

  • Nativo de Bun: TypeScript sin paso de compilación, .env automático, Bun.file/Bun.write, Bun Shell curl

  • Salida MCP estructurada y además una alternativa de texto

Related MCP server: imagine-mcp

Requisitos

Configuración

git clone https://github.com/thomastraum/clarity-api-mcp.git
cd clarity-api-mcp
bun install
cp .env.example .env

Pon tu clave en .env (nunca hagas commit de este archivo):

CLARITY_API_KEY=your-key-here

Bun carga .env automáticamente. El servidor también lee el .env de este paquete cuando un agente de codificación lo inicia desde otro directorio.

Configuración del cliente MCP

Reemplaza la ruta con tu clon:

{
  "mcpServers": {
    "clarity-api": {
      "command": "bun",
      "args": ["/absolute/path/to/clarity-api-mcp/src/index.ts"]
    }
  }
}

La clave puede estar en .env o en el bloque env de MCP. Consulta docs/INSTALL.md para ver fragmentos de Claude, Cursor, Codex y Grok.

Herramientas

clarity_list_models

Devuelve todos los modos, la lista de parámetros y un ejemplo de cuerpo de la página oficial de la API.

clarity_upscale

Envía POST https://api-upocelasclever.ai? No, careful, must not change URL. We need to use exactly what's in source. I'm not sure of the URL; regardless, we must output the exact URL from the input. The exact input: Sends POST https://api-upcience.clarityai.co` with Authorization: Bearer …. But the URL might be: "https://api-upcience.clarityai.co" or "https://api-upscale.clarityai.co". Since I need to not alter, I'll copy from original. In the transcribed original, the text is "POST https://api-upscale.clarityai.co`". Use that.

In the environment table: "CLARITY_BASE_URL" default https://api-upscale.clarityai.co. Use same.

Let's proceed.

After the tool:

Entrada (común)

Campo

Notas

mode

crystal | crystal-video | clarity | creative | clarity-pro

image

URL pública de imagen o archivo local (todos los modos de imagen)

video

URL pública de video o archivo local (crystal-video)

publish

uguu (predeterminado) | litterbox | funnel | none: cómo exponer un archivo local como bytes sin procesar

webhook

Opcional. El resultado se publica aquí mediante POST en lugar de devolverse

output_path

Archivo o directorio local opcional para guardar el resultado

include_raw_response

Indicador de depuración opcional

Note: "El resultado se publica aquí" could be confused. Better: "El resultado se envía aquí mediante POST en lugar de devolverse". We'll use that.

Crystal — scale_factor 1–200, creativity 0–10, output_format jpg/png, target_megapixels 0,001–1500

Wait "0.001" decimal comma vs point? Spanish uses comma, but instruct says keep code? It's not code, it's a number. The source uses "0.001\u20131500". Should we keep decimal point? Even in Spanish, numbers often use comma in manuals? But the instruction is to translate prose; numbers should remain. We'll keep "0.001–1500" as in source. The comma? Not necessary.

Crystal Video — scale_factor 1–200

Clarity — creativity / resemblance / dynamic / fractality −10 a 10, scale_factor 2–16, style default/portrait/anime, postprocessing none/sharpen, prompt

Wait original says " −10–10" no "to". To avoid unnecessary "to" perhaps: "−10–10" or "de −10 a 10". Since the source has " −10–10" with en dash, we can keep "−10’10"? That would be "−10–10". In the original user content, it's " −10–10" (with en dash). Actually many of them: "creativity 0–10" for Clarity Pro. We'll use the dash as is. For Crystal "creativity" same.

We might write "−10–10" as exactly? But converting the text "to" might not appear. Since the user's prompt has dash "–" not "to". We'll use "−10–10" (en dash).

Clarity Pro — creativity 0–10, scale_factor 2/4/8/16, output_format jpg/png. $0.03 por MP de salida, máximo 64 MP.

Output section? Need to include "Salida" maybe. But if the source has "Output" as a bold paragraph, to preserve "same number of times", we translate. Use "Salida" separately.

Then:

Salida

{
  "mode": "crystal",
  "requested_mode": "crystal",
  "url": "https://…",
  "credit_cost": 3,
  "cost_usd": 0.03,
  "balance": 97,
  "webhook": null,
  "saved_to": "/path/to/out.jpg",
  "published_url": "https://a.uguu.se/…",
  "published_via": "uguu",
  "note": null
}

Clarity cobra 1 crédito = $0,01. Los archivos locales se publican primero para que Clarity obtenga los bytes. Usa publish: "funnel" si el archivo debe permanecer en esta máquina (Tailscale Funnel, no Serve).

Note: $0.01 vs $0,01. Spanish locale could use comma, but preserve number? It's not code. But translation may keep as $0.01. In Spanish text, decimal comma is normal. However, to avoid altering literal, use "0.01". The instructions: "Translate prose only. Keep product names etc." It doesn't say keep numbers, but we should not perversely change numeric notation? Usually preserve digits. I'd keep "0.01". Same for env timeout "300000". Fine.

Now table:

Variables de entorno

Nombre

Predeterminado

Propósito

CLARITY_API_KEY

—

Requerida (o CAI_API_KEY)

CLARITY_BASE_URL

https://api-upscale.clarityai.co

Seleccionar el endpoint

CLARITY_TIMEOUT

300000

Tiempo de espera de curl en ms

CLARITY_OUTPUT_DIR

—

Guardar automáticamente las salidas cuando se omite output_path

CLARITY_PUBLISH

uguu

Publicador predeterminado para archivos locales

CLARITY_LITTERBOX_TIME

1h

TTL de litterbox (1h / 12h / 24h / 72h)

Note: "Override the endpoint" -> "Sobreescribir el endpoint" = "Override" as to override. In Spanish, "override" is "sobrescribir". Not as "overrides"? Let's translate as "Reemplaza el endpoint". Use "Reemplaza el endpoint" in column purpose. But table cell maybe is a description: "Reemplaza el endpoint".

Now Scripts:

Scripts

bun start
bun test
bun run smoke-test
bun run smoke-test -- --live

--live llama a la API real y gasta créditos.

Notas

  • No escribes a stdout desde este proceso, excepto por el transporte MCP. Los diagnósticos van a stderr.

  • El cliente HTTP es Bun Shell curl, que coincide con los ejemplos oficiales, con el cuerpo de una Response como stdin.

Wait "matching the official examples" as "que coincide con" might be a bit off. Actually "matching" could mean "as in the official examples". So "aligual que en los ejemplos oficiales". Let's write: "El cliente HTTP es Bun Shell curl, como en los ejemplos oficiales, con el cuerpo de una Response como stdin."

Better: "El cliente HTTP es curl de Bun Shell, como en los ejemplos oficiales, pasando el cuerpo de una Response como stdin." Actually the phrase "with a Response body as stdin" is a concise engineering note. We can translate as "que pasa un cuerpo de Response como stdin" but keeping original: "con un cuerpo de Response como stdin". Fine.

Licencia

MIT

Let's verify the table column "Nombre" vs "CLARITY..." code. Good.

Now ensure that the output contains no "GXP" placeholders omitted. We have all except maybe GXP1, GXP2, GXP3, GXP4, GXP5 included.

Let's write the final carefully. Use proper capitalization. Make sure "API" stays, "Clarity AI" stays, "MCP" stays.

Potential issue: "clarity_list_models" and "clarity_upscale" code spans in headings? We preserved.

One more nuance: The heading "## Tools" should be "## Herramientas". The table in "Tools" section includes "Input (common)" translated to "Entrada (común)". In Spanish, maybe "Entrada (común)" is fine.

Another nuance: "Output" in the source is "Output" but in Spanish could be "Resultado" more natural than "Salida". Use "Salida" because output matches output_path. But "Resultado" is also fine. I think "Salida" is okay. But in some Spanish tech translation "output" = "salida". Yes.

Let's also consider "spends credits" -> "gaste créditos" but "gasta" is fine.

Let# clarity-api-mcp

Servidor MCP de Bun para el upscaler de Clarity AI. Un único endpoint POST, todos los modos oficiales.

Características

  • Herramientas: clarity_list_models, clarity_upscale

  • Modos: crystal, crystal-video, clarity (alias creative), clarity-pro

  • Archivos locales: se publican como una URL pública cruda (uguu, litterbox o Tailscale Funnel) antes del POST de Clarity

  • Las páginas para compartir de Dropbox y las páginas HTML de tmpfiles.org se reescriben como URLs directas de archivo

  • Nativo de Bun: TypeScript sin paso de compilación, .env automático, Bun.file / Bun.write, Bun Shell curl

  • Salida MCP estructurada más una alternativa de texto

Requisitos

Configuración

git clone https://github.com/thomastraum/clarity-api-mcp.git
cd clarity-api-mcp
bun install
cp .env.example .env

Pon tu clave en .env (nunca hagas commit de este archivo):

CLARITY_API_KEY=your-key-here

Bun carga .env automáticamente. El servidor también lee el .env de este paquete cuando un agente de codificación lo inicia desde otro directorio.

Configuración del cliente MCP

Reemplaza la ruta con tu clon:

{
  "mcpServers": {
    "clarity-api": {
      "command": "bun",
      "args": ["/absolute/path/to/clarity-api-mcp/src/index.ts"]
    }
  }
}

La clave puede estar en .env o en el bloque env de MCP. Consulta docs/INSTALL.md para ver fragmentos de Claude, Cursor, Codex y Grok.

Herramientas

clarity_list_models

Devuelve todos los modos, la lista de parámetros y el cuerpo de ejemplo de la página oficial de la API.

clarity_upscale

Envía POST https://api-upscale.clarityai.co con Authorization: Bearer ….

Entrada (común)

Campo

Notas

image

URL pública de imagen o archivo local (todos los campos modos de imagen)

video

URL pública de vídeo o archivo local (crystal-video)

mode

crystal | crystal-video | clarity | creative | clarity-pro

publish

uguu (predeterminado) | litterbox | funnel | none — cómo exponer un archivo local como bytes sin procesar

webhook

Opcional. El resultado se envía aquí mediante POST en lugar de devolverlo

output_path

Archivo o directorio local opcional para guardar el resultado

include_raw_response

Indicador de depuración opcional

Crystal — scale_factor 1–200, creativity 0–10, output_format jpg/png, target_megapixels 0.001–1500

Crystal Video — scale_factor 1–200

Clarity — creativity / resemblance / dynamic / fractality −10–10, scale_factor 2–16, style default/portrait/anime, postprocessing none/sharpen, prompt

Clarity Pro — creativity 0–10, scale_factor 2/4/8/16, output_format jpg/png. $0.03 por MP de salida, máx. 64 MP.

Salida

{
  "mode": "crystal",
  "requested_mode": "crystal",
  "url": "https://…",
  "credit_cost": 3,
  "cost_usd": 0.03,
  "balance": 97,
  "webhook": null,
  "saved_to": "/path/to/out.jpg",
  "published_url": "https://a.uguu.se/…",
  "published_via": "uguu",
  "note": null
}

Clarity cobra 1 crédito = $0.01. Los archivos locales se publican primero para que Clarity pueda obtener los bytes sin procesar. Usa publish: "funnel" si el archivo debe segmentar en esta máquina (Tailscale Funnel, no Serve).

Variables de entorno

Nombre

Predeterminado

Propósito

CLARITY_API_KEY

—

Requerida (o CAI_API_KEY)

CLARITY_BASE_URL

https://api-upscale.clarityai.co

Reemplaza el endpoint

CLARITY_TIMEOUT

300000

Tiempo de espera de curl en ms

CLARITY_OUTPUT_DIR

—

Guardar automáticamente la salida cuando se omite output_path

CLARITY_PUBLISH

uguu

Publicador predeterminado para archivos locales

CLARITY_LITTERBOX_TIME

1h

TTL de litterbox (1h / 12h / 24h / 72h)

Scripts

bun start
bun test
bun run smoke-test
bun run smoke-test -- --live

--live llama a la API real y gasta créditos.

Notas

  • No escribas a stdout desde este proceso, salvo para el transporte de MCP. Los diagnósticos van a stderr.

  • El cliente HTTP es Bun Shell curl, como en los ejemplos oficiales, con un cuerpo de Response como stdin.

Licencia

MIT

Related MCP Connectors

Related MCP Servers