Usar RPC blockchain en agentes de LangChain con BlockVectra
Dé a un agente de LangChain datos blockchain en vivo con una sola herramienta sobre el endpoint público de BlockVectra sin clave; después añada el servidor MCP de documentación y una API key para los métodos que la requieren.
Un agente de LangChain lee datos blockchain en vivo mediante una sola herramienta que envía JSON-RPC por POST a https://api.blockvectra.com/v1/eth_mainnet/public. Ese endpoint no necesita API key ni registro para los métodos de public.methods de cada cadena. Una clave añade el resto, y el plan gratuito ofrece 30,000,000 CU por ventana de 30 días. Verificado el .
import httpx
from langchain.agents import create_agent
from langchain.tools import tool
RPC = "https://api.blockvectra.com/v1/eth_mainnet/public"
@tool
def eth_block_number() -> str:
"""Return the latest Ethereum mainnet block number as a hex string."""
body = {"jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []}
return httpx.post(RPC, json=body, timeout=10).json()["result"]
agent = create_agent("claude-sonnet-5", tools=[eth_block_number])
result = agent.invoke({"messages": [{"role": "user", "content": "What is the latest block?"}]})
print(result["messages"][-1].content)Instale con pip install langchain httpx; la cadena del modelo y su clave de proveedor siguen el inicio rápido de LangChain. La herramienta usa el decorador @tool de LangChain y create_agent.
La misma herramienta en TypeScript
import * as z from "zod";
import { createAgent, tool } from "langchain";
const ethBlockNumber = tool(
async () => {
const res = await fetch("https://api.blockvectra.com/v1/eth_mainnet/public", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_blockNumber", params: [] }),
});
return (await res.json()).result as string;
},
{ name: "eth_block_number", description: "Latest Ethereum mainnet block number (hex).", schema: z.object({}) },
);
const agent = createAgent({ model: "claude-sonnet-5", tools: [ethBlockNumber] });Consulte la guía de herramientas de LangChain JS para ver la firma de tool().
Llamar a cualquier método con una API key
Los métodos fuera de public.methods, como eth_getLogs, necesitan una clave. Léala del entorno y envíela en el encabezado x-api-key; el slug de la cadena (eth_mainnet, base_mainnet, etc.) se obtiene de GET /v1/chains:
import os
import httpx
from langchain.tools import tool
@tool
def rpc_call(chain: str, method: str, params: list) -> dict:
"""Call a JSON-RPC method on a BlockVectra chain slug such as base_mainnet."""
headers = {"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]}
body = {"jsonrpc": "2.0", "id": 1, "method": method, "params": params}
return httpx.post(f"https://api.blockvectra.com/v1/{chain}", json=body, headers=headers, timeout=15).json()Devolver la respuesta JSON-RPC completa permite al modelo leer un objeto error y cambiar su siguiente llamada. Para crear la clave sin navegador, siga el flujo de cuatro pasos de la guía de registro programático: desafío, firma, inicio de sesión y después POST /keys. Los desarrolladores también pueden crear una clave en la consola.
Añadir el servidor MCP de documentación
Los agentes de LangChain se conectan a servidores MCP mediante MCPAdapter. Apúntelo a https://docs.blockvectra.com/mcp para dar al agente list_chains, get_status, rpc_call, read_doc y las demás herramientas listadas en la página del servidor MCP. Conectarse no requiere clave.
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter
async def main():
async with MCPAdapter("https://docs.blockvectra.com/mcp") as adapter:
tools = await adapter.list_tools()
agent = create_agent("claude-sonnet-5", tools)
return await agent.ainvoke({"messages": [{"role": "user", "content": "List the supported chains."}]})Instale con pip install "langchain[mcp]" (langchain>=1.4.0, en beta). Para usar herramientas con clave, pase la clave como token bearer: MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])) con from fastmcp.client import Client, como en la guía de autenticación MCP de LangChain.
En TypeScript, instale @langchain/mcp-adapters@^2.0.0 y pase un mapa de encabezados:
import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
const adapter = new MCPAdapter({
servers: {
blockvectra: {
url: "https://docs.blockvectra.com/mcp",
headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
},
},
});
try {
const agent = createAgent({ model: "claude-sonnet-5", tools: await adapter.listTools() });
// agent.invoke(...)
} finally {
await adapter.close();
}Elimine la línea headers para conectarse sin clave. Referencias oficiales: LangChain MCP (Python) y LangChain MCP (JavaScript).
Errores que verá su herramienta
| Respuesta | Significado | Qué debe hacer el agente |
|---|---|---|
HTTP 401, -32024, missing_api_key | Se llamó a una URL con clave sin enviar clave | Enviar la clave en x-api-key o en la ruta |
HTTP 401, -32024, invalid_api_key | Clave desconocida, desactivada o revocada | Comprobar la clave en la consola; una clave nueva tarda unos segundos en activarse |
-32601, method_not_public | El método no está en public.methods de la cadena | Usar una URL con clave en lugar de /public |
-32601, método no disponible | El método no está habilitado en esa cadena | Revisar methods.allow en GET /v1/chains |
Cada error incluye data.reason y un docs_url; la lista completa está en la página de errores.
Preguntas frecuentes
¿Funciona el endpoint público para eth_getLogs? No. Solo atiende los métodos de public.methods de la cadena; eth_getLogs y la Data API necesitan una API key.
¿Puede el agente pasar la API key como argumento de la herramienta? No. Manténgala en el entorno o en los encabezados del cliente MCP; el servidor MCP rechaza las claves en los argumentos de las herramientas.
¿Puede la herramienta apuntar a otra cadena? Sí. Sustituya eth_mainnet por cualquier slug de cadena que tenga una public.url en GET /v1/chains.
Próximos pasos
- Resumen de frameworks de agentes para ElizaOS, viem, wagmi y Coinbase AgentKit.
- Conectar un agente de IA para descubrir endpoints con MCP, llms.txt y OpenAPI.
- Reglas de facturación para la medición de CU, los límites de velocidad y los errores no facturados.
Última actualización:
Comparación con Infura
Utilice los créditos de ciclo de BlockVectra para tareas de lectura concentradas, pague por método sin suscripción mensual de RPC y automatice la creación de cuentas y la financiación con stablecoins.
Logs frente a API de transferencias
Elija eth_getLogs para logs de eventos de contratos o la API de transferencias de tokens para el historial indexado de transferencias ERC-20. Compare rangos de bloques, paginación, cobertura y finalidad.