Parallax Protocol について
Parallax Protocol は、Parallax のチェーン、エクスプローラー、マイニング、ネットワーク状態、ドキュメントを調べる読み取り専用 MCP サーバーです。ローカルの stdio とリモート HTTP に対応し、ノードへの要求を読み取り専用メソッドに制限します。
主な機能
- 01ブロック、取引、コントラクト情報の取得
- 02マイニング、供給量、報酬の統計
- 03エクスプローラーデータと時系列チャート
- 04ネットワーク状態、ノード、インシデント
- 05ドキュメントと PIP の検索
- 06読み取り専用 RPC 許可リストと購読
活用シーン
- 01ブロック、取引、残高の確認
- 02トークン承認と取り消し呼び出しの詳細確認
- 03マイニングと供給量指標の比較
- 04ネットワークアラートとブロック伝播の監視
MCP 対応
MCP クライアントに Parallax のチェーン・エクスプローラーデータ、マイニング指標、ネットワーク状態、ドキュメント、リソース、プロンプトを提供します。stdio または Streamable HTTP で動作し、取引のブロードキャストは明示的に有効化するまで無効です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.parallaxprotocol.org/mcpclaude mcp add --transport http parallaxprotocol-parallax https://mcp.parallaxprotocol.org/mcp{"mcpServers":{"parallaxprotocol-parallax":{"type":"http","url":"https://mcp.parallaxprotocol.org/mcp"}}}Cursor で開く{"servers":{"parallaxprotocol-parallax":{"type":"http","url":"https://mcp.parallaxprotocol.org/mcp"}}}VS Code で開く{"mcpServers":{"parallaxprotocol-parallax":{"type":"http","url":"https://mcp.parallaxprotocol.org/mcp"}}}{"mcpServers":{"parallaxprotocol-parallax":{"serverUrl":"https://mcp.parallaxprotocol.org/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ghcr.io/parallaxprotocol/parallax-mcp:0.2.4stdioツール
36| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| owner | string | はい | 承認を監査するアドレス |
| from_block | integer | いいえ | スキャン開始ブロック(既定値は 0、チェーン全体) |
| include_inactive | boolean | いいえ | 現在ゼロまたは取り消し済みの承認も一覧表示します |
詳細
parallax-mcp
AI アシスタントやエージェントが Parallax ネットワークに読み取り専用で構造化されたアクセスを行えるようにする Model Context Protocol サーバーです。ノードからのチェーンデータ、 エクスプローラーからのインデックス済みデータ、 ステータスページからのネットワークの健全性、Parallax のドキュメントや PIP を取得できます。
stdio(Claude Desktop、Claude Code)経由でローカル実行するか、リモート Streamable HTTP サービスとして実行できます。秘密鍵を保持したり受け取ったりすることはありません。
公開インスタンスは https://mcp.parallaxprotocol.org/mcp で稼働しており、サーバーは
MCP Registry に io.github.ParallaxProtocol/parallax-mcp として登録されています。
ツール
ツールはグループに分類されており、各グループを無効にできます。すべての結果はコンパクトな JSON 形式で、LAX の金額は {"wei": "...", "lax": "..."} として表されます。また、サードパーティが書き込める内容はすべて {"untrusted": "..."} でラップされます(セキュリティモデルを参照)。
chain:ノードの JSON-RPC から取得
| ツール | 返される内容 |
|---|---|
chain_info | チェーン ID の確認、クライアント、ヘッドとその経過時間、同期状態、ピア、ガス価格、ノードの RPC 名前空間 |
get_block | 番号、ハッシュ、または latest で指定したブロック。ブロック時刻、補助金、オプションでトランザクションの概要を含みます |
get_transaction | calldata をデコードしたトランザクション(エクスプローラーの検証済み ABI、または標準トークン ABI を使用) |
get_receipt | ステータス、使用ガス、手数料、デコード済みイベントログ |
get_balance | アーカイブノード上の任意のブロックにおける残高と nonce |
get_code, get_storage_at, get_proof | バイトコード、ストレージスロット、EIP-1186 プルーフ |
call_contract | 読み取り専用の eth_call。ABI、エクスプローラーの検証済み ABI、または balanceOf(address) returns (uint256) のようなシグネチャを使って引数をエンコードし、結果をデコードします |
estimate_gas | トランザクションに必要なガスと手数料 |
get_logs | ブロック範囲と件数を制限したイベントログ |
gas_price | eth_gasPrice と、1~144 ブロックを対象とする Parallax の Bitcoin Core 方式の手数料見積もり |
audit_token_approvals | アドレスが付与した ERC-20 のすべての allowance と NFT 承認のうち、現在も有効なものを現行のコントラクト状態と照合し、エクスポージャー、リスクフラグ、深刻度、正確な取り消し呼び出しとともに返します |
wait_for_new_block | 最大 10 分間、次のブロックを待ちます。リソースサブスクリプションに対応していないクライアント向けです |
trace_transaction, trace_call | 呼び出しツリー、実行前の状態、セレクター(debug 名前空間が必要です) |
mining:ブロックヘッダーと発行スケジュールから導出します。各導出方法はツールの説明に記載されています
| ツール | 返される内容 |
|---|---|
mining_stats | ブロック時間の統計、ハッシュレートの推定値、難易度とその推移、予想ブロック時間、マイナーのシェア、比較用のステータスページの数値 |
supply_info | 発行済み供給量(ノードとスケジュールを相互検証)、2100 万上限に対する割合、現在の報酬と時代、目標と観測ペースに基づく次の半減期 |
block_reward | ブロックの補助金と手数料、および成熟時期 |
explorer:Blockscout の REST API v2 から取得
explorer_address、explorer_token_balances、explorer_transactions、
explorer_token、explorer_token_holders、explorer_token_transfers、
explorer_contract(インターフェース、メタデータ、オプションでソース)、
explorer_internal_transactions、explorer_search、explorer_stats
(統計サービスのカウンターを含む)、および explorer_charts:Blockscout の統計サービスから取得する 21 種類の時系列データ(アカウント、トランザクション、手数料、ブロック、ガス、コントラクト)。日、週、月、年単位で取得できます。リストのページネーションには不透明な next_cursor を使用します。
network:ステータスページとノードから取得
| ツール | 返される内容 |
|---|---|
network_health | アラート、進行中のインシデント、マイニングの分散化状況と推奨される承認数、ノード、伝播、再編成、メンプール、ノード自身のヘッド、ピア、同期状態、および問題の一覧を含むレポート |
network_nodes | ステータスページに報告しているノード |
network_incidents | インシデント履歴と、検証済みノードの稼働時間 |
network_propagation | ブロックの伝播遅延、古いブロック、再編成 |
network_trends | 7日間のハッシュレート、難易度、ブロック時間、ハッシュプライス、セキュリティ予算、ノード、レイテンシ、稼働時間、メンプールを4時間ごとの区間で表示 |
node_peers | IP アドレスを伏せた、ノードのピアとアドレス帳(admin が必要) |
メンプール:mempool_status(ノードおよびネットワーク全体)と、
mempool_transactions(txpool が必要)。
ドキュメント:search_docs は質問に対して Parallax のドキュメントと PIP をランク付けし(BM25、タイトルと見出しでブースト)、リンク付きの抜粋を返します。read_doc はページまたは PIP 全体を返し、長いものは分割して返します。
これにより、アシスタントは Ethereum や Bitcoin の情報から推測するのではなく、自分で Parallax 固有の情報を調べられます。
トランザクション:デフォルトでは無効です
| ツール | 返される内容 |
|---|---|
build_unsigned_tx | 外部署名者向けに、nonce、ガス、ガス価格を設定した未署名の legacy または EIP-2930 トランザクションと、その署名ペイロードおよびハッシュ |
decode_tx | 任意の生トランザクションまたは署名ペイロードをデコードし、署名から送信者を復元 |
broadcast_signed_tx | 署名済みトランザクションを送信します。--allow-broadcast を指定した場合にのみ登録されます |
ノードがサポートするツール
パブリック RPC エンドポイントが提供するのは eth、net、web3 のみです。それ以上を必要とするツール(trace_* は debug、node_peers は admin、mempool_transactions は txpool が必要)は、ノードがその名前空間を提供していない場合は除外されます。対応状況は chain_info に表示されます。すべてのツールを利用するには、サーバーを独自のノードに接続してください。
parallaxd --http --http.addr 127.0.0.1 \
--http.api eth,net,web3,txpool,debug,admin,xhash --gcmode archive --txlookuplimit 0
これらの名前空間を parallax-mcp に公開しても安全です。parallax-mcp は読み取り専用メソッドの許可リストを通じて呼び出します(セキュリティモデルを参照)。
これらを他のものには公開しないでください。過去のブロックにおける履歴状態(残高、呼び出し、トレース)には --gcmode archive が必要です。
リソースとプロンプト
| リソース | 内容 |
|---|---|
parallax://chain/parameters | チェーン ID、ブロック時間、PoW と ASERT、報酬スケジュールと上限、coinbase の成熟期間、EVM レベル(Berlin)とトランザクションの種類、エンドポイント |
parallax://glossary | ツールで使用される Parallax およびプルーフ・オブ・ワーク関連の用語 |
parallax://docs、parallax://docs/{path} | docs.parallaxprotocol.org のドキュメント |
parallax://pips、parallax://pips/pip-000N | PIP-0002 から PIP-0006 |
parallax://chain/head | 最新ブロック。購読可能:新しいブロック(および再編成)が発生するたびに resources/updated 通知を送信 |
parallax://network/alerts | ステータスページのアクティブなアラート。購読可能:アラートの発生、解消、またはレベル変更時に通知を送信 |
購読は stdio と HTTP トランスポートのセッションで機能します(--http-stateless では機能しません)。サーバーは購読者または待機中のクライアントがいる間だけ --head-poll-interval(15 s)ごとにノードをポーリングし、最後の関心がなくなってから10分後に停止します。購読に対応していないクライアントは、代わりに wait_for_new_block を呼び出せます。
ドキュメントはバイナリに埋め込まれたスナップショットで、ドキュメントツールから検索できます。CI はイメージをビルドするたびに parallax-docs リポジトリの main ブランチと PIP のディスカッションから更新するため、公開イメージには最新のドキュメントが含まれます。ローカルでは make sync-content を実行すると ../parallax-docs から同様に更新できます(gh CLI が必要です)。
プロンプト:explain_transaction(ハッシュ)、audit_address(アドレス)、
network_health_report。
使用方法
Claude Code
ローカルで stdio を使用する場合:
claude mcp add parallax -- /path/to/parallax-mcp
# with the transaction tools, against your own node:
claude mcp add parallax -- /path/to/parallax-mcp --groups chain,mining,explorer,network,mempool,docs,tx --rpc-url http://127.0.0.1:8545
パブリックインスタンスを使用して、HTTP 経由でリモート接続する場合:
claude mcp add --transport http parallax https://mcp.parallaxprotocol.org/mcp
Claude Desktop
claude_desktop_config.json に追加します(Settings → Developer → Edit Config):
{
"mcpServers": {
"parallax": {
"command": "/path/to/parallax-mcp",
"args": ["--log-level", "warn"]
}
}
}
または Docker を使用します:
{
"mcpServers": {
"parallax": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/parallaxprotocol/parallax-mcp", "--transport", "stdio"]
}
}
}
リモート HTTP デプロイメントは、URL(例:https://mcp.example.org/mcp)を指定して、Claude Desktop にカスタムコネクターとして追加します
(Settings → Connectors → Add custom connector)。
シェルから
bin/mcpcall(make tools)は、ツールを試すための小さな MCP クライアントです:
bin/mcpcall tools
bin/mcpcall call get_block '{"block":"latest"}'
bin/mcpcall call call_contract '{"to":"0xd1060183552A88455f037a58B2aC639C7966a214","function":"symbol() returns (string)"}'
bin/mcpcall read parallax://glossary
bin/mcpcall -http http://127.0.0.1:8080/mcp call network_health
bin/mcpcall call trace_transaction '{"hash":"0x…"}' -- --rpc-url http://127.0.0.1:8545
設定
設定値は、フラグ、PARALLAX_MCP_* 環境変数、任意の YAML ファイル(--config。詳しくはconfig.example.yamlを参照してください)から取得され、この順に優先されます。parallax-mcp -help ですべての設定項目を確認できます。
| フラグ | デフォルト | |
|---|---|---|
--transport | stdio | stdio または http |
--rpc-url | https://rpc.parallaxprotocol.org | ノードの JSON-RPC(http/https) |
--explorer-url | https://explorer.parallaxprotocol.org | Blockscout |
--status-url | https://status.parallaxprotocol.org | ステータスページ |
--chain-id | 2110 | サーバーは、別のチェーンに対して起動しません |
--groups | chain,mining,explorer,network,mempool,docs | トランザクションツールには tx を追加します |
--allow-broadcast | オフ | broadcast_signed_tx を登録します(tx が必要です) |
--http-addr, --http-path | 127.0.0.1:8080, /mcp | HTTP トランスポート |
--http-stateless | オフ | セッションを使用しません。レプリカでスティッキー負荷分散は不要ですが、リソースのサブスクリプションは利用できません |
--head-poll-interval | 15s | クライアントがサブスクライブ中または待機中に、head をポーリングする頻度です |
--explorer-stats-url | <explorer-url>/stats-service | グラフとカウンター用の Blockscout 統計サービス |
--rate-limit, --rate-burst | 2/s, 20 | HTTP トランスポートにおけるクライアントアドレスごとの制限です |
--max-concurrent | 64 | HTTP トランスポートで同時に処理できるリクエスト数です |
--trusted-proxies | なし | X-Forwarded-For の設定を許可するプロキシです |
--behind-cloudflare | オフ | Cloudflare のエッジ範囲からのリクエストでは、CF-Connecting-IP からクライアントアドレスを取得します |
--metrics-addr | オフ | 別のリスナーで Prometheus の /metrics を提供します |
--max-response-bytes | 262144 | これを超える結果は、クエリを絞り込むよう案内して失敗します |
--max-log-range, --max-logs | 10000, 500 | get_logs の上限です |
--status-cache-ttl | 15s | ステータスページでは、アドレスごとに毎分 60 件のリクエストが許可されます |
--expose-peer-addresses | オフ | node_peers にピアの IP アドレスを表示します。stdio のみ |
セキュリティモデル
信頼できないデータ。 トークン名やシンボル、コントラクトのソース、イベントやリバートの文字列、デコードされた文字列引数、エクスプローラーのタグやノード名は誰でも指定でき、モデルが読み取る際に操作する目的で書かれている可能性があります。こうしたテキストから制御文字、双方向制御文字、ゼロ幅文字を取り除き、長さに上限を設けたうえで {"untrusted": "..."} としてラップします。また、サーバーの指示により、モデルはこれをデータとしてのみ扱います。
設計上、読み取り専用です。 ノードへのすべてのリクエストは、プロセスの外に送信される前に、読み取り専用の JSON-RPC メソッドの許可リストを通過します。そのため、personal、admin、miner、debug がすべて公開されているノードであっても、アカウントのロック解除、署名、ピアの変更、マイニング、チェーンの巻き戻し、データベースの読み取りは実行できません。トレース呼び出しでは、組み込みトレーサーを指定する必要があります。JavaScript トレーサーは拒否されます。eth_sendRawTransaction は、どちらのトランスポートでも --allow-broadcast が指定された場合に限り許可されます。また、HTTP トランスポートは、このフラグが指定されない限り読み取り専用です。
キーは扱いません。 サーバーは未署名のトランザクションを構築し、署名済みトランザクションをデコードします。署名は別の場所で行います。秘密鍵に見える 32 バイトの入力は、値をそのまま返すことなく拒否します。broadcast_signed_tx は、未署名、保護されていない(EIP-155 以前の)トランザクション、およびチェーンが一致しないトランザクションを拒否します。
クエリに上限を設定します。 ブロック範囲、ページサイズ、リストの長さ、レスポンスのサイズ、バックエンドのレスポンスサイズ、各呼び出しの所要時間にはすべて上限があります。各 HTTP クライアントアドレスにはトークンバケット方式のレート制限を設け、同時に処理するリクエスト数にも上限を設けています。
プライバシー。 admin_peers から取得したピアの IP アドレスとノード ID は、HTTP 経由では決して表示されません。stdio では --expose-peer-addresses が指定された場合に限り表示されます。
耐障害性。 バックエンドへのリクエストにはタイムアウトとバックオフ付きの再試行を設定しています(ブロードキャストは対象外です)。いずれかのソースでエラーが発生した場合、ツールは他のソースから得られた結果を返し、エラーの詳細を "errors" に含めます。ステータスページのレスポンスはキャッシュされ、同時に呼び出されたクライアント間で共有されます。ページに到達できない場合は、最長 10 分前のコピーを古いデータとしてマークして返します。
デプロイ
イメージは amd64 と arm64 向けに ghcr.io/parallaxprotocol/parallax-mcp で公開されています。distroless 上で非 root ユーザーとして実行される静的バイナリで、HTTP トランスポートを使ってポート 8080 で待ち受けます。
docker run -d -p 8080:8080 \
-e PARALLAX_MCP_RPC_URL=http://your-node:8545 \
-e PARALLAX_MCP_TRUSTED_PROXIES=10.0.0.0/8 \
ghcr.io/parallaxprotocol/parallax-mcp
TLS を終端するリバースプロキシの背後に配置し、レート制限が実際のクライアントごとに適用されるよう、プロキシのアドレスを --trusted-proxies に設定してください。
Cloudflare の背後で運用する場合は、--behind-cloudflare(PARALLAX_MCP_BEHIND_CLOUDFLARE=true)も設定してください。この場合、クライアントアドレスは CF-Connecting-IP から読み取られます。ただし、プロキシへの接続元が Cloudflare の公開するエッジ範囲に含まれるリクエストに限られるため、オリジンに直接到達した第三者がアドレスを偽装することはできません。Cloudflare は 100 秒間応答がないと接続を閉じます。サーバーは実行中のツール呼び出しのストリームで 25 秒ごとにクライアントへ ping を送信して接続を維持します(これによりレスポンスヘッダーも早期に送信されます)。また、通知ストリームがアイドル状態のときはコメント行を書き込みます。ブラウザーのチャレンジを解決できない MCP クライアントが使えるよう、MCP ホスト名を Bot Fight Mode やその他のチャレンジ機能の対象外にしてください(Security → WAF → カスタムルール:ホスト名が MCP ホストと等しい場合、アクションを Skip に設定)。
Coolify
ghcr.io/parallaxprotocol/parallax-mcp:<version> を使用して Docker Image リソースを作成し、ドメインと Ports Exposes に 8080 を設定して、次を追加します。
PARALLAX_MCP_TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12
PARALLAX_MCP_BEHIND_CLOUDFLARE=true # when the domain is proxied by Cloudflare
PARALLAX_MCP_RPC_URL=http://your-node:8545 # optional: a node with more namespaces
リリースごとに自動更新するには、latest タグを追跡し、Coolify サーバーの deploy/ にポーラーをインストールします。systemd タイマーが 5 分ごとに coolify-autodeploy.sh を実行し、GHCR 上のイメージのダイジェストと最後にデプロイしたものを比較して、変更があれば 127.0.0.1 の Coolify API を呼び出して再デプロイします。外部からの呼び出しはないため、Coolify の API はサーバー自身からのアクセスに制限できます。その後、CI はパブリックサーバーが新しいバージョンを報告するまで待機します。
Coolify 独自のヘルスチェックは無効にしてください(コンテナ内で curl を実行しますが、distroless イメージには含まれていません)。代わりに、イメージの Docker HEALTHCHECK が parallax-mcp healthcheck を実行します。HTTP セッションはメモリ上に保存されるため、複数のレプリカを使用する場合は、Mcp-Session-Id ヘッダーによるスティッキーロードバランシングが必要です。または、リソースのサブスクリプションを利用できなくなる --http-stateless を使用します。プロキシでは、長時間継続するレスポンス(server-sent events と wait_for_new_block)を許可する必要があります。前述の keep-alive によって接続が維持されます。/healthz は ok を返します。--metrics-addr を指定すると、Prometheus メトリクスで、ツール別および結果別(ok、error、partial)のツール呼び出し数、ツールとバックエンドのレイテンシ、バックエンドの再試行とエラー、レート制限されたリクエスト数を計測できます。ログは stderr に構造化 JSON 形式で出力されます。
開発
make # lint, unit tests, build
make race # unit tests with the race detector
make live # integration tests against the real endpoints
make live-full RPC=http://127.0.0.1:8545 # also the debug, admin and txpool tools
make docker
単体テストは、メモリ内 MCP クライアントを介して、偽のバックエンド(JSON-RPC ノード、エクスプローラー、httptest サーバーとして動作するステータスページを提供する internal/testutil)に対して実行されます。test/integration の統合テストスイートは PARALLAX_MCP_LIVE=1 が設定されている場合にのみ実行され、ブロックごとに変化する値ではなく、ノードの供給量が排出スケジュールと一致することや、ノードのハッシュレート推定値がステータスページと一致することなどの不変条件を検証します。
構成:
cmd/parallax-mcp the server
cmd/mcpcall a command-line MCP client
pkg/server tool registration: timeouts, logging, metrics, size limits
pkg/backend node (RPC allowlist), blockscout, status (cache)
pkg/tools/* the tool groups (live: head and alert subscriptions, wait_for_new_block)
pkg/watch the head and alert poller behind subscriptions
pkg/resources resources and the embedded docs and PIPs
pkg/prompts prompts
pkg/evm ABI encoding and decoding, RPC types
pkg/lax units and the emission schedule
pkg/untrusted sanitizing and wrapping third-party text
pkg/config settings from flags, the environment and YAML
pkg/metrics, pkg/httpx Prometheus metrics and the backends' HTTP client
internal/transport stdio and Streamable HTTP (rate limits, health check)
internal/testutil fake node, explorer and status page for tests
pkg/ 以下のパッケージは、Parallax Wallet などの他の Go プログラムからインポートできます。たとえば、Parallax Wallet は server.New を使って自身のノードからこれらのツールを提供し、独自のツールグループも併せて提供します。
ノードのバックエンドでは、go-ethereum のものではなく、Parallax 独自の rpc パッケージと型を使用します。Parallax のヘッダーには epochStartTime フィールドがあり、go-ethereum の型ではこのフィールドが失われてブロックハッシュが変わってしまうためです。
ライセンス
GNU General Public License v3.0。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。