# Agent フレームワーク向けのブロックチェーン RPC とドキュメント MCP

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

以下のレシピを使用して、ElizaOS、viem、wagmi、Coinbase AgentKit でブロックチェーン RPC を設定します。開発者や AI エージェントは、まず [ドキュメント MCP](https://docs.blockvectra.com/en/guides/ai-agents/#connecting-from-mcp-clients) を使ってメソッドとドキュメントを検出し、その後に独立した [HTTP サインアップフロー](https://docs.blockvectra.com/en/guides/programmatic-signup/) に従って API key を作成できます。そのキーを RPC や Data API リクエスト、またはキーが必要なツール向けの MCP クライアントの `x-api-key` ヘッダーで使用します。キーなしの RPC アクセスは各チェーンの `public.methods` に制限されます。

## ElizaOS

* 公式ドキュメント：[elizaOS Documentation](https://elizaos.github.io/eliza/)
* 公式リポジトリ：[elizaos/eliza](https://github.com/elizaos/eliza)

elizaOS では、EVM とのやり取りは `@elizaos/plugin-evm` プラグインによって処理されます。このプラグインは、`ETHEREUM_PROVIDER_<NETWORK>` パターンで命名された環境変数、またはフォールバック変数 `EVM_PROVIDER_URL` から RPC プロバイダーのエンドポイントを読み取ります。

ウォレットの秘密鍵と RPC エンドポイントを `.env` ファイルに設定します：

```bash
# EVM wallet private key for signing transactions
export EVM_PRIVATE_KEY=0x...

# Dedicated endpoints with 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}

# Keyless public RPC endpoint
# export ETHEREUM_PROVIDER_ETHEREUM=https://api.blockvectra.com/v1/eth_mainnet/public
```

エージェントのキャラクター設定に `@elizaos/plugin-evm` を含めます：

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

## viem

* 公式ドキュメント：[viem Documentation](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}`),
});
```

### キー不要の公開エンドポイントによる HTTP トランスポート

API 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(...)`）は、Robinhood Chain（`robinhood_mainnet`）など、`GET /v1/chains` で `ws: true` となっているチェーンでサポートされています：

```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 では、`createConfig` 内の `transports` マップに BlockVectra の RPC URL を渡します。

### 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}`),
  },
});
```

### キー不要の公開エンドポイントによる設定

```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 Documentation](https://docs.cdp.coinbase.com/agentkit/docs/welcome)
* 公式リポジトリ：[coinbase/agentkit](https://github.com/coinbase/agentkit)

Coinbase AgentKit は、オンチェーンアクションを実行するためにウォレットプロバイダーを使用します。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

エージェントが 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 エージェントガイドの [MCP クライアントからの接続](https://docs.blockvectra.com/en/guides/ai-agents/#connecting-from-mcp-clients) を参照してください。

## 次のステップ

* [AI エージェントを接続する](https://docs.blockvectra.com/en/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)してキーを作成してください。
* [課金ルール](https://docs.blockvectra.com/en/guides/billing-rules/)：Compute Unit（CU）の計測、レート制限、課金対象外のエラーを確認します。
