Integración con LangChain.js
LangChain.js carga herramientas MCP con @langchain/mcp-adapters. Conéctalo a @burnbound/mcp y tu agente recibe fetch_paid y el resto de herramientas de Burnbound: puede pagar APIs x402 y reembolsar cargos de Stripe a través de tu gateway de acciones, y cada pago o reembolso se comprueba contra su política de Burnbound (hosts permitidos, máximo por pago, tope diario, aprobaciones) antes de que se mueva el dinero. La API del adaptador sigue la guía MCP de LangChain.
Esta página usa el servidor MCP porque el SDK de JavaScript de Burnbound todavía no está publicado en npm (consulta SDK). Todo lo que aparece aquí es un paquete publicado.
Instalación
npm install langchain @langchain/core @langchain/mcp-adapters @langchain/anthropic @burnbound/mcp
Probado con langchain 1.5, @langchain/mcp-adapters 2.0 y @burnbound/mcp 0.3.1 en Node.js 22. Sirve cualquier modelo de chat; el ejemplo usa Anthropic.
Necesitas una clave del agente (bb_agent_…) del panel de Burnbound, para un agente con sus topes, sus hosts permitidos y una cartera conectada. Primeros pasos lo deja listo.
Conecta las herramientas de Burnbound
import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
const burnbound = new MCPAdapter({
servers: {
burnbound: {
command: "npx",
args: ["-y", "@burnbound/mcp@latest"],
env: { BURNBOUND_KEY: process.env.BURNBOUND_KEY! },
},
},
});
try {
const agent = createAgent({
model: "anthropic:claude-opus-5-5",
tools: await burnbound.listTools(),
systemPrompt:
"Pay for APIs only with the burnbound__fetch_paid tool. Call burnbound__get_budget first. " +
"If a Burnbound tool returns an error, report its code instead of retrying.",
});
const result = await agent.invoke({
messages: [
{
role: "user",
content:
'Search the web with Tavily for "what is x402": POST https://x402.tavily.com/search ' +
'with the JSON body {"query": "what is x402", "max_results": 3}, maxAmountUsd "0.02".',
},
],
});
console.log(result.messages.at(-1)?.content);
} finally {
await burnbound.close();
}
Mantén el adaptador abierto mientras se ejecuta el agente y ciérralo en finally, como recomienda LangChain. El ejemplo paga a Tavily (0.01 USDC por búsqueda en Base la última vez que lo verificamos), así que x402.tavily.com tiene que estar en los hosts permitidos del agente. Hay más vendedores en el catálogo de APIs x402.
Los nombres de las herramientas llevan el nombre del servidor
@langchain/mcp-adapters 2.0 antepone a cada herramienta el nombre del servidor, así que el agente ve burnbound__fetch_paid, burnbound__get_budget, burnbound__list_payments, burnbound__get_approval_status, burnbound__search_paid_apis, burnbound__diagnose_payment, burnbound__propose_rule y burnbound__stripe_refund. Usa esos nombres en tus prompts. (La versión 1.x llamaba a la clase MultiServerMCPClient, usaba mcpServers y getTools() y no anteponía nada a los nombres; esos nombres siguen funcionando en la 2.0, pero están obsoletos).
Pasa todas las variables de Burnbound en env
El transporte stdio no le pasa todo tu entorno al servidor, solo unas pocas variables como PATH y HOME. Pon en env todas las variables BURNBOUND_* que necesite el servidor: BURNBOUND_KEY siempre, y BURNBOUND_WALLET_PROFILE si el agente firma con una cartera local que no es la predeterminada. La lista completa está en la referencia de herramientas MCP.
Cuando se rechaza un pago
Cuando Burnbound rechaza un pago, el adaptador lanza una ToolException cuyo mensaje lleva el JSON de error del servidor, por ejemplo:
{
"error": {
"code": "host_not_allowed",
"message": "The URL's host is not in this agent's allowHosts, so nothing was requested. Check get_budget.",
"host": "api.example.com"
}
}
En ese caso no se ha pagado nada. La política se mantiene decida lo que decida el modelo; la línea del prompt sobre los errores solo evita que el modelo se quede en bucle ante un rechazo. Los pagos que necesitan a una persona, por ejemplo uno igual o superior al umbral de aprobación del agente o el primero a una dirección de cobro nueva, vuelven como pending_approval (un resultado normal, no un error); consulta Aprobación humana de los pagos de agentes con Slack para ver cómo reintentar.
Dónde puede ejecutarse
El servidor es un proceso hijo que se arranca con npx, así que necesita Node.js 20 o posterior en la máquina que ejecuta tu agente, y no encaja en funciones serverless ni edge. Si el agente firma con una cartera local, la clave tiene que estar en el llavero de esa máquina o en ~/.burnbound; en un contenedor o un servidor compartido, mejor una cartera de Coinbase CDP. Consulta Carteras de agente: Coinbase CDP o una clave local.
Cómo se probó este ejemplo
Ejecutamos esta conexión de principio a fin con @burnbound/mcp 0.3.1: el adaptador listó las cinco herramientas, get_budget devolvió el presupuesto del agente y fetch_paid pagó a un vendedor de prueba en Base Sepolia (status: "paid"), invocando directamente los objetos de herramienta de LangChain. La llamada al agente es código estándar de LangChain.
Relacionado
- Vercel AI SDK y Mastra: el mismo servidor en otros frameworks.
- El flujo del comprador en x402 v2: qué hace
fetch_paiden cada llamada. - Primeros pasos: crea el agente y su clave.