# BlockVectra MCP サーバー：AI エージェント向けのブロックチェーン RPC とドキュメントツール

> Source: https://docs.blockvectra.com/ja/guides/mcp-server/

`https://docs.blockvectra.com/mcp` にある BlockVectra MCP サーバーは、開発者と AI エージェントに、ブロックチェーン RPC コール、チェーンの稼働状況、料金、ドキュメント向けのツールを 15 個提供します。接続に API key は不要です：10 個のツールはキーが一切不要で、残りのツールはクライアントのヘッダーにある `x-api-key` を使用します。1 行でインストールできます：`claude mcp add --transport http blockvectra-docs https://docs.blockvectra.com/mcp`

エンドポイントは [MCP エンドポイント](https://docs.blockvectra.com/mcp)（JSON-RPC 2.0 を受け取る HTTP POST。GET は 405 を返します）で、MCP Streamable HTTP で提供されるステートレスなサーバーです。HTTP ファイル、公開 JSON、および関連する登録フローについては、[AI エージェントを接続する](https://docs.blockvectra.com/ja/guides/ai-agents/)を参照してください。

## ツール

| ツール | 機能 | API key | アクセス種別 |
| --- | --- | --- | --- |
| `read_doc` | ドキュメントページを Markdown として読み取ります。 | 不要 | 読み取り専用 |
| `search_docs` | ドキュメントのタイトル、パス、概要を検索します。 | 不要 | 読み取り専用 |
| `list_chains` | 対応チェーン、パラメーター、メソッドポリシーを一覧表示します（GET /v1/chains）。 | 不要 | 読み取り専用 |
| `get_status` | サービスとチェーンのリアルタイムの稼働状況を読み取ります（GET /v1/status）。 | 不要 | 読み取り専用 |
| `get_pricing` | Compute Unit のウェイト、無料プランのパラメーター、キーの既定値を読み取ります（GET /v1/plans）。 | 不要 | 読み取り専用 |
| `estimate_usage` | 1 つ以上のメソッドの Compute Unit と料金を見積もります。 | 不要 | 読み取り専用 |
| `how_to_get_api_key` | API key の取得手順とリクエスト認証の書き方を返します。 | 不要 | 読み取り専用 |
| `get_method_info` | メソッドのチェーン別の対応状況、CU ウェイト、料金を表示します。 | 不要 | 読み取り専用 |
| `explain_error` | エラーの意味、課金の有無、再試行の可否、復旧方法を調べます。 | 不要 | 読み取り専用 |
| `list_docs` | すべてのドキュメントページをパスとタイトル付きで一覧表示します。 | 不要 | 読み取り専用 |
| `rpc_call` | 対応チェーンで読み取り専用の JSON-RPC メソッドを実行します。 | 任意：キーなしで使えるのは、チェーンの public.methods に含まれるメソッドのみ | 読み取り専用 |
| `data_api_get` | 対応チェーンの Data API に GET リクエストを送信します。 | 必須（x-api-key ヘッダー） | 読み取り専用 |
| `get_account` | アカウント残高、CU、レート制限を読み取ります（GET /v1/account）。 | 必須（x-api-key ヘッダー） | 読み取り専用 |
| `get_deposit_address` | アカウントの入金アドレス、利用可能なネットワークとトークンを読み取ります。 | 必須（x-api-key ヘッダー） | 読み取り専用 |
| `send_raw_transaction` | 署名済みの raw トランザクションをブロードキャストします（eth_sendRawTransaction）。 | 任意：キーなしで使えるのは、チェーンの public.methods に含まれるメソッドのみ | 署名済みトランザクションをブロードキャスト |

この表はサーバーのツールレジストリから生成されており、`tools/list` が返すすべてのツールを一覧にしています。各ツールが受け取る引数と返すフィールドは、そのツール自身の `tools/list` スキーマに記載されています。

### API key の安全な管理

キーが必要なツールでは、Data API リクエスト、アカウント操作、またはチェーンの公開メソッド以外の RPC メソッドを実行するために API key が必要です。

* **ヘッダーからのみ読み取る**：API key は MCP クライアントの HTTP リクエストヘッダー（`x-api-key: rgw_...` または `Authorization: Bearer rgw_...`）からのみ読み取ります。
* **チャットにキーを記載しない**：API key や秘密鍵をツールの引数で渡したり、チャットに貼り付けたりしないでください。ツールの引数とチャット履歴は会話ログやコンテキストに含まれます。引数でキーを渡すと拒否されます。

API key のヘッダーなしで呼び出すと、キーが必要なツールは `isError: true` を返し、エージェントを `how_to_get_api_key` と[プログラムによる登録ガイド](https://docs.blockvectra.com/ja/guides/programmatic-signup/?ref=docs-mcp-server)に案内します。

## クライアントにインストールする

一般的な開発環境やフレームワークから、`https://docs.blockvectra.com/mcp` にある BlockVectra のドキュメント MCP サーバーに接続できます。

まず API key なしで始めてください。MCP エンドポイントに接続し、list\_chains を呼び出してから、read\_doc で quickstart を読みます。Data API やアカウント用のツールが必要になったら、クライアントの HTTP ヘッダーに API key を追加してください。キーなしの RPC アクセスは、各チェーンの公開メソッドポリシーに従います。

`x-api-key` ヘッダーは任意です。API key がなくても、クライアントは読み取り専用のすべてのドキュメントツール（`read_doc`、`search_docs`、`list_docs`）、チェーンの探索（`list_chains`）、リアルタイムの稼働状況（`get_status`）、料金の見積もり（`get_pricing`、`estimate_usage`）、エラーの説明（`explain_error`）、公開エンドポイントで許可されているメソッドを使用できます。キーが必要なツール（制限付きメソッドでの `rpc_call`、`send_raw_transaction`、`data_api_get`、`get_account`、`get_deposit_address`）を使用する場合は、API key を `x-api-key` ヘッダーに設定してください。

### Claude Code

CLI を使用して MCP サーバーに接続します：

```bash
claude mcp add --transport http blockvectra-docs https://docs.blockvectra.com/mcp
```

認証付きツール用に任意の API key を含めるには、`--header`（または `-H`）オプションを指定し、キーを直接貼り付ける代わりに環境変数を参照します。シェルに展開されないよう、シングルクォートを使用してください。Claude Code はセッションの開始時に `${BLOCKVECTRA_API_KEY}` を展開します：

```bash
claude mcp add --transport http blockvectra-docs https://docs.blockvectra.com/mcp \
  --header 'x-api-key: ${BLOCKVECTRA_API_KEY}'
```

同じ設定をプロジェクトレベルの `.mcp.json` として記述した例です（`claude mcp add --scope project` が書き込む内容でもあります）：

```json
{
  "mcpServers": {
    "blockvectra-docs": {
      "type": "http",
      "url": "https://docs.blockvectra.com/mcp",
      "headers": { "x-api-key": "${BLOCKVECTRA_API_KEY}" }
    }
  }
}
```

`claude` を起動する環境で `BLOCKVECTRA_API_KEY` をエクスポートしてください。Claude Code は、そのディレクトリで初めて `claude` を実行したときに、プロジェクトレベルの `.mcp.json` のサーバーを承認するよう求めます。承認するまで、`claude mcp list` では `Pending approval` と表示されます。

スクリプトや CI では、`--mcp-config` でファイルを渡し、サーバーのツールを許可します。キーは環境変数に置いたままにして、MCP クライアントが自らヘッダーを追加するため、エージェントが `$BLOCKVECTRA_API_KEY` を展開するシェルコマンドを実行する必要はありません（Claude Code の権限チェックは、非対話モードでそのようなコマンドを `Contains simple_expansion` として拒否しました）：

```bash
claude -p "Use rpc_call to run eth_blockNumber on base_mainnet" \
  --mcp-config ./mcp.json --allowedTools "mcp__blockvectra-docs__*"
```

キーを設定した場合、`rpc_call` の結果には `cu_charged` と `balance_units` も含まれます。キーなしのコールでは JSON-RPC レスポンスのみが返されます。変数が設定されていない場合、クライアントはヘッダーのリテラル文字列をそのまま送信し、サーバーはキーなしのエンドポイントにフォールバックせず `invalid_api_key`（エラーコード `-32024`）を返します。

公式ドキュメント：[Claude Code MCP ドキュメント](https://code.claude.com/docs/en/mcp)。

### Cursor

Cursor の MCP 設定にサーバーを追加します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "url": "https://docs.blockvectra.com/mcp"
    }
  }
}
```

Cursor は、base64 エンコードされた設定 `eyJ1cmwiOiJodHRwczovL2RvY3MuYmxvY2t2ZWN0cmEuY29tL21jcCJ9`（`{"url":"https://docs.blockvectra.com/mcp"}` を表します）を使ったディープリンクによるワンクリックインストールにも対応しています：

```text
cursor://anysphere.cursor-deeplink/mcp/install?name=blockvectra&config=eyJ1cmwiOiJodHRwczovL2RvY3MuYmxvY2t2ZWN0cmEuY29tL21jcCJ9
```

認証付きツール（Data API やアカウント管理）が必要な場合は、API key を含む `headers` オブジェクトを追加します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "url": "https://docs.blockvectra.com/mcp",
      "headers": {
        "x-api-key": "${env:BLOCKVECTRA_API_KEY}"
      }
    }
  }
}
```

`${env:NAME}` 形式は、`url` と `headers` の変数を解決すると記載されている Cursor のドキュメントに従ったものです。この形式は、ここでは Cursor で実行して確認していません。このファイルは `.cursor/mcp.json`（プロジェクト）または `~/.cursor/mcp.json`（グローバル）に配置してください。

公式ドキュメント：[Cursor MCP ドキュメント](https://cursor.com/docs/context/mcp)と [Cursor インストールリンク](https://cursor.com/docs/context/mcp/install-links)。

### VS Code

VS Code では、`.vscode/mcp.json` のトップレベルの `servers` キーの下に、`type: "http"` を指定してサーバーを設定します：

```json
{
  "servers": {
    "blockvectra": {
      "type": "http",
      "url": "https://docs.blockvectra.com/mcp"
    }
  }
}
```

認証付きツールが必要な場合は、`headers` オブジェクトを追加します：

```json
{
  "servers": {
    "blockvectra": {
      "type": "http",
      "url": "https://docs.blockvectra.com/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}
```

機密性の高い認証情報を保存する際、VS Code ではキーを直接記述する代わりに、入力変数や環境ファイルを参照できます。コマンドパレットの `MCP: Add Server` アクションでサーバーを追加することもできます。

公式ドキュメント：[VS Code MCP サーバーのドキュメント](https://code.visualstudio.com/docs/copilot/customization/mcp-servers)と [VS Code MCP 設定リファレンス](https://code.visualstudio.com/docs/agents/reference/mcp-configuration)。

### Codex

OpenAI Codex CLI を使ってサーバーを追加します：

```bash
codex mcp add blockvectra --url https://docs.blockvectra.com/mcp
```

`config.toml` にサーバー URL を設定します：

```toml
[mcp_servers.blockvectra]
url = "https://docs.blockvectra.com/mcp"
```

認証付きツールが必要な場合は、`config.toml` にリクエストヘッダーを設定します：

```toml
[mcp_servers.blockvectra]
url = "https://docs.blockvectra.com/mcp"
http_headers = { "x-api-key" = "YOUR_API_KEY" }
```

または、環境変数からヘッダーを設定します：

```toml
[mcp_servers.blockvectra]
url = "https://docs.blockvectra.com/mcp"
env_http_headers = { "x-api-key" = "BLOCKVECTRA_API_KEY" }
```

公式ドキュメント：[OpenAI Codex CLI MCP ドキュメント](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)。

### Gemini CLI

Gemini CLI の設定では、Streamable HTTP 用の `httpUrl` を使い、`mcpServers` の下にサーバーを追加します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "httpUrl": "https://docs.blockvectra.com/mcp"
    }
  }
}
```

認証付きツールが必要な場合は、API key を含む `headers` オブジェクトを追加します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "httpUrl": "https://docs.blockvectra.com/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}
```

