Skip to main content
Glama

dribba

面向 Dribba 公共 API 的官方 SDK 与 CLI。

无需 API 密钥、无需 OAuth、无需账户。 每个只读端点都是公开的。如果你在找凭据页面,那并不存在——参见 dribba.com/auth.md。

CLI

无需安装:

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

添加 --sandbox 可访问冻结的测试数据,而非生产环境。

Related MCP server: local-skills-mcp

MCP 服务器(stdio 桥接)

Dribba 的 MCP 服务器是远程的——通过 Streamable HTTP 位于 https://dribba.com/mcp。如果你的客户端只支持 stdio,本包提供了桥接:

{
  "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

它只转发 JSON-RPC,不转发其他内容,因此工具、资源和协议版本完全由服务器声明——不存在第二个实现会导致漂移。如果你的客户端确实支持 Streamable HTTP,请跳过桥接,直接指向该 URL。

已通过官方 @modelcontextprotocol/sdk 在 stdio 上验证:connect、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

Python 客户端位于 python/,并以 dribba 发布到 PyPI。

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);
}

错误

所有 4xx/5xx 都会抛出 DribbaError。根据 code 分支判断——它是稳定的。title 和 detail 是描述性文本,可能会被改写。

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
  }
}

速率限制

每个 IP 每 60 秒 120 次请求。任何调用之后,dribba.rateLimit 保存了最后一次响应通告的值,因此你可以自行限速,而不是触发 429:

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

沙箱

具有生产环境数据结构的冻结测试数据。这很有用,因为一个断言"有 9 个服务"的测试在我们发布第十个服务的那天就会失败——而针对沙箱则不会。

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

幂等性

任何 POST 上的 Idempotency-Key。相同的键和相同的请求体会重放存储的响应;相同的键搭配不同的请求体则返回 400。

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

Markdown 与异步导出

任何页面都可以导出为 markdown,以及一次请求导出多个页面:

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);

导出任务只存在于单个服务器实例的内存中,15 分钟后过期;轮询时遇到 404 意味着请求到达了不同的实例,而不是工作丢失了。

REST API 之外

  • MCP — 两个通过 Streamable HTTP 的远程服务器,无需认证:https://dribba.com/mcp(操作)和 https://dribba.com/docs/mcp(文档)。参见 https://dribba.com/developers/mcp。

  • 任何页面的 Markdown — Accept: text/markdown,或追加 .md。

  • 整个站点 作为 OKF 捆绑包。

  • /ask — NLWeb:自然语言提问,返回逐字摘录。

Skills 与 Agent Plugins 清单

本仓库同时作为可移植的 Agent Plugin:

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

将 skills 安装到你的 agent 中:

npx skills add dribbaengineering/dribba

skills/ 是生成的,来源于站点在 https://dribba.com/.well-known/agent-skills/ 提供的内容。请编辑站点,而不是副本——副本才是会漂移的东西。

要求

Node 20+。零依赖。

许可证

MIT。API 背后的数据采用 CC BY 4.0——请注明"Dribba"并链接来源 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