# 適用於 Agent 框架的區塊鏈 RPC 與文件 MCP

> Source: https://docs.blockvectra.com/zh-hant/guides/agent-frameworks/

使用下列配方在 ElizaOS、viem、wagmi 或 Coinbase AgentKit 中設定區塊鏈 RPC。開發者與 AI Agent 可以先透過[文件 MCP](https://docs.blockvectra.com/zh-hant/guides/ai-agents/#connecting-from-mcp-clients)探索方法與文件，再依獨立的 [HTTP 註冊流程](https://docs.blockvectra.com/en/guides/programmatic-signup/)建立 API key。在 RPC 與 Data API 請求中使用該 key，或在 MCP 用戶端的 `x-api-key` 標頭中用於需要 key 的工具；免 key 的 RPC 存取僅限於各鏈的 `public.methods`。

## ElizaOS

* 官方文件：[elizaOS 文件](https://elizaos.github.io/eliza/)
* 官方儲存庫：[elizaos/eliza](https://github.com/elizaos/eliza)

在 elizaOS 中，EVM 互動由 `@elizaos/plugin-evm` 外掛處理。此外掛會從以 `ETHEREUM_PROVIDER_<NETWORK>` 模式命名的環境變數，或 `EVM_PROVIDER_URL` 後備變數讀取 RPC 供應商端點。

在 `.env` 檔案中設定錢包私鑰與 RPC 端點：

```bash
# 用於簽署交易的 EVM 錢包私鑰
export EVM_PRIVATE_KEY=0x...

# 使用 API key 的專用端點
export ETHEREUM_PROVIDER_ETHEREUM=https://api.blockvectra.com/v1/eth_mainnet/${BLOCKVECTRA_API_KEY}
export ETHEREUM_PROVIDER_BASE=https://api.blockvectra.com/v1/base_mainnet/${BLOCKVECTRA_API_KEY}

# 免 key 的公開 RPC 端點
# export ETHEREUM_PROVIDER_ETHEREUM=https://api.blockvectra.com/v1/eth_mainnet/public
```

在 Agent 角色設定中包含 `@elizaos/plugin-evm`：

```json
{
  "name": "DeFiAgent",
  "plugins": ["@elizaos/plugin-evm"]
}
```

## viem

* 官方文件：[viem 文件](https://viem.sh/docs/clients/public.html)
* 傳輸參考：[viem HTTP Transport](https://viem.sh/docs/clients/transports/http.html) 與 [viem WebSocket Transport](https://viem.sh/docs/clients/transports/websocket.html)
* 官方儲存庫：[wevm/viem](https://github.com/wevm/viem)

在 viem 中，使用 `http()` 或 `webSocket()` 設定用戶端傳輸。

### 使用 API key 的 HTTP 傳輸

```typescript
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

export const client = createPublicClient({
  chain: mainnet,
  transport: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});
```

### 使用免 key 公開端點的 HTTP 傳輸

在允許的公開方法上進行無 key 的讀取請求：

```typescript
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

export const publicClient = createPublicClient({
  chain: mainnet,
  transport: http("https://api.blockvectra.com/v1/eth_mainnet/public"),
});
```

### WebSocket 傳輸

WebSocket 傳輸（`webSocket(...)`）支援在 `GET /v1/chains` 中具有 `ws: true` 的鏈，例如 Robinhood Chain（`robinhood_mainnet`）：

```typescript
import { createPublicClient, webSocket } from "viem";

export const wsClient = createPublicClient({
  transport: webSocket(`wss://api.blockvectra.com/v1/robinhood_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});
```

有關連線參數與訂閱類型，請參閱 [WebSocket 訂閱指南](https://docs.blockvectra.com/en/guides/websocket-subscriptions/)。

## wagmi

* 官方文件：[wagmi createConfig](https://wagmi.sh/core/api/createConfig) 與 [wagmi HTTP Transport](https://wagmi.sh/core/api/transports/http)
* 官方儲存庫：[wevm/wagmi](https://github.com/wevm/wagmi)

在 wagmi 中，將 BlockVectra RPC URL 傳入 `createConfig` 內的 `transports` 對應表。

### 使用 API key 的設定

```typescript
import { createConfig, http } from "wagmi";
import { mainnet } from "wagmi/chains";

export const config = createConfig({
  chains: [mainnet],
  transports: {
    [mainnet.id]: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
  },
});
```

### 使用免 key 公開端點的設定

```typescript
import { createConfig, http } from "wagmi";
import { mainnet } from "wagmi/chains";

export const config = createConfig({
  chains: [mainnet],
  transports: {
    [mainnet.id]: http("https://api.blockvectra.com/v1/eth_mainnet/public"),
  },
});
```

## Coinbase AgentKit

* 官方文件：[Coinbase AgentKit 文件](https://docs.cdp.coinbase.com/agentkit/docs/welcome)
* 官方儲存庫：[coinbase/agentkit](https://github.com/coinbase/agentkit)

Coinbase AgentKit 使用錢包供應商（wallet provider）執行鏈上動作。在 TypeScript 中，`@coinbase/agentkit` 的 `ViemWalletProvider` 會包裝標準 viem `WalletClient`，讓你能將交易執行與 RPC 查詢導向 BlockVectra 端點。

### 使用 ViemWalletProvider 設定

```typescript
import { AgentKit, ViemWalletProvider } from "@coinbase/agentkit";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { mainnet } from "viem/chains";

const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);

const client = createWalletClient({
  account,
  chain: mainnet,
  transport: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});

const walletProvider = new ViemWalletProvider(client);

export const agentKit = await AgentKit.from({
  walletProvider,
});
```

若要在允許的方法上進行讀取操作，請設定 `http("https://api.blockvectra.com/v1/eth_mainnet/public")`。

## 遠端 MCP

如果你的 Agent 透過 Model Context Protocol（Streamable HTTP MCP）連線，請連線至 BlockVectra MCP 伺服器端點：

`https://docs.blockvectra.com/mcp`

關於 Claude Code、Cursor、VS Code、Codex、Gemini CLI、OpenAI Responses API 與 Windsurf 的用戶端設定說明，請參閱 AI Agent 指南中的[從 MCP 用戶端連線](https://docs.blockvectra.com/zh-hant/guides/ai-agents/#connecting-from-mcp-clients)。

## 下一步

* [連線 AI Agent](https://docs.blockvectra.com/zh-hant/guides/ai-agents/)：使用 MCP、llms.txt 與 OpenAPI 探索端點。
* 依[程式化註冊指南](https://docs.blockvectra.com/en/guides/programmatic-signup/)以錢包簽名註冊並建立 API key，或[登入控制台](https://console.blockvectra.com/login/?next=%2Fkeys%2F)建立 key。
* [計費規則](https://docs.blockvectra.com/zh-hant/guides/billing-rules/)：檢閱計算單位（CU）計量、速率限制與不計費的錯誤。