公式ドキュメント：[Gemini CLI MCP サーバーのドキュメント](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md)。

### OpenAI Responses API

OpenAI Responses API を呼び出す際は、`tools` 配列に `type: "mcp"` を指定して MCP サーバーを渡します：

```bash
OPENAI_API_BASE="https://api.openai.com/v1"
curl "$OPENAI_API_BASE/responses" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model>",
    "tools": [{
      "type": "mcp",
      "server_label": "blockvectra",
      "server_url": "https://docs.blockvectra.com/mcp",
      "require_approval": "never"
    }],
    "input": "..."
  }'
```

認証付きツールが必要な場合は、ツール定義に `headers` フィールドを含めます：

```json
{
  "type": "mcp",
  "server_label": "blockvectra",
  "server_url": "https://docs.blockvectra.com/mcp",
  "headers": { "x-api-key": "YOUR_API_KEY" },
  "require_approval": "never"
}
```

公式ドキュメント：[OpenAI MCP ツールガイド](https://developers.openai.com/api/docs/guides/tools-connectors-mcp)と [OpenAI Responses API リファレンス](https://developers.openai.com/api/reference/resources/responses/methods/create)。

### Windsurf

Windsurf では、`serverUrl` フィールドを使い、`mcpServers` の下にサーバーを設定します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "serverUrl": "https://docs.blockvectra.com/mcp"
    }
  }
}
```

認証付きツールが必要な場合は、API key を含む `headers` オブジェクトを追加します：

```json
{
  "mcpServers": {
    "blockvectra": {
      "serverUrl": "https://docs.blockvectra.com/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}
```

Windsurf は、`"x-api-key": "${env:BLOCKVECTRA_API_KEY}"` などの環境変数の参照にも対応しています。

公式ドキュメント：[Windsurf MCP ドキュメント](https://docs.devin.ai/desktop/cascade/mcp)。

### Claude Desktop と claude.ai

カスタムコネクターはユーザーインターフェースから設定します：

* **claude.ai**：**Customize** > **Connectors** を開き、**+ Add** をクリックして **Add custom connector** を選択し、URL を入力します：
  ```text
  https://docs.blockvectra.com/mcp
  ```
* **Claude Desktop**：アカウント設定メニューを開き、コネクターの画面からカスタムコネクターを設定します。

この URL に接続すると、Claude は認証情報なしでガイドを検索し、Markdown ドキュメントを読み、対応チェーンを調べ、ネットワークの稼働状況を確認し、料金を見積もれます。

公式ドキュメント：[Claude カスタムコネクターガイド](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)。

### 接続を確認してトラブルシューティングする

Claude Code では、`claude mcp list` で各サーバーの状態を確認できます。実際に登録されたツールの数を知るには、ストリーム出力を指定して 1 回実行し、`init` イベントを読み取るか、デバッグログを確認します：

```bash
claude -p "say ok" --mcp-config ./mcp.json --output-format stream-json --verbose
claude -p "say ok" --mcp-config ./mcp.json --debug mcp --debug-file mcp-debug.log
```

接続が正常な場合、`init` イベントに `"status": "connected"` と `mcp__blockvectra-docs__*` ツール（`list_chains` や `rpc_call` など）が表示されます。デバッグログでは、`Successfully connected` や `Failed to fetch tools` など、`blockvectra-docs` に関する行を探してください。サーバーが `connected` なのにツールが表示されない場合は、`Failed to fetch tools` の後にデバッグログ（`--debug mcp`）が報告する理由を確認してください。サーバー自体が正常かどうかを確認するには、以下の curl コールを使用します。

### クライアントなしで MCP エンドポイントを呼び出す

エンドポイントは HTTP POST 上の JSON-RPC 2.0 なので、どの HTTP クライアントからでも呼び出せます：

```bash
curl -s https://docs.blockvectra.com/mcp -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

curl -s https://docs.blockvectra.com/mcp -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"rpc_call","arguments":{"chain":"base_mainnet","method":"eth_blockNumber","params":[]}}}'
```

1 つ目のコールはツールの一覧を返し、2 つ目は JSON-RPC レスポンスを `result.structuredContent` に返します。チェーンの識別子は `base_mainnet` のような slug で、`list_chains` で取得できます。キーが必要なツールには `x-api-key` ヘッダーが必要です。次のコールは、環境変数のキーを使ってアカウントを読み取ります：

```bash
curl -s https://docs.blockvectra.com/mcp -H 'content-type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_account","arguments":{}}}'
```

`result.structuredContent` に、`key_id`、`plan`、`balance_units`、`balance_cu`、およびキーのレート制限が返されます。エージェントが権限制御付きのシェルでコマンドを実行する場合、この変数展開がブロックされることがあります。その場合は、MCP クライアントでヘッダーを設定してください。

## FAQ

### BlockVectra MCP サーバーには API key が必要ですか？

いいえ。接続にキーは不要で、15 個のツールのうち 10 個はキーが一切不要です。`rpc_call` と `send_raw_transaction` は、チェーンの `public.methods` に含まれるメソッドに限り、キーなしで実行できます（`list_chains` で確認できます）。`data_api_get`、`get_account`、`get_deposit_address` には `x-api-key` ヘッダーが必要です。

### MCP サーバーで API key を作成または失効できますか？

いいえ。API key を作成、一覧表示、失効させるツールはありません。`how_to_get_api_key` は手順を返すだけです。エージェントは[プログラムによる登録](https://docs.blockvectra.com/ja/guides/programmatic-signup/?ref=docs-mcp-server)に従って HTTP でキーを作成し、人間はコンソールで作成します。キーがツールの引数を通ることはありません。

### エージェントは MCP サーバー経由でトランザクションを送信できますか？

ブロードキャストはできますが、署名はできません。`rpc_call` は、`eth_sendRawTransaction`、`eth_sendTransaction`、`eth_sign`、`personal_*` などの書き込みメソッドを拒否します。`send_raw_transaction` は、ローカルで署名済みのトランザクションを `eth_sendRawTransaction` でブロードキャストします。サーバーが秘密鍵を保持することも、目にすることもありません。

### コールが失敗した場合はどうなりますか？

ツールのエラーは、構造化された理由とともに `isError: true` で返されます。失敗が課金されるかどうか、再試行すべきかどうかは、`explain_error` または[エラーコードのリファレンス](https://docs.blockvectra.com/ja/errors/)で確認してください。

## 関連リソース

* [AI エージェントを接続する](https://docs.blockvectra.com/ja/guides/ai-agents/)：機械可読ファイル、公開 JSON エンドポイント、チェーン選択のワークフロー。
* [プログラムによる登録](https://docs.blockvectra.com/ja/guides/programmatic-signup/?ref=docs-mcp-server)：ブラウザーを使わず、ウォレット署名で API key を作成します。
* [エージェントフレームワークのレシピ](https://docs.blockvectra.com/ja/guides/agent-frameworks/)：ElizaOS、viem、wagmi、Coinbase AgentKit。
* [エラーコード](https://docs.blockvectra.com/ja/errors/)：課金と再試行のルールを含むすべてのエラー。
