Skip to main content
Glama

dribba

Offizielles SDK und CLI für die öffentliche Dribba-API.

Kein API-Schlüssel, kein OAuth, kein Konto. Jeder Lese-Endpunkt ist öffentlich. Falls du nach der Anmeldeseite gesucht hast – es gibt keine – siehe dribba.com/auth.md.

CLI

Nichts zu installieren:

npx dribba services --table
npx dribba cases --limit 3 | jq -r '.items[].slug'
npx dribba estimate --platforms ios,android --complexity complex
npx dribba ask "flutter migration"
npx dribba markdown /servicios
npx dribba --help

Füge --sandbox hinzu, um die eingefrorenen Fixtures anstelle der Produktion zu treffen.

Related MCP server: local-skills-mcp

MCP-Server (stdio-Brücke)

Der MCP-Server von Dribba ist remote – Streamable HTTP unter https://dribba.com/mcp. Wenn dein Client nur stdio spricht, enthält dieses Paket die Brücke:

{
  "mcpServers": {
    "dribba": { "command": "npx", "args": ["-y", "dribba-mcp"] }
  }
}
npx dribba-mcp            # product surface: 5 tools + llms.txt resources
npx dribba-mcp --docs     # documentation surface: 4 tools

Es leitet JSON-RPC und sonst nichts weiter. Die Tools, Ressourcen und die Protokollversion entsprechen also dem, was der Server angibt – es gibt keine zweite Implementierung, die abweichen könnte. Wenn dein Client Streamable HTTP spricht, überspringe die Brücke und richte ihn direkt auf die URL aus.

Verifiziert mit dem offiziellen @modelcontextprotocol/sdk über stdio: Verbinden, tools/list, tools/call, resources/list, resources/read.

SDK

npm i dribba        # JavaScript / TypeScript
pip install dribba  # Python 3.9+, same methods, also dependency-free

Der Python-Client befindet sich in python/ und ist auf PyPI als dribba veröffentlicht.

import { Dribba } from "dribba";

const dribba = new Dribba();

const { items, total, next_cursor } = await dribba.services({ limit: 5 });
const study = await dribba.case("cityxerpa");
const budget = await dribba.estimate({ platforms: ["ios", "android"] });

// Whole collections, following the cursor for you
for await (const job of dribba.paginate("/api/v1/jobs")) {
  console.log(job.title);
}

Fehler

Jede 4xx/5xx-Antwort wirft einen DribbaError. Verzweige anhand von code – er ist stabil. title und detail sind Prosa und können umformuliert werden.

import { DribbaError } from "dribba";

try {
  await dribba.service("nope");
} catch (error) {
  if (error instanceof DribbaError && error.code === "resource_not_found") {
    console.log(error.resolution); // what to do next, from the server
  }
}

Ratenbegrenzung

120 Anfragen pro 60 Sekunden pro IP. Nach jedem Aufruf enthält dribba.rateLimit die Angaben der letzten Antwort, sodass du selbst drosseln kannst, anstatt einen 429 zu provozieren:

await dribba.company();
console.log(dribba.rateLimit); // { limit: 120, remaining: 118, reset: 47 }

Sandbox

Eingefrorene Fixtures mit Produktionsformaten. Nützlich, weil ein Test, der „es gibt 9 Dienste“ behauptet, an dem Tag bricht, an dem wir den zehnten veröffentlichen – gegen die Sandbox nicht.

const sandbox = new Dribba({ sandbox: true });
const services = await sandbox.services(); // services.sandbox === true

Idempotenz

Idempotency-Key bei jedem POST. Gleicher Schlüssel und gleicher Body wiederholen die gespeicherte Antwort; gleicher Schlüssel mit anderem Body ergibt eine 400.

await dribba.estimate(input, { idempotencyKey: crypto.randomUUID() });

Markdown und der asynchrone Export

Jede Seite als Markdown und ein Export vieler Seiten mit einer Anfrage:

const page = await dribba.markdown("/servicios");

const job = await dribba.startExport(["/", "/precios", "/servicios"]);
await dribba.waitForExport(job.id);
const everything = await dribba.exportResult(job.id);

Exportaufträge leben im Speicher einer Serverinstanz und laufen nach 15 Minuten ab; eine 404 beim Abfragen bedeutet, dass die Anfrage eine andere Instanz erreicht hat, nicht dass die Arbeit verloren ist.

Über die REST-API hinaus

  • MCP – zwei Remote-Server über Streamable HTTP, ohne Authentifizierung: https://dribba.com/mcp (Aktionen) und https://dribba.com/docs/mcp (Dokumentation). Siehe https://dribba.com/developers/mcp.

  • Markdown einer beliebigen Seite – Accept: text/markdown oder .md anhängen.

  • Die gesamte Website als OKF-Paket.

  • /ask – NLWeb: eine Frage in natürlicher Sprache, wörtliche Passagen als Antwort.

Skills und das Agent-Plugins-Manifest

Dieses Repository dient auch als portables Agent-Plugin:

plugin.json          the manifest
mcp.json             the two remote MCP servers
skills/              seven SKILL.md files describing what dribba.com exposes

Installiere die Skills in deinen Agenten:

npx skills add dribbaengineering/dribba

skills/ wird generiert aus dem, was die Website unter https://dribba.com/.well-known/agent-skills/ ausliefert. Bearbeite die Website, nicht die Kopie – die Kopie ist es, die abweicht.

Anforderungen

Node 20+. Keine Abhängigkeiten.

Lizenz

MIT. Die Daten hinter der API sind CC BY 4.0 – nenne „Dribba“ und verlinke die Quell-URL.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A powerful MCP server that brings the skills.sh ecosystem directly to your AI agents, enabling effortless discovery, installation, and management of skills.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that gives an LLM agent standalone-equivalent control over a Mineflayer Minecraft bot — movement, mining, crafting, inventory, combat, containers, chat, and much more — exposed as 110 strongly-typed tools across 23 groups, with full bot lifecycle management and dual (poll + push) event streaming.
    97 npm
    4
    MIT