Blockchain-RPC in LangChain-Agenten mit BlockVectra nutzen
Geben Sie einem LangChain-Agenten mit einem einzigen Tool über den schlüssellosen öffentlichen Endpunkt von BlockVectra Live-Blockchain-Daten, und ergänzen Sie dann den Docs-MCP-Server und einen API key für die Methoden, die einen benötigen.
Ein LangChain-Agent liest Live-Blockchain-Daten über ein einziges Tool, das JSON-RPC per POST an https://api.blockvectra.com/v1/eth_mainnet/public sendet. Dieser Endpunkt benötigt für die Methoden in den public.methods der jeweiligen Chain weder einen API key noch eine Registrierung. Ein Key schaltet den Rest frei, und der Free Plan bietet 30,000,000 CU pro 30-Tage-Fenster. Geprüft am .
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)Installieren Sie mit pip install langchain httpx; der Modellname und der zugehörige Provider-Key folgen dem LangChain-Quickstart. Das Tool nutzt den @tool-Decorator von LangChain und create_agent.
Dasselbe Tool in 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] });Die Signatur von tool() finden Sie im Tools-Leitfaden von LangChain JS.
Beliebige Methoden mit einem API key aufrufen
Methoden außerhalb von public.methods, etwa eth_getLogs, benötigen einen Key. Lesen Sie ihn aus der Umgebung und senden Sie ihn im Header x-api-key; der Chain-Slug (eth_mainnet, base_mainnet usw.) stammt aus 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()Wenn die gesamte JSON-RPC-Antwort zurückgegeben wird, kann das Modell ein error-Objekt lesen und seinen nächsten Aufruf anpassen. Um den Key ohne Browser zu erstellen, durchlaufen Sie den vierstufigen Ablauf im Leitfaden zur programmatischen Registrierung: Challenge, Signatur, Login, dann POST /keys. Entwickler können auch in der Konsole einen Key erstellen.
Den Docs-MCP-Server hinzufügen
LangChain-Agenten verbinden sich über MCPAdapter mit MCP-Servern. Richten Sie ihn auf https://docs.blockvectra.com/mcp, damit der Agent list_chains, get_status, rpc_call, read_doc und die weiteren Tools von der MCP-Server-Seite erhält. Für die Verbindung ist kein Key nötig.
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."}]})Installieren Sie mit pip install "langchain[mcp]" (langchain>=1.4.0, in Beta). Um Tools mit Key-Pflicht zu nutzen, übergeben Sie den Key als Bearer-Token: MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])) mit from fastmcp.client import Client, wie im MCP-Authentifizierungsleitfaden von LangChain.
Installieren Sie in TypeScript @langchain/mcp-adapters@^2.0.0 und übergeben Sie eine Header-Map:
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();
}Lassen Sie die Zeile headers weg, um schlüssellos zu verbinden. Offizielle Referenzen: LangChain MCP (Python) und LangChain MCP (JavaScript).
Fehler, die Ihr Tool sieht
| Antwort | Bedeutung | Was der Agent tun sollte |
|---|---|---|
HTTP 401, -32024, missing_api_key | URL mit Key-Pflicht ohne Key aufgerufen | Den Key in x-api-key oder im Pfad senden |
HTTP 401, -32024, invalid_api_key | Key unbekannt, deaktiviert oder widerrufen | Den Key in der Konsole prüfen; ein neuer Key braucht einige Sekunden bis zur Aktivierung |
-32601, method_not_public | Methode steht nicht in den public.methods der Chain | Eine URL mit Key statt /public verwenden |
-32601, method not available | Methode ist auf dieser Chain nicht aktiviert | methods.allow in GET /v1/chains prüfen |
Jeder Fehler enthält data.reason und eine docs_url; die vollständige Liste steht auf der Fehlerseite.
Häufige Fragen
Funktioniert der öffentliche Endpunkt für eth_getLogs? Nein. Er bedient nur die Methoden in den public.methods der Chain; eth_getLogs und die Data API benötigen einen API key.
Kann der Agent den API key als Tool-Argument übergeben? Nein. Halten Sie ihn in der Umgebung oder in den Headern des MCP-Clients; der MCP-Server lehnt Keys in Tool-Argumenten ab.
Kann das Tool eine andere Chain ansprechen? Ja. Ersetzen Sie eth_mainnet durch einen beliebigen Chain-Slug, der in GET /v1/chains eine public.url hat.
Nächste Schritte
- Übersicht der Agent-Frameworks für ElizaOS, viem, wagmi und Coinbase AgentKit.
- Einen KI-Agenten verbinden, um Endpunkte mit MCP, llms.txt und OpenAPI zu entdecken.
- Abrechnungsregeln für CU-Messung, Ratenlimits und nicht abgerechnete Fehler.
Zuletzt aktualisiert:
Infura-Vergleich
Nutzen Sie das Zyklus-Guthaben von BlockVectra für konzentrierte Leseaufgaben, zahlen Sie nach Methode ohne monatliches RPC-Abonnement und automatisieren Sie Kontoerstellung sowie Stablecoin-Finanzierung.
Logs vs. Transfers-API
Wählen Sie eth_getLogs für Contract-Event-Logs oder die Token Transfers API für indexierten ERC-20-Transferverlauf. Vergleichen Sie Blockbereiche, Paginierung, Abdeckung und Finalität.