Serveur MCP
UberLLM est un serveur MCP à https://api.uberllm.dev/mcp. Un agent qui y est connecté peut lister les modèles, estimer le coût d'une requête, créer et modifier des images, créer des vidéos et vérifier votre solde, sans écrire d'appels HTTP.
Il est listé dans le registre MCP officiel sous le nom dev.uberllm/mcp, ainsi les clients qui lisent le registre peuvent l'ajouter par son nom.
Il utilise le transport HTTP Streamable. Connectez-vous avec la même API key que vous utilisez pour /v1, envoyée comme Authorization: Bearer ull_.... Un appel d'outil est facturé, limité et refusé exactement comme la même requête à l'API : les mêmes prix, les mêmes limites de dépenses par API key, et les requêtes échouées ne coûtent rien.
Code Claude
Remplacez $KEY par votre clé API, ou définissez KEY dans votre shell d'abord :
claude mcp add --transport http uberllm https://api.uberllm.dev/mcp --header "Authorization: Bearer $KEY"
Ajoutez --scope user pour l'utiliser dans chaque projet. Exécutez claude mcp list pour vérifier
qu'il est connecté.
Claude Desktop
Claude Desktop se connecte à un serveur distant avec une clé via
mcp-remote (nécessite Node.js). Ouvrez
Paramètres → Développeur → Modifier la configuration et ajoutez :
{
"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" }
}
}
}
L'en-tête n'a pas d'espace après : volontairement : sur Windows, Claude Desktop ne met pas entre guillemets les espaces à l'intérieur de args. Redémarrez Claude Desktop après avoir enregistré.
Cursor et autres clients
Les clients qui lisent un fichier mcpServers (le ~/.cursor/mcp.json de Cursor, par exemple) prennent :
{
"mcpServers": {
"uberllm": {
"url": "https://api.uberllm.dev/mcp",
"headers": { "Authorization": "Bearer ull_your_key_here" }
}
}
}
Outils
| Outil | Ce qu'il fait | Dépenses |
|---|---|---|
list_models |
Modèles que vous pouvez appeler maintenant, avec leur prix. type est chat, image, video ou music ; search conserve les modèles dont l'id ou le nom contient les mots. |
Non |
get_model |
Un modèle : son prix et, pour un modèle média, parameters, un JSON Schema des options que ses requêtes acceptent. |
Non |
quote |
Vérifie une requête d'image, de vidéo, de musique ou de synthèse vocale par rapport au modèle et la tarifie, sans rien produire. Retourne cost_usd, le prix affiché, et max_cost_usd, ce qui est retenu pendant l'exécution et le montant maximum facturé. |
Non |
generate_image |
Crée des images à partir d'un prompt. Retourne des liens et usage.cost_usd. Avec return_image: true les images sont aussi renvoyées dans la réponse. |
Oui |
edit_image |
Modifie l'image dans image_url (ou les images dans input_images) en suivant le prompt. Utilisez un modèle d'édition, comme un dont l'id se termine par -edit. |
Oui |
start_video |
Démarre une vidéo et retourne un job. Envoyez idempotency_key pour qu'une nouvelle tentative ne démarre ni ne paie jamais une deuxième vidéo. |
Oui, quand la vidéo est faite |
get_job |
Un job vidéo ou musical : statut, progression et, une fois réussi, ses liens de fichiers et son coût. | Non |
wait_job |
Attend qu'un job se termine, jusqu'à timeout_seconds (50 au maximum). Si done est false, rappelez-le. |
Non |
balance |
Ce que vous pouvez dépenser maintenant et ce qui est retenu pour les requêtes et jobs toujours en cours, en dollars US. | Non |
Les options qu'un modèle liste dans son schéma parameters (par exemple duration_seconds,
resolution ou aspect_ratio) vont dans options sur quote, generate_image,
edit_image et start_video. Envoyez max_cost (dollars US) sur un outil de dépense
pour refuser tout ce qui pourrait coûter plus cher.
Une vidéo prend d'environ 30 secondes à plusieurs minutes. Le flux habituel est
get_model, quote, start_video, puis wait_job jusqu'à ce que le statut soit
succeeded, failed, canceled ou expired.
Fichiers
Les liens de résultat (/v1/media/artifacts/...) nécessitent la même clé API dans l'en-tête Authorization pour les télécharger. Les fichiers sont conservés pendant environ 3 heures après la fin d'une tâche ; les liens d'image pendant environ 15 minutes. Consultez Créer une vidéo ou une image pour les détails de chaque requête.
Erreurs
Lorsque l'API refuse un appel, l'outil répond avec un résultat d'erreur portant le
message et le code propres à l'API, par exemple insufficient_credits ou
max_cost_too_low. Les codes sont ceux décrits dans Erreurs. Une requête
sans clé valide reçoit la réponse 401 avant l'exécution de tout outil.
Vérifier la connexion
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"}'