Servidor MCP
UberLLM é um servidor MCP em https://api.uberllm.dev/mcp. Um agente conectado a ele pode listar modelos, precificar uma requisição, criar e editar imagens, criar vídeos e verificar seu saldo, sem escrever chamadas HTTP.
Ele está listado no [Registro MCP oficial]](https://registry.modelcontextprotocol.io/v0/servers?search=dev.uberllm) como dev.uberllm/mcp, para que clientes que leem o registro possam adicioná-lo pelo nome.
Ele usa o transporte HTTP com streaming. Faça login com a mesma API key que você usa para /v1, enviada como Authorization: Bearer ull_.... Uma chamada de ferramenta é cobrada, limitada e recusada exatamente como a mesma requisição para a API: os mesmos preços, os mesmos limites de gasto por API key, e requisições falhas não custam nada.
Código Claude
Substitua $KEY pela sua API key, ou defina KEY no seu shell primeiro:
claude mcp add --transport http uberllm https://api.uberllm.dev/mcp --header "Authorization: Bearer $KEY"
Adicione --scope user para usá-lo em todos os projetos. Execute claude mcp list para checar
que ele se conectou.
Claude Desktop
Claude Desktop conecta-se a um servidor remoto com uma chave através de
mcp-remote (precisa de Node.js). Abra
Settings → Developer → Edit Config e adicione:
{
"mcpServers": {
"uberllm": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.uberllm.dev/mcp", "--header", "Authorization:${UBERLLM_AUTH}"],
"env": { "UBERLLM_AUTH": "Bearer ull_your_key_here" }
}
}
}
O cabeçalho não tem espaço depois de : de propósito: no Windows, Claude Desktop não coloca aspas em espaços dentro de args. Reinicie Claude Desktop depois de salvar.
Cursor e outros clientes
Clientes que leem um arquivo mcpServers (o ~/.cursor/mcp.json do Cursor, por exemplo) aceitam:
{
"mcpServers": {
"uberllm": {
"url": "https://api.uberllm.dev/mcp",
"headers": { "Authorization": "Bearer ull_your_key_here" }
}
}
}
Ferramentas
| Ferramenta | O que faz | Gasta |
|---|---|---|
list_models |
Modelos que você pode chamar agora, com seus preços. type é chat, image, video ou music; search mantém modelos cujo id ou nome contém as palavras. |
Não |
get_model |
Um modelo: seu preço e, para um modelo de mídia, parameters, um JSON Schema das opções que suas requisições aceitam. |
Não |
quote |
Verifica uma requisição de imagem, vídeo, música ou text-to-speech contra o modelo e a precifica, sem criar nada. Retorna cost_usd, o preço listado, e max_cost_usd, o que é retido enquanto executa e o máximo que será cobrado. |
Não |
generate_image |
Cria imagens a partir de um prompt. Retorna links e usage.cost_usd. Com return_image: true as imagens também vêm na resposta. |
Sim |
edit_image |
Muda a imagem em image_url (ou as imagens em input_images) seguindo o prompt. Use um modelo de edição, como um cujo id termina em -edit. |
Sim |
start_video |
Inicia um vídeo e retorna um job. Envie idempotency_key para que uma nova tentativa nunca inicie ou pague por um segundo vídeo. |
Sim, quando o vídeo é feito |
get_job |
Um job de vídeo ou música: status, progresso e, uma vez que foi bem-sucedido, seus links de arquivo e custo. | Não |
wait_job |
Espera até que um job termine, por até timeout_seconds (50 no máximo). Se done for false, chame-o novamente. |
Não |
balance |
O que você pode gastar agora e o que está retido para requisições e jobs ainda em execução, em dólares americanos. | Não |
Opções que um modelo lista em seu parameters schema (por exemplo duration_seconds,
resolution ou aspect_ratio) vão em options em quote, generate_image,
edit_image e start_video. Envie max_cost (dólares americanos) em uma ferramenta de gasto
para recusar qualquer coisa que possa custar mais.
Um vídeo leva de cerca de 30 segundos a vários minutos. O fluxo usual é
get_model, quote, start_video, então wait_job até que o status seja
succeeded, failed, canceled ou expired.
Arquivos
Links de resultado (/v1/media/artifacts/...) precisam da mesma API key no cabeçalho Authorization para download. Arquivos são mantidos por cerca de 3 horas depois que um trabalho termina; links de imagem por cerca de 15 minutos. Veja Crie um vídeo ou imagem para os detalhes de cada solicitação.
Erros
Quando a API recusa uma chamada, a ferramenta responde com um resultado de erro contendo a própria mensagem e código da API, por exemplo insufficient_credits ou max_cost_too_low. Os códigos são os que estão em [Erros]](./errors). Uma requisição sem uma chave válida é respondida 401 antes que qualquer ferramenta seja executada.
Verificar a conexão
curl https://api.uberllm.dev/mcp \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'