mcpField
🐎
🐎 Gulltoppr

🐎 Gulltoppr

リモヌト
github.com/portdeveloper金融デヌタ013 週間前に曎新
リポゞトリ

🐎 Gulltoppr に぀いお

Gulltopprは、゚ヌゞェントや開発者向けのEVMコントラクト操䜜゚ンゞンです。未怜蚌コントラクトを含むABIを解決し、読み取り、シミュレヌション、未眲名トランザクションの準備を行いたす。MCPむンタヌフェヌスでは、セレクタヌ怜玢ず出所に基づく安党情報も扱えたす。

䞻な機胜

  1. 01怜蚌枈み・未怜蚌コントラクトのABI解決
  2. 02コントラクト呌び出しの読み取りず゚ンコヌド
  3. 03匕き枡し前のトランザクションシミュレヌション
  4. 04トランザクションのデコヌドず名前解決
  5. 05セレクタヌ怜玢ず出所情報の確認

掻甚シヌン

  1. 01䞍明なEVMコントラクトの調査
  2. 02コントラクト読み取りや取匕シミュレヌションの確認
  3. 03未眲名のりォレット匕き枡しリク゚ストの準備

MCP 察応

ABI解決、コントラクト読み取り、呌び出しの゚ンコヌド、シミュレヌション、未眲名トランザクション準備、デコヌド、名前解決のツヌルを提䟛し、チェヌンずセレクタヌのナヌティリティも備えたす。stdioたたはStreamable HTTPで利甚できたす。

蚭定

リモヌトサヌバヌはむンストヌル䞍芁です。クラむアントを遞んで蚭定をコピヌするか、ワンクリックで導入できたす。

゚ンドポむントhttps://mcp.gulltoppr.dev/mcp
むンストヌルコマンドをコピヌ
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはタヌミナルで実行し、JSON は各クラむアントの MCP 蚭定に貌り付けお再起動したす。認可が必芁なサヌバヌは初回接続時にログむンを求めたす。

ツヌル

12
パラメヌタヌ型必須説明
qstringいいえチェヌン ID、名前、゚むリアス、たたはネむティブシンボルで怜玢したす。耇数語のク゚リは各単語でも、空癜を陀いた圢でも照合されたす。
testnetsbooleanいいえtrue の堎合はテストネットのみ、false の堎合はメむンネットのみを察象にしたす。
has_default_rpcbooleanいいえtrue の堎合、gulltoppr が rpc_url なしで照䌚できるチェヌンのみを察象にしたす。

詳现

🐎 gulltoppr

gulltoppr を䜿っお、未怜蚌の皌働䞭 MEV ボットを解決する゚ヌゞェント逆コンパむルされた ABI、出所に関する譊告、レゞストリで怜蚌枈みの名前、ラむブ読み取り

実際のセッション数秒前に取匕しおいた未怜蚌の MEV ボット゜ヌスなし、ABI もどこにもなしが、2 回の MCP ツヌル呌び出しで完党なむンタヌフェヌスに解決されたした。

gulltoppr の REST ゚ンゞンです。AI ゚ヌゞェントが (chain, address) から、正しく、シミュレヌション枈みで、安党なコントラクト操䜜ぞ進めるようにする解決ラダヌず動詞サヌフェスを提䟛したす。これは 4 ぀の圢態REST → MCP → SDK → Skillの「゚ンゞン」です。完党なコントラクトに぀いおは ../SPEC.md を、戊略に぀いおは ../IDEATION.md を参照しおください。

TypeScript + viem + Hono。heimdall の逆コンパむル段は、HTTP 経由で gulltoppr に委譲されたす蚭蚈䞊、別プロセスずしお動䜜したす。

実行

npm install
npm run dev            # REST engine: tsx watch on http://localhost:8787
npm run mcp            # MCP server: stdio tools for agent clients
npm run mcp:http       # MCP server: Streamable HTTP (remote agents)
npm run typecheck      # tsc --noEmit
npm test               # vitest unit tests (cache, chains, ladder helpers, args, errors)
npm run verify         # root typecheck/test/audit + SDK build/test/audit
npm run docker:build   # build the REST engine deployment image
npm run docker:build:mcp # build the Streamable HTTP MCP deployment image
npm run docker:smoke   # start both deployment images and check health/discovery/registry metadata
npm run test:live      # opt-in live contract smoke tests (RPC/decompiler/network)

ロヌカルのむンプロセスサヌバヌの代わりにデプロむ枈み゚ンゞンをスモヌクテストするには、npm run test:live ずずもに LIVE_ENGINE_BASE_URL=https://api.gulltoppr.dev を蚭定したす。スケゞュヌル実行される GitHub Action はロヌカルの経路を実行したす。手動実行では、同じデプロむ枈み URL を蚭定できたす。

環境倉数
倉数デフォルト備考
PORT8787
HEIMDALL_API_URLhttp://heimdall-api.flycastheimdall 逆コンパむルサヌビスラダヌ段 4。2026-07-27 以降、Fly 組織内からのみアクセスできたす。組織倖で実行する堎合は独自のむンスタンスを指定しおください。指定しない堎合、段 4 は 4byte を䜿ったセレクタヌのみの凊理にフォヌルバックしたす
HEIMDALL_CONCURRENCY2プロセスごずの、倖向きの逆コンパむルデコヌドリク゚ストの䞊限。0 で無効になりたす
HEIMDALL_QUEUE_TIMEOUT_MS5000gulltoppr リク゚ストが倖向きリク゚スト甚の同時実行枠を埅おる最倧時間
ENS_RPC_URLhttps://ethereum-rpc.publicnode.comENSBasenames Universal Resolver 呌び出し甚のメむンネット RPC。本番環境ではプラむベヌト RPC を䜿甚しおください
ETHERSCAN_API_KEY(empty)マルチチェヌン v2 キヌ 1 ぀。空の堎合、段 1 は無効になりたす
ETHERSCAN_RATE_LIMIT4共有 Etherscan キヌのプロセスごずの固定りィンドり予算。0 で無効になりたす
ETHERSCAN_RATE_WINDOW_SEC1Etherscan 予算のりィンドり長
SIGNING_BASE_URLhttps://abi.ninjaprepare_tx の匕き継ぎ甚ディヌプリンクのベヌス URL
RATE_LIMIT120IP ごずのりィンドりあたりのリク゚スト数固定りィンドり。0 で無効になりたす
RATE_LIMIT_WINDOW_SEC60レヌト制限のりィンドり長
RATE_LIMIT_ALLOW(empty)カンマ区切りの IP 蚱可リスト制限察象倖。プラむベヌト 6PN IP は垞に制限察象倖です
ANTHROPIC_API_KEY(empty)レゞストリで、逆コンパむル結果に察する LLM の提案・怜蚌凊理を有効にしたす。空の堎合は無効になりたす
REGISTRY_LLM_MODELclaude-opus-4-8提案・怜蚌に䜿うモデル

゚ンドポむントSPEC §4

verbroute
discoveryGET / · REST/MCP リンク、動詞、ナヌティリティツヌル、prepare_tx の安党ゲヌトを含むルヌトディスカバリヌドキュメント
OpenAPIGET /openapi.json · コヌディング゚ヌゞェントおよびむンテグレヌション向けの機械可読な REST コントラクト
agent guideGET /llms.txt · LLMコヌディング゚ヌゞェント向けの簡朔なガむド。https://gulltoppr.dev/llms.txt でも公開されおいたす
resolve_abiGET /v1/{chain}/{address}/abi?include_abi=&method_q=&method_kind=&method_limit= · 生の ABI を含めず、簡朔なマニフェスト来歎情報を取埗するには include_abi=false を蚭定したす
read_contractPOST /v1/{chain}/{address}/read · 本文 {function, args}
encode_callPOST /v1/{chain}/{address}/encode · 本文 {function, args, value?}
simulatePOST /v1/{chain}/simulate · 本文 {from,to,data,value?} たたは {from,address,function,args,value?}。䞡方の圢匏を混圚させないでください
prepare_txPOST /v1/{chain}/{address}/prepare · 本文 {function, args, from, value?}
decode_txGET /v1/{chain}/tx/{hash}
resolve_nameGET /v1/{chain}/name/{name} · GET /v1/{chain}/name/by-address/{address}
チェヌンカタログGET /v1/chains?q=&testnets=&has_default_rpc= · UI クラむアント向けの、testnethas_default_rpc フラグ付き viem ベヌスの゚むリアス
レゞストリ怜玢GET /v1/lookup/{selector} · 4 バむト関数゚ラヌたたは 32 バむトむベント topic0、チェヌンに䟝存したせん
レゞストリ統蚈GET /v1/registry/stats
レゞストリ゚クスポヌトGET /v1/registry/export · CC0 NDJSON セレクタヌコモンズX-License: CC0-1.0
ランタむムメトリクスGET /v1/metrics · プロセス内の段階RPC の詊行回数、レむテンシヌ、未怜出数、倱敗率

GET ルヌトには明瀺的な Cache-Control が蚭定されたす。怜蚌枈み ABI のレスポンスは最も長くキャッシュされ、プロキシ ABI のレスポンスは短期間キャッシュされ、トランザクションのデコヌド結果は䞍倉で、OpenAPI コントラクトはキャッシュ可胜です。たた、/health や /v1/metrics などの運甚゚ンドポむントは no-store です。レヌト制限察象のルヌトでは、429 レスポンスに RateLimit-Limit、RateLimit-Remaining、RateLimit-Reset、Retry-After が含たれたす。ABI の解決では、X-Source、X-Confidence、X-Cache、X-Elapsed-Ms、X-ABI-Included も返されたす。

レゞストリセレクタヌの共有基盀

゚ンゞンは解決凊理の副産物ずしお、オヌプンなセレクタヌ→シグネチャレゞストリを構築したす。

  • 怜蚌枈みの解決Etherscan/Sourcifyごずに、関数、むベント完党な32バむトのtopic0。衝突なし、゚ラヌのグラりンドトゥルヌスずなる selector → signature ペアを収集したす。蚌明グレヌドverified-source。
  • 解決結果はスケルトンハッシュsolc のメタデヌタトレヌラヌを陀去したランタむムバむトコヌドでもむンデックス化されるため、バむトコヌドが完党に同䞀のクロヌンは、解決の段階を再実行せず、新たに远加された bytecode-match の段階で解決されたす。クロヌンに぀いおは、怜蚌枈みの䞻匵は partial に制限されたすこのアドレスの゜ヌスは怜蚌されおいないため。たた、provenance.bytecode_match は、再利甚された ABI の提䟛元である元のチェヌンアドレス゜ヌス信頌床を瀺したす。
  • 逆コンパむルされた ABI では、実蚌枈みのレゞストリ゚ントリを䜿っお Unresolved_<selector> ずいう名前を眮き換えたす。たた、ANTHROPIC_API_KEY が蚭定されおいる堎合、応答を埅たずに実行される提案ず怜蚌の凊理で Claude にシグネチャ候補を尋ね、keccak256(sig)[:4] がセレクタヌず䞀臎するものだけを採甚したす。蚌明グレヌドkeccak-provenシグネチャは実蚌枈みですが、意味は掚定です。
  • 公開されおいる4byteのフォヌルバックラベルも、䜿甚前にロヌカルでセレクタヌず照合されたすが、実蚌されおいないラベルのたたであり、蚌明ずしお共有基盀に登録されるこずはありたせん。

レゞストリに曞き蟌めるのぱンゞン独自のパむプラむンだけです。䞀般からの登録は受け付けたせんそれが4byteで衝突による汚染が起きた理由です。

蓄積されたデヌタはCC0デヌタセットずしお公開されおいたす evm-abi-commons GET /v1/registry/export からい぀でも再生成できたす。レスポンスは NDJSON で、X-License: CC0-1.0 ずラむセンスを瀺す Link ヘッダヌが含たれたす。怜玢゚クスポヌトの゚ントリには蚌明グレヌドが含たれたす。たた、刀明しおいる堎合、収集された verified-source ゚ントリには゜ヌスの chain ず address も含たれたす。SDK のナヌザヌは lookupSelector、registryStats、exportRegistry を盎接呌び出せたす。

{chain} には、GET /v1/chains が返す任意の゚むリアスviem/chains に基づくたたは数倀 ID を指定できたす。チェヌン゚ントリには testnet ず has_default_rpc が含たれるため、゚ヌゞェントは rpc_url の指定を求めるべきかどうかを刀断できたす。q は ID、名前、゚むリアス、ネむティブトヌクンのシンボルに䞀臎し、bnb chain のような耇数語の怜玢にも察応したす。?rpc_url= を枡すず RPC を䞊曞きできたすデフォルトがないチェヌン、たずえば local31337 では必須です。組み蟌みの゚むリアスが甚意される前の EVM チェヌンでは、これを䜿っお動䜜させたす。

゚ヌゞェントのコンテキストでは、生の JSON ABI が必芁でない限り、resolve_abi では include_abi=false を優先しおください。コンパクトなレスポンスでは interface、provenance、proxy、token、abi_for が保持され、abi_omitted: true が蚭定されたす。倧芏暡なコントラクトでは、method_q、method_kind=read|write|all、method_limit を远加するず、ナヌザヌの意図に関係するマニフェストのメ゜ッドだけが返されたす。

curl localhost:8787/v1/ethereum/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/abi
curl -X POST localhost:8787/v1/ethereum/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/prepare \
  -H 'content-type: application/json' \
  -d '{"function":"approve","args":["0x1111111254EEB25477B68fb85Ed929f73A960582","1000000000000000000"],"from":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'

prepare_tx.safety.signing_recommended が匕き枡しの可吊を制埡したす。シミュレヌションに倱敗した堎合、risk_level は blocked ずなり、deeplink は空になり、wallet_request は省略されたす。眲名が掚奚される堎合、wallet_request は、りォレットブロック゚クスプロヌラヌアプリずの統合向けに、16進数の JSON-RPC 数量を含む EIP-1193 圢匏の eth_sendTransaction ペむロヌドです。逆コンパむルされた曞き蟌み、たたはセレクタヌのみの曞き蟌みはリスクが high であり、セレクタヌず意図をナヌザヌが明瀺的に確認する必芁がありたす。正のトヌクンNFT 支出者承認は、spending_approval を䌎うリスク medium です。トレヌスから導出されたものでも、暙準的なトヌクンNFT 転送から掚定されたものでも、転送元からのトヌクンNFT の流出は、asset_outflow を䌎うリスク medium です。クラむアントは匕き枡し前に䞡方を衚瀺しおください。

りォレット、ブロック゚クスプロヌラヌ、コヌディング゚ヌゞェント、MCP クラむアント向けの統合レシピは、docs/integrations.md で公開されおいたす。

MCP サヌバヌSPEC §5

npm run mcp を実行するず、7 ぀のコア動詞ず、チェヌン、セレクタヌの共通情報、ランタむムメトリクス甚の読み取り専甚ナヌティリティツヌルを公開する stdio MCP サヌバヌが起動したす。ツヌルはデプロむ枈みの REST ゚ンゞンENGINE_URLを薄くラップするため、MCP ぱンゞンの氞続キャッシュず Etherscan キヌを共有し、解決凊理やシヌクレットが重耇するこずはありたせん。ツヌルの説明には、カストディを䌎わない匕き枡しモデルprepare_tx は眲名したせんが明蚘されおいたす。たた、郚分的な ABI、プロキシ、バむトコヌド照合、逆コンパむル枈み ABI の結果に぀いおは、由来に関する譊告を先に提瀺し、眲名甚ディヌプリンクたたはりォレットリク゚ストをナヌザヌに枡す前に prepare_tx.safety.signing_recommended を確認するよう求めたす。JSON MCP ツヌルは出力スキヌマず structuredContent を公開するため、クラむアントはテキストを解析せずに、provenance、デコヌド枈みの呌び出し、シミュレヌション、セレクタヌの結果、メトリクス、safety に基づいお凊理を分岐できたす。

MCP クラむアントClaude Desktop / Claude Code の mcp 蚭定に接続したす。

{
  "mcpServers": {
    "gulltoppr": {
      "command": "npm",
      "args": ["run", "--silent", "mcp"],
      "cwd": "/home/ubuntu/repos/abi-agent",
      "env": { "ETHERSCAN_API_KEY": "" }
    }
  }
}

コアツヌルresolve_abi、read_contract、encode_call、simulate、prepare_tx、decode_tx、resolve_name。ナヌティリティツヌルlist_chains、lookup_selector、registry_stats、export_registry、runtime_metrics。prepare_tx を陀き、すべお読み取り専甚の泚釈が付いおいたす非砎壊的で、眲名なしの匕き枡し情報を返し、眲名は行いたせん。

リモヌトStreamable HTTP

ロヌカルの stdio サヌバヌを実行できない゚ヌゞェント向けに、同じ MCP を HTTP 経由で https://mcp.gulltoppr.dev/mcp でホストしおいたすロヌカルでは npm run mcp:http。ステヌトレス。HTTP 察応の MCP クラむアントをこの URL に接続したす。

{ "mcpServers": { "gulltoppr": { "url": "https://mcp.gulltoppr.dev/mcp" } } }

ツヌルの登録は、stdio ゚ントリmcp.tsず HTTP ゚ントリmcp-http.tsで src/mcp-server.ts を共有し、Dockerfile.mcp / fly.mcp.toml を䜿っおデプロむしおいたす。MCP ディレクトリのメタデヌタは server.json にあり、同じリモヌト URL、リポゞトリ、ホヌムペヌゞ、アむコンを公開したす。リモヌト MCP サヌビスは、同じメタデヌタを https://mcp.gulltoppr.dev/server.json ず https://mcp.gulltoppr.dev/.well-known/mcp-server.json でも提䟛したす。

npm SDK

この REST むンタヌフェヌス甚の型付きクラむアントは sdk/gulltopprにありたす。new Gulltoppr({ baseUrl }).resolveAbi(...) / .read(...) / .prepareTx(...) に加えお、contract() ヘルパヌも利甚できたす。REST ず MCP に続く 3 ぀目のむンタヌフェヌスであり、りォレット、゚クスプロヌラヌ、アプリずの連携の基盀です。sdk/README.md を参照しおください。

デプロむ

https://api.gulltoppr.dev で皌働䞭ですFly.io アプリ gulltoppr、リヌゞョン cdg。ラダヌの第 4 段階のレむテンシヌを最小限にするため、gulltoppr ず同じ堎所に配眮されおいたす。DockerfileNode 22、tsx で実行、むメヌゞサむズ玄 82 MBを䜿っおコンテナ化し、fly.toml で蚭定しおいたす。

flyctl deploy --remote-only --ha=false
# optional: set an Etherscan v2 key to enable ladder rung 1
flyctl secrets set ETHERSCAN_API_KEY=... -a gulltoppr

HEIMDALL_API_URL / SIGNING_BASE_URL / PORT は fly.toml [env] で蚭定されおいたす。 アむドル時はマシンが自動停止し、リク゚ストに応じお自動起動したす。

Claude Skill

4 ぀目のむンタヌフェヌスは Claude Skillskill/gulltoppr/です。゚ヌゞェントにワヌクフロヌ解決 → 由来を確認 → 読み取りたたは準備 → シミュレヌション → 匕き枡しず、カストディを䌎わない安党性のルヌルを教えたす。cp -r skill/gulltoppr ~/.claude/skills/gulltoppr でむンストヌルできたす。skill/README.md を参照しおください。

構成

src/
  server.ts        REST routes (Hono), BigInt-safe JSON, error mapping
  index.ts         REST entry / boot
  mcp.ts           MCP server (stdio): core verbs plus read-only utility tools
  config.ts        env + defaults
  metrics.ts       in-process rung/RPC latency and failure counters
  chains.ts        alias/id → {id, viem chain, rpc}  (SPEC §6)
  clients.ts       cached viem PublicClients
  types.ts         the SPEC §2 data types
  errors.ts        typed ApiError → HTTP status  (SPEC §7)
  resolve/
    index.ts       resolve_abi: the ladder orchestrator (the spine)
    etherscan.ts   rung 1  · sourcify.ts rung 2 · proxy.ts rung 3
    heimdall.ts    rung 4 (gulltoppr) · fourbyte.ts rung 5
    interface.ts   capability manifest builder ("the buttons", SPEC §2.4a)
    selectFunction.ts  name/signature → AbiFunction
  verbs/
    read.ts encode.ts simulate.ts prepare.ts decodeTx.ts resolveName.ts
    args.ts        JSON-arg → viem-typed coercion

状況

゚ンドツヌ゚ンドで動䜜確認枈み皌働䞭のメむンネットで怜蚌枈みです。完党なラダヌ、機胜マニフェスト、read_contract、encode_call、prepare_txeth_call シミュレヌション + ディヌプリンクりォレットぞの匕き枡し + 由来に関する譊告付き、decode_txgulltoppr 経由、および任意の解決枈み ABI による calldata の拡充、チェヌンを考慮した ENS/Basenames resolve_name を、REST むンタヌフェヌスず MCP サヌバヌ の䞡方で公開しおいたすstdio ハンドシェむク + コアツヌルナヌティリティ + ラむブツヌル呌び出しを怜蚌枈み。ラむブスモヌクテストスむヌトでは、プロキシ、未怜蚌の逆コンパむル、任意の rpc_url チェヌン、Monad、Monad テストネット、prepare_tx も察象ずしおいたす。

ベスト゚フォヌトに関する泚意点

  • simulate のトレヌスstate_diff は debug_traceCallprestateTracer の diff モヌドから取埗し、asset_changes / logs は RPC がこれらのデバッグ API に察応しおいる堎合に callTracer から取埗したす。パブリック RPC では空の配列が返されるこずがよくありたす。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。