Блокчейн-RPC в агентах LangChain з BlockVectra
Надайте агенту LangChain актуальні блокчейн-дані через один інструмент і публічний ендпоінт BlockVectra без ключа, а потім додайте docs MCP-сервер і API key для методів, яким він потрібен.
Агент LangChain читає актуальні блокчейн-дані через один інструмент, який надсилає JSON-RPC за допомогою POST на https://api.blockvectra.com/v1/eth_mainnet/public. Цей ендпоінт не потребує API key чи реєстрації для методів із public.methods кожної мережі. Ключ відкриває решту, а безкоштовний план надає 30,000,000 CU на 30-денне вікно. Перевірено .
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)Встановіть через pip install langchain httpx; рядок моделі та ключ її провайдера описано в швидкому старті LangChain. Інструмент використовує декоратор @tool LangChain і create_agent.
Той самий інструмент у 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] });Сигнатуру tool() див. у посібнику з інструментів LangChain JS.
Виклик будь-якого методу з API key
Методи поза public.methods, наприклад eth_getLogs, потребують ключа. Прочитайте його зі змінних середовища й надішліть у заголовку x-api-key; ідентифікатор мережі (eth_mainnet, base_mainnet тощо) береться з 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()Якщо повертати всю відповідь JSON-RPC, модель може прочитати об'єкт error і змінити наступний виклик. Щоб створити ключ без браузера, виконайте чотири кроки з посібника з програмної реєстрації: challenge, підпис, вхід, потім POST /keys. Розробники також можуть створити ключ у консолі.
Додайте docs MCP-сервер
Агенти LangChain підключаються до MCP-серверів через MCPAdapter. Вкажіть йому https://docs.blockvectra.com/mcp, щоб агент отримав list_chains, get_status, rpc_call, read_doc та інші інструменти зі сторінки MCP-сервера. Для підключення ключ не потрібен.
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."}]})Встановіть через pip install "langchain[mcp]" (langchain>=1.4.0, у бета-версії). Щоб користуватися інструментами, що потребують ключа, передайте ключ як bearer-токен: MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])) з from fastmcp.client import Client, як у посібнику з автентифікації MCP LangChain.
У TypeScript встановіть @langchain/mcp-adapters@^2.0.0 і передайте мапу заголовків:
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();
}Приберіть рядок headers, щоб підключатися без ключа. Офіційні матеріали: LangChain MCP (Python) і LangChain MCP (JavaScript).
Помилки, які побачить ваш інструмент
| Відповідь | Значення | Що має зробити агент |
|---|---|---|
HTTP 401, -32024, missing_api_key | URL із ключем викликано без ключа | Надішліть ключ у x-api-key або в шляху |
HTTP 401, -32024, invalid_api_key | Ключ невідомий, вимкнений або відкликаний | Перевірте ключ у консолі; новий ключ активується за кілька секунд |
-32601, method_not_public | Методу немає в public.methods мережі | Використайте URL із ключем замість /public |
-32601, метод недоступний | Метод не ввімкнено в цій мережі | Перевірте methods.allow у GET /v1/chains |
Кожна помилка містить data.reason і docs_url; повний список — на сторінці помилок.
Поширені запитання
Чи працює публічний ендпоінт для eth_getLogs? Ні. Він обслуговує лише методи з public.methods мережі; eth_getLogs і Data API потребують API key.
Чи може агент передавати API key як аргумент інструмента? Ні. Тримайте його в середовищі або в заголовках MCP-клієнта; MCP-сервер відхиляє ключі в аргументах інструментів.
Чи може інструмент працювати з іншою мережею? Так. Замініть eth_mainnet на будь-який ідентифікатор мережі, що має public.url у GET /v1/chains.
Наступні кроки
- Огляд фреймворків агентів для ElizaOS, viem, wagmi і Coinbase AgentKit.
- Підключення AI-агента для виявлення ендпоінтів через MCP, llms.txt і OpenAPI.
- Правила тарифікації щодо обліку CU, лімітів швидкості та помилок, що не тарифікуються.
Востаннє оновлено:
Рецепти для фреймворків агентів
Налаштовуйте блокчейн-RPC для ElizaOS, viem, wagmi та Coinbase AgentKit, а також виявляйте можливості за допомогою docs MCP.
ElizaOS
Спрямуйте plugin-evm з ElizaOS на BlockVectra двома змінними середовища, почніть без ключа на публічному ендпоінті й додайте docs MCP-сервер через plugin-mcp.