Blockscout

ทางการ

เข้าถึงข้อมูลบล็อกเชน เช่น ยอดคงเหลือ โทเค็น และ NFTs จาก API ของ Blockscout รองรับหลายเชนและการแจ้งเตือนความคืบหน้า

GitHub
46
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย Blockscout MCP?

  • แก้ไขที่อยู่และโทเค็น — ขอให้ get_address_by_ens_name แปลงชื่อ ENS เป็นที่อยู่ หรือ lookup_token_by_symbol เพื่อค้นหาโทเค็นตามสัญลักษณ์ในหลายเชน
  • ตรวจสอบสัญญาและโค้ด — ใช้ get_contract_abi และ inspect_contract_code เพื่อดึงข้อมูล ABI ของสัญญาอัจฉริยะหรือไฟล์ซอร์สที่ได้รับการยืนยัน
  • วิเคราะห์กิจกรรมกระเป๋าเงิน — คิวรี get_transactions_by_address, get_token_transfers_by_address และ nft_tokens_by_address เพื่อตรวจสอบประวัติธุรกรรมของที่อยู่ การโอน ERC-20 หรือการถือครอง NFT
  • สำรวจบล็อกและธุรกรรม — รับรายละเอียดผ่าน get_block_info และ get_transaction_info รวมถึงอินพุตที่ถอดรหัสแล้ว ก๊าซที่ใช้ และการโอนโทเค็น
  • อ่านสถานะสัญญา — เรียก read_contract เพื่อดำเนินการฟังก์ชันแบบอ่านอย่างเดียวบนสัญญาอัจฉริยะที่บล็อกที่ระบุ
  • เข้าถึงข้อมูลเชนดิบ — ใช้ direct_api_call สำหรับคำสั่งขั้นสูงหรือเฉพาะเชนกับเอนด์พอยต์ของ Blockscout

เซิร์ฟเวอร์ MCP แบบโฮสต์

npx add-mcp 'https://mcp.blockscout.com/mcp'

ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ

เอกสาร

เซิร์ฟเวอร์ MCP Blockscout

smithery badge

Blockscout Server MCP server

Model Context Protocol (MCP) เป็นโปรโตคอลเปิดที่ออกแบบมาเพื่อให้ AI agents, IDEs และเครื่องมืออัตโนมัติสามารถบริโภค ค้นหา และวิเคราะห์ข้อมูลที่มีโครงสร้างผ่าน API ที่คำนึงถึงบริบท

เซิร์ฟเวอร์นี้ครอบคลุม Blockscout APIs และเปิดเผยข้อมูลบล็อกเชน—ยอดคงเหลือ โทเค็น NFT ข้อมูลเมตาของคอนแทรกต์—ผ่าน MCP เพื่อให้ AI agents และเครื่องมือ (เช่น Claude, Cursor หรือ IDEs) สามารถเข้าถึงและวิเคราะห์ข้อมูลตามบริบทได้

คุณสมบัติหลัก:

  • การเข้าถึงข้อมูลบล็อกเชนตามบริบทสำหรับเครื่องมือ AI
  • รองรับหลายเชนผ่านการกำหนดค่า Blockscout PRO API พร้อมการเสริมข้อมูลเมตาของ Chainscout
  • REST API แบบมีเวอร์ชัน: ให้อินเทอร์เฟซมาตรฐานที่เป็นมิตรกับเว็บสำหรับเครื่องมือ MCP ทั้งหมด ดู API.md สำหรับเอกสารฉบับเต็ม
  • คำแนะนำแบบกำหนดเองสำหรับโฮสต์ MCP ในการใช้เซิร์ฟเวอร์
  • การปรับบริบทอย่างชาญฉลาดเพื่อประหยัดโทเค็น LLM ในขณะที่ยังคงการเข้าถึงข้อมูล
  • การแบ่งการตอบสนองอัจฉริยะด้วยขนาดหน้าทีกำหนดค่าได้เพื่อป้องกันบริบทล้น
  • การแบ่งหน้าแบบเคอร์เซอร์ทึบแสงโดยใช้สตริงที่เข้ารหัส Base64URL แทนพารามิเตอร์ที่ซับซ้อน
  • การตัดทอนฟิลด์ข้อมูลขนาดใหญ่อัตโนมัติพร้อมตัวบ่งชี้ที่ชัดเจนและคำแนะนำการเข้าถึง
  • โมเดล ToolResponse ที่เป็นมาตรฐานพร้อมการตอบสนอง JSON ที่มีโครงสร้างและคำแนะนำติดตามผล
  • การสังเกตการณ์ที่เพิ่มขึ้นด้วยการแจ้งเตือนความคืบหน้าของ MCP และการอัปเดตเป็นระยะสำหรับการดำเนินการระยะยาว

การวิเคราะห์ขั้นสูงด้วยทักษะ Agent

สำหรับการวิเคราะห์บล็อกเชนที่มีประสิทธิภาพและทรงพลังยิ่งขึ้น ให้ติดตั้งทักษะ Blockscout Analysis จาก agent-skills repository ทักษะนี้ให้คำแนะนำที่มีโครงสร้างแก่ AI agents สำหรับกลยุทธ์การดำเนินการ การจัดการการตอบสนอง แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย และการจัดระเบียบเวิร์กโฟลว์

เรียนรู้เพิ่มเติม: ดู agent-skills README สำหรับความสามารถทั้งหมดและคำแนะนำการติดตั้ง

การกำหนดค่า MCP Clients

คีย์ API Blockscout PRO

การกำหนดค่าเซิร์ฟเวอร์ MCP Blockscout กับ AI agent ต้องใช้คีย์ API Blockscout PRO เครื่องมือข้อมูลส่วนใหญ่ส่งคำขอผ่านเกตเวย์ Blockscout PRO API ที่ผ่านการรับรองความถูกต้อง ดังนั้นหากไม่มีคีย์ที่ถูกต้อง เครื่องมือเหล่านั้นจะล้มเหลวอย่างรวดเร็วก่อนที่จะส่งคำขอต้นทางใดๆ

หากต้องการรับคีย์ ลงทะเบียนบน Blockscout Developer Portal (ระดับฟรีไม่ต้องใช้บัตรเครดิต) และสร้างคีย์ API; คีย์จะมีคำนำหน้า proapi_ จากนั้นระบุเมื่อกำหนดค่า client ของคุณ ดังแสดงในส่วนด้านล่าง

การตั้งค่า Claude (Web, Desktop, Cowork) - แนะนำ

วิธีที่ง่ายที่สุดในการใช้เซิร์ฟเวอร์ MCP Blockscout กับ Claude คือเซิร์ฟเวอร์โฮสต์อย่างเป็นทางการ: ประสบการณ์การติดตั้งที่มีการจัดการแบบเนทีฟพร้อมการอัปเดตอัตโนมัติและไม่ต้องรันอะไรด้วยตัวเอง เพิ่มเป็น Custom Connector ด้วยคีย์ PRO API ของคุณเอง Claude จะส่งคีย์ในทุกคำขอในส่วนหัว x-api-key ซึ่งเซิร์ฟเวอร์ยอมรับเป็นนามแฝงสำหรับส่วนหัว Blockscout-MCP-Pro-Api-Key ของมัน

  1. เปิด Claude และไปที่ Customize > Connectors ในแผน Team และ Enterprise เจ้าขององค์กรจะดำเนินการนี้ภายใต้ Organization settings > Connectors
  2. คลิก Add custom connector ตั้งชื่อเป็น Blockscout และ URL เป็น https://mcp.blockscout.com/mcp จากนั้นดำเนินการต่อ
  3. ปล่อย Authentication เป็น None (Claude ตรวจจับได้) คำเตือนว่า connector ไม่มีข้อมูลประจำตัวเป็นสิ่งที่คาดหวัง: คีย์จะถูกระบุในขั้นตอนถัดไป
  4. เปิด Request headers เลือก x-api-key จากรายการ และวางคีย์ PRO API ของคุณเป็นค่า เลือกชื่อนี้เท่านั้น; เซิร์ฟเวอร์ไม่อ่านชื่ออื่นที่คล้ายกันในรายการ
  5. คลิก Add

หมายเหตุ: ส่วน Request headers อยู่ในช่วงเบต้าและยังไม่พร้อมใช้งานสำหรับทุกองค์กร หากกล่องโต้ตอบของคุณไม่แสดง ให้ใช้ Connectors Directory ด้านล่าง

หมายเหตุ: ในแผน Team และ Enterprise คีย์จะถูกป้อนครั้งเดียวโดยเจ้าของและแชร์โดยทั้งองค์กร ไม่สามารถแก้ไขการตั้งค่าการรับรองความถูกต้องหลังจากเพิ่ม connector แล้ว: หากต้องการเปลี่ยนคีย์ ให้ลบ connector และเพิ่มใหม่อีกครั้ง

การใช้ Claude Connectors Directory

หากกล่องโต้ตอบ Custom Connector ไม่มีส่วน Request headers ให้ติดตั้ง Blockscout connector จาก Anthropic Connectors Directory อย่างเป็นทางการ โดยเชื่อมต่อกับเซิร์ฟเวอร์โฮสต์เดียวกันแต่ใช้คีย์การเข้าถึงที่ใช้ร่วมกัน

การติดตั้ง

ตัวเลือกที่ 1: ลิงก์โดยตรง

เยี่ยมชม claude.com/connectors/blockscout และคลิกลิงก์ในส่วน "Used in" เพื่อติดตั้ง Blockscout connector

ตัวเลือกที่ 2: ผ่านการตั้งค่า
  1. เปิด Claude (แอป Web หรือ Desktop)
  2. ไปที่ Settings > Connectors > Browse connectors
  3. ค้นหา "Blockscout"
  4. คลิก "Connect" เพื่อติดตั้ง

ข้อจำกัด: เนื่องจากการใช้คีย์การเข้าถึงที่ใช้ร่วมกัน อาจมีข้อจำกัดในการเข้าถึงและความสามารถของ connector

การตั้งค่า Claude Code

ส่งคีย์ PRO API ของคุณผ่านส่วนหัว Blockscout-MCP-Pro-Api-Key เมื่อเพิ่มเซิร์ฟเวอร์:

claude mcp add --transport http blockscout https://mcp.blockscout.com/mcp \
  --header "Blockscout-MCP-Pro-Api-Key: proapi_your_key_here"

หลังจากรันคำสั่งนี้ Blockscout จะพร้อมใช้งานเป็นเซิร์ฟเวอร์ MCP ใน Claude Code ทำให้คุณสามารถเข้าถึงและวิเคราะห์ข้อมูลบล็อกเชนได้โดยตรงจากสภาพแวดล้อมการเขียนโค้ดของคุณ

การตั้งค่าแอป ChatGPT

ติดตั้งแอป Blockscout จาก ChatGPT Apps marketplace:

  1. เปิด หน้าของแอป Blockscout (หรือค้นหา "Blockscout" ใน ChatGPT Apps directory)
  2. คลิก "Connect" เพื่อเปิดใช้งานแอปสำหรับบัญชี ChatGPT ของคุณ

การตั้งค่าแอป Codex

  1. เปิด Codex และไปที่ Settings > MCP Servers > Add server
  2. ตั้ง Name เป็น Blockscout, เลือกแท็บ Streamable HTTP และตั้ง URL เป็น https://mcp.blockscout.com/mcp
  3. ภายใต้ Headers เพิ่มส่วนหัวด้วยคีย์ Blockscout-MCP-Pro-Api-Key และค่า proapi_your_key_here
  4. บันทึกและรีสตาร์ทแอป Codex

การตั้งค่า Codex CLI

Codex CLI ไม่สามารถแนบส่วนหัวแบบกำหนดเองจากบรรทัดคำสั่งได้ ดังนั้นให้กำหนดค่าในสองขั้นตอน:

  1. สร้างรายการเซิร์ฟเวอร์:

    codex mcp add Blockscout --url https://mcp.blockscout.com/mcp
    
  2. แก้ไข ~/.codex/config.toml เพื่อเพิ่มส่วนหัวคีย์ PRO API และเปิดใช้งาน MCP client แบบ streamable-HTTP (จำเป็นสำหรับเซิร์ฟเวอร์ MCP ระยะไกลในการเชื่อมต่อ) การกำหนดค่าที่ได้ควรมีลักษณะดังนี้:

    [features]
    experimental_use_rmcp_client = true
    
    [mcp_servers.Blockscout]
    url = "https://mcp.blockscout.com/mcp"
    http_headers = { "Blockscout-MCP-Pro-Api-Key" = "proapi_your_key_here" }
    

การตั้งค่า Cursor

เพิ่มเซิร์ฟเวอร์ในการกำหนดค่า MCP ของ Cursor — ไม่ว่าจะเป็น .cursor/mcp.json ระดับโปรเจกต์หรือ ~/.cursor/mcp.json ระดับโลก — โดยระบุคีย์ PRO API ของคุณผ่านส่วนหัว Blockscout-MCP-Pro-Api-Key:

{
  "mcpServers": {
    "blockscout": {
      "url": "https://mcp.blockscout.com/mcp",
      "timeout": 180000,
      "headers": {
        "Blockscout-MCP-Pro-Api-Key": "proapi_your_key_here"
      }
    }
  }
}

การตั้งค่าสำหรับการพัฒนาท้องถิ่น (สำหรับนักพัฒนา)

หากคุณต้องการรันเซิร์ฟเวอร์ในเครื่องเพื่อวัตถุประสงค์ในการพัฒนา:

{
  "mcpServers": {
    "blockscout": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/blockscout/mcp-server:latest"
      ]
    }
  }
}

รายละเอียดทางเทคนิค

อ้างอิง SPEC.md สำหรับรายละเอียดทางเทคนิค

โครงสร้างพื้นที่เก็บข้อมูล

อ้างอิง AGENTS.md สำหรับโครงสร้างพื้นที่เก็บข้อมูล

การทดสอบ

อ้างอิง TESTING.md สำหรับคำแนะนำที่ครอบคลุมเกี่ยวกับการรันทั้ง การทดสอบหน่วยและการรวมระบบ

คำอธิบายเครื่องมือ

  1. __unlock_blockchain_analysis__() - เริ่มต้นเซสชัน MCP Blockscout: ส่งคืนข้อมูลอ้างอิงเซิร์ฟเวอร์ ตัวชี้ทักษะ blockscout-analysis และกฎการแก้ไข URI เรียกใช้ครั้งเดียวต่อเซสชัน ก่อนเครื่องมืออื่นใด
  2. get_chains_list(query=None) - ส่งคืนรายการเชนที่รองรับ พร้อมการกรองตามชื่อ ID เชน สกุลเงินเนทีฟ หรือระบบนิเวศ
  3. get_address_by_ens_name(name) - แปลงชื่อโดเมน ENS เป็นที่อยู่ Ethereum ที่สอดคล้องกัน
  4. lookup_token_by_symbol(chain_id, symbol) - ค้นหาที่อยู่โทเค็นตามสัญลักษณ์หรือชื่อ ส่งคืนผลลัพธ์ที่อาจตรงกันหลายรายการ
  5. get_contract_abi(chain_id, address) - ดึง ABI (Application Binary Interface) สำหรับสัญญาอัจฉริยะ
  6. inspect_contract_code(chain_id, address, file_name=None) - อนุญาตให้รับไฟล์ต้นฉบับของคอนแทรกต์ที่ตรวจสอบแล้ว
  7. get_address_info(chain_id, address) - รับข้อมูลที่ครอบคลุมเกี่ยวกับที่อยู่ รวมถึงยอดคงเหลือ ความสัมพันธ์ ENS สถานะคอนแทรกต์ รายละเอียดโทเค็น และแท็กสาธารณะ
  8. get_tokens_by_address(chain_id, address, cursor=None) - ส่งคืนการถือครองโทเค็น ERC20 โดยละเอียดสำหรับที่อยู่พร้อมข้อมูลเมตาที่เสริมแล้วและข้อมูลตลาด
  9. get_block_number(chain_id, [datetime]) - ดึงหมายเลขบล็อกและเวลาสำหรับวันที่/เวลาที่ระบุหรือบล็อกล่าสุด
  10. get_transactions_by_address(chain_id, address, age_from, age_to, methods, cursor=None) - รับธุรกรรมสำหรับที่อยู่ภายในช่วงเวลาที่ระบุพร้อมการกรองเมธอดเพิ่มเติม
  11. get_token_transfers_by_address(chain_id, address, age_from, age_to, token, cursor=None) - ส่งคืนการโอนโทเค็น ERC-20 สำหรับที่อยู่ภายในช่วงเวลาที่ระบุ
  12. nft_tokens_by_address(chain_id, address, cursor=None) - ดึงโทเค็น NFT ที่เป็นเจ้าของโดยที่อยู่ จัดกลุ่มตามคอลเลกชัน
  13. get_block_info(chain_id, number_or_hash, include_transactions=False) - ส่งคืนข้อมูลบล็อก รวมถึงเวลา แก๊สที่ใช้ ค่าธรรมเนียมที่เผา และจำนวนธุรกรรม สามารถรวมรายการแฮชธุรกรรมได้ตามต้องการ
  14. get_transaction_info(chain_id, hash, include_raw_input=False) - รับข้อมูลธุรกรรมที่ครอบคลุมพร้อมพารามิเตอร์อินพุตที่ถอดรหัสแล้วและการโอนโทเค็นโดยละเอียด
  15. read_contract(chain_id, address, abi, function_name, args='[]', block='latest') - ดำเนินการฟังก์ชันคอนแทรกต์อัจฉริยะแบบอ่านอย่างเดียวและส่งคืนผลลัพธ์ อาร์กิวเมนต์ abi เป็นออบเจกต์ JSON ที่อธิบายลายเซ็นของฟังก์ชันเฉพาะ
  16. direct_api_call(chain_id, endpoint_path, query_params=None, cursor=None, method='GET', json_body=None) - เรียกใช้ปลายทาง API Blockscout ดิบสำหรับข้อมูลขั้นสูงหรือเฉพาะเชน รองรับคำขอ GET (ค่าเริ่มต้น) และ POST พร้อมเนื้อหา JSON

ตัวอย่างพรอมต์สำหรับ AI Agents

Is any approval set for OP token on Optimism chain by `zeaver.eth`?
Calculate the total gas fees paid on Ethereum by address `0xcafe...cafe` in May 2025.
Which 10 most recent logs were emitted by `0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7`
before `Nov 08 2024 04:21:35 AM (-06:00 UTC)`?
Tell me more about the transaction `0xf8a55721f7e2dcf85690aaf81519f7bc820bc58a878fa5f81b12aef5ccda0efb`
on Redstone rollup.
Is there any blacklisting functionality of USDT token on Arbitrum One?
What is the latest block on Gnosis Chain and who is the block minter?
Were any funds moved from this minter recently?
When the most recent reward distribution of Kinto token was made to the wallet
`0x7D467D99028199D99B1c91850C4dea0c82aDDF52` in Kinto chain?
Which methods of `0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6` on the Ethereum 
mainnet could emit `SequencerBatchDelivered`?
What is the most recent executed cross-chain message sent from the Arbitrum Sepolia
rollup to the base layer?

การพัฒนาและการปรับใช้

การติดตั้งในเครื่อง

โคลนพื้นที่เก็บข้อมูลและติดตั้ง dependencies:

git clone https://github.com/blockscout/mcp-server.git
cd mcp-server
uv pip install -e . # or `pip install -e .`

เพื่อปรับแต่งส่วนนำหน้าของส่วนหัว User-Agent ที่ใช้สำหรับคำขอ RPC ให้ตั้งค่าตัวแปรสภาพแวดล้อม BLOCKSCOUT_MCP_USER_AGENT (ค่าเริ่มต้นคือ "Blockscout MCP") เวอร์ชันเซิร์ฟเวอร์จะถูกต่อท้ายโดยอัตโนมัติ

การระบุคีย์ PRO API ให้กับเซิร์ฟเวอร์

เมื่อคุณรันเซิร์ฟเวอร์ด้วยตัวเอง ให้ระบุ คีย์ API Blockscout PRO ผ่านตัวแปรสภาพแวดล้อม BLOCKSCOUT_PRO_API_KEY — ส่งออกในเชลล์ของคุณหรือวางในไฟล์ .env ที่อยู่ใน gitignore ในโฟลเดอร์รากของโปรเจกต์ สิ่งนี้เปิดใช้งานการเข้าถึงข้อมูลทั้งหมด การเสริมแท็กสาธารณะ และการอ่านคอนแทรกต์ ห้ามคอมมิตคีย์หรือฝังในไบนารีที่จัดส่งกับ client; เมื่อรันผ่าน Docker ให้ส่งผ่านในเวลารันไทม์ (เช่น -e BLOCKSCOUT_PRO_API_KEY=...) แทนการฝังลงในอิมเมจ

export BLOCKSCOUT_PRO_API_KEY=proapi_your_key_here

คีย์ที่ client ระบุ (HTTP transports) เมื่อเซิร์ฟเวอร์รันในโหมด HTTP client สามารถระบุคีย์ PRO API ของตัวเองในส่วนหัวคำขอ — โดยค่าเริ่มต้นคือ Blockscout-MCP-Pro-Api-Key กำหนดค่าได้ผ่าน BLOCKSCOUT_PRO_API_KEY_HEADER (ตั้งเป็นสตริงว่างเพื่อปิดใช้งานคีย์ที่ client ระบุทั้งหมด) เซิร์ฟเวอร์ยังอ่านคีย์จากส่วนหัว x-api-key สำหรับ client ที่ชื่อส่วนหัวถูกจำกัดให้อยู่ในรายการคงที่ (เช่น Claude Custom Connectors) ส่วนหัวที่กำหนดค่าจะชนะเมื่อมีทั้งสอง; x-api-key จะถูกพิจารณาเฉพาะเมื่อส่วนหัวที่กำหนดค่าหายไปหรือว่างเปล่า และการปิดใช้งานคีย์ที่ client ระบุจะปิดใช้งานด้วยเช่นกัน วิธีนี้ทำงานเหมือนกันสำหรับ HTTP transports ทั้งสอง — การเรียกเครื่องมือ MCP-over-HTTP และ REST API คีย์ที่ client ระบุมีลำดับความสำคัญเหนือ BLOCKSCOUT_PRO_API_KEY สำหรับคำขอนั้น; หาก client ไม่ส่งคีย์ เซิร์ฟเวอร์จะใช้คีย์ที่กำหนดค่าของตัวเองเป็นตัวสำรอง; หากไม่มีทั้งสอง คำขอจะล้มเหลวด้วยข้อผิดพลาด not-configured คีย์ client ที่มีอยู่แต่มีรูปแบบไม่ถูกต้องจะทำให้คำขอใดๆ ที่ต้องใช้ PRO API ล้มเหลวโดยไม่มีการสำรอง (เซิร์ฟเวอร์ไม่เคยใช้คีย์ของตัวเองแทนคีย์ client ที่ไม่ถูกต้องอย่างเงียบๆ); เครื่องมือที่ไม่ใช้ PRO API จะไม่ได้รับผลกระทบ สิ่งนี้ทำให้สามารถรันเซิร์ฟเวอร์ HTTP ที่ใช้ร่วมกันซึ่งแต่ละ client ตรวจสอบสิทธิ์ด้วยคีย์ของตัวเอง

คำเตือนเครดิตต่ำ การเข้าถึง PRO API ถูกวัดเป็นเครดิต เมื่อยอดคงเหลือที่เหลือที่รายงานโดย API ลดลงต่ำกว่าเกณฑ์ที่กำหนดค่าได้ เครื่องมือข้อมูลทุกตัวจะเพิ่มหมายเหตุแนะนำในการตอบสนอง เพื่อแจ้งให้ผู้ปฏิบัติงานเติมเงินเพื่อให้การเข้าถึง PRO API พร้อมสำหรับการใช้งานปริมาณมากอย่างต่อเนื่อง เกณฑ์ถูกตั้งผ่าน BLOCKSCOUT_PRO_API_LOW_CREDITS_THRESHOLD (ค่าเริ่มต้น 5000 เครดิต; ตั้งเป็น 0 เพื่อปิดใช้งานหมายเหตุ) หมายเหตุจะทำงานสำหรับยอดคงเหลือใดๆ ที่ต่ำกว่าเกณฑ์ รวมถึงยอดคงเหลือศูนย์และติดลบ ข้อกำหนดเกี่ยวกับคีย์ PRO API BLOCKSCOUT_PRO_API_KEY_REQUIRED_NOTICE เก็บข้อความแจ้งเตือนที่ผู้ดำเนินการกำหนดค่าไว้ ซึ่งเซิร์ฟเวอร์จะผนวกเป็นรายการสุดท้ายของฟิลด์ notes ในการตอบสนองของเครื่องมือเมื่อคำขอไม่ได้นำคีย์ PRO API ของไคลเอ็นต์เอง (ที่อยู่ในรูปแบบที่ถูกต้อง) มาด้วย ข้อความนี้มีไว้เพื่อประกาศการย้ายเซิร์ฟเวอร์สาธารณะอย่างเป็นทางการไปสู่การกำหนดให้ไคลเอ็นต์ต้องส่งคีย์ ดังนั้นเฉพาะการปรับใช้อย่างเป็นทางการเท่านั้นที่คาดว่าจะตั้งค่านี้ เมื่อตัวแปรไม่ได้ตั้งค่าหรือว่างเปล่า (ค่าเริ่มต้น) ฟีเจอร์นี้จะปิดโดยสิ้นเชิง ผู้ดำเนินการชุมชนและผู้ที่โฮสต์เองควรปล่อยให้ว่างไว้ โดยเฉพาะในโหมด stdio ซึ่งคุณกำหนดค่า BLOCKSCOUT_PRO_API_KEY เองและไม่มีส่วนหัวของคำขอใดที่สามารถนำคีย์ของไคลเอ็นต์ได้ ข้อความแจ้งเตือนจะเพียงแค่ทำซ้ำข้อความการย้ายที่ใช้ไม่ได้กับการปรับใช้ของคุณ

การรันเซิร์ฟเวอร์

เซิร์ฟเวอร์ทำงานในโหมด stdio โดยค่าเริ่มต้น:

python -m blockscout_mcp_server

โหมด HTTP (MCP เท่านั้น):

หากต้องการรันเซิร์ฟเวอร์ในโหมด HTTP Streamable (ไม่เก็บสถานะ ตอบสนองด้วย SSE โดยค่าเริ่มต้น):

python -m blockscout_mcp_server --http

คุณยังสามารถระบุโฮสต์และพอร์ตสำหรับเซิร์ฟเวอร์ HTTP ได้:

python -m blockscout_mcp_server --http --http-host 0.0.0.0 --http-port 8080

โหมดการพัฒนา (การตอบสนอง JSON แบบธรรมดา):

สำหรับการพัฒนาและทดสอบกับไคลเอ็นต์ HTTP ทั่วไป (curl, Insomnia) คุณสามารถเปิดใช้การตอบสนอง JSON แบบธรรมดาแทนสตรีม SSE ได้:

export BLOCKSCOUT_DEV_JSON_RESPONSE=true
python -m blockscout_mcp_server --http

หมายเหตุ: การดำเนินการนี้จะปิดใช้งาน Server-Sent Events (SSE) และการแจ้งเตือนความคืบหน้า ใช้เฉพาะสำหรับการทดสอบและดีบักในเครื่องเท่านั้น

การสร้างอุโมงค์ด้วย Ngrok (โหมดการพัฒนา):

Python MCP SDK บังคับใช้การป้องกัน DNS rebinding ซึ่งจะบล็อกคำขอจากอุโมงค์ ngrok โดยค่าเริ่มต้น หากต้องการเปิดใช้ การสร้างอุโมงค์สำหรับการพัฒนาและทดสอบ:

  1. เริ่มอุโมงค์ ngrok ไปยังเซิร์ฟเวอร์ในเครื่องของคุณ:

    ngrok http 8000
    
  2. กำหนดค่าโฮสต์และ origin ที่อนุญาตโดยใช้ URL ngrok ของคุณ:

    export BLOCKSCOUT_MCP_ALLOWED_HOSTS="your-tunnel-id.ngrok-free.app"
    export BLOCKSCOUT_MCP_ALLOWED_ORIGINS="https://your-tunnel-id.ngrok-free.app"
    python -m blockscout_mcp_server --http
    

หมายเหตุ: การตั้งค่าเหล่านี้มีไว้สำหรับการพัฒนาเป็นหลัก เมื่อไม่ได้ตั้งค่าตัวแปรเหล่านี้ การป้องกัน DNS rebinding จะถูกกำหนดโดยอัตโนมัติจากโฮสต์ที่ผูกของเซิร์ฟเวอร์: เปิดใช้สำหรับ localhost ปิดใช้สำหรับ non-localhost (เช่น 0.0.0.0) หากส่วนหัว Host ของคุณมีพอร์ตที่ไม่ได้มาตรฐาน ให้ใช้คำต่อท้ายไวลด์การ์ด :* (เช่น "example.com:*") หรือระบุค่า host:port ที่แน่นอน

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างอุโมงค์ ngrok กับเซิร์ฟเวอร์ MCP โปรดดู เอกสารประกอบ OpenAI Apps SDK Examples

โหมด HTTP พร้อม REST API:

หากต้องการเปิดใช้ REST API แบบมีเวอร์ชันควบคู่กับจุดสิ้นสุด MCP ให้ใช้แฟล็ก --rest (ซึ่งต้องใช้ --http)

python -m blockscout_mcp_server --http --rest

พร้อมโฮสต์และพอร์ตที่กำหนดเอง:

python -m blockscout_mcp_server --http --rest --http-host 0.0.0.0 --http-port 8080

ตัวเลือก CLI:

  • --http: เปิดใช้โหมด HTTP Streamable
  • --http-host TEXT: โฮสต์ที่จะผูกเซิร์ฟเวอร์ HTTP (ค่าเริ่มต้น: 127.0.0.1)
  • --http-port INTEGER: พอร์ตสำหรับเซิร์ฟเวอร์ HTTP (ค่าเริ่มต้น: 8000)
  • --rest: เปิดใช้ REST API (ต้องใช้ --http)

การสร้างอิมเมจ Docker ในเครื่อง

เริ่มต้นซับโมดูลทักษะที่รวมอยู่ เบิร์นข้อมูลเมตาของคอมมิตลงในบริบทการสร้าง Docker จากนั้นสร้างอิมเมจ:

git submodule update --init --recursive agent-skills
python scripts/bake_skill_metadata.py
docker build -t ghcr.io/blockscout/mcp-server:latest .

การดึงจาก GitHub Container Registry

ดึงอิมเมจที่สร้างไว้ล่วงหน้า:

docker pull ghcr.io/blockscout/mcp-server:latest

การรันด้วย Docker

โหมด HTTP (MCP เท่านั้น):

หากต้องการรันคอนเทนเนอร์ Docker ในโหมด HTTP พร้อมการแมปพอร์ต:

docker run --rm -p 8000:8000 ghcr.io/blockscout/mcp-server:latest python -m blockscout_mcp_server --http --http-host 0.0.0.0

พร้อมพอร์ตที่กำหนดเอง:

docker run --rm -p 8080:8080 ghcr.io/blockscout/mcp-server:latest python -m blockscout_mcp_server --http --http-host 0.0.0.0 --http-port 8080

โหมด HTTP พร้อม REST API:

หากต้องการรันโดยเปิดใช้ REST API:

docker run --rm -p 8000:8000 ghcr.io/blockscout/mcp-server:latest python -m blockscout_mcp_server --http --rest --http-host 0.0.0.0

หมายเหตุ: เมื่อรันในโหมด HTTP ด้วย Docker ให้ใช้ --http-host 0.0.0.0 เพื่อผูกกับอินเทอร์เฟซทั้งหมดเพื่อให้เซิร์ฟเวอร์เข้าถึงได้จากภายนอกคอนเทนเนอร์

พร้อมคีย์ PRO API ของ Blockscout:

ส่งคีย์ในขณะรันไทม์ด้วย -e แทนการเบิร์นลงในอิมเมจ (ดู การให้คีย์ PRO API แก่เซิร์ฟเวอร์):

docker run --rm -p 8000:8000 -e BLOCKSCOUT_PRO_API_KEY=proapi_your_key_here \
  ghcr.io/blockscout/mcp-server:latest python -m blockscout_mcp_server --http --http-host 0.0.0.0

พร้อมการเปิดใช้การวัดเซสชัน (ไม่บังคับ):

การวัดเซสชันจำกัดจำนวนการเรียกเครื่องมือที่ผู้เรียกที่ไม่มีคีย์ PRO API ที่ไคลเอ็นต์ส่งมาสามารถทำได้ต่อตัวระบุเซสชันที่ออกโดย __unlock_blockchain_analysis__ โดยปิดอยู่ตามค่าเริ่มต้น การเปิดใช้หมายถึงการตั้งค่าความลับสำหรับการลงนาม (อย่างน้อย 32 ไบต์ — สร้างขึ้น ไม่ใช่คิดขึ้นเอง) และต้องใช้โหมด HTTP และคีย์ PRO API ฝั่งเซิร์ฟเวอร์ (การเรียกที่วัดจะถูกส่งไปยังต้นทางด้วยคีย์นี้) รวมถึงต้องมีวอลุ่มถาวรสำหรับฐานข้อมูลเซสชัน สร้างความลับ เพียงครั้งเดียว และเก็บไว้อย่างถาวร (ตัวจัดการความลับ หรือการกำหนดค่าสภาพแวดล้อมแบบถาวร) ทุกการรีสตาร์ทและปรับใช้ใหม่ต้องส่งค่าที่เก็บไว้เดียวกัน:

# Once, not per start: generate the secret and keep it.
BLOCKSCOUT_SESSION_SECRET="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')"

docker run --rm -p 8000:8000 \
  -v blockscout-mcp-sessions:/data \
  -e BLOCKSCOUT_SESSION_SECRET="$BLOCKSCOUT_SESSION_SECRET" \
  -e BLOCKSCOUT_SESSION_DB_PATH=/data/sessions.db \
  -e BLOCKSCOUT_PRO_API_KEY=proapi_your_key_here \
  ghcr.io/blockscout/mcp-server:latest python -m blockscout_mcp_server --http --http-host 0.0.0.0

การปรับใช้ส่วนใหญ่ไม่จำเป็นต้องใช้สิ่งเหล่านี้: ปล่อยให้ BLOCKSCOUT_SESSION_SECRET ไม่ได้ตั้งค่า (ค่าเริ่มต้น) และไม่ต้องใช้วอลุ่ม การสูญเสียวอลุ่มหรือการหมุนความลับจะทำให้ตัวระบุเซสชันที่ใช้งานอยู่ไม่ถูกต้อง โดยการออกแบบ; การเปิดเผยถูกจำกัดด้วย TTL ที่กำหนดไว้ การสร้างความลับใหม่แบบอินไลน์ทุกครั้งที่ docker run เป็นรูปแบบการหมุนโดยไม่ได้ตั้งใจ — มันล้างตัวระบุที่ใช้งานอยู่ทั้งหมดในการรีสตาร์ทแต่ละครั้งแม้ว่าวอลุ่มฐานข้อมูลจะยังอยู่ ดังนั้นอย่าฝังคำสั่งการสร้างลงในคำสั่งเริ่มต้น การกู้คืนสำเนาฐานข้อมูลที่เก่ากว่าจะฟื้นคืนงบประมาณที่บันทึกไว้ — หลังจากการกู้คืนทางประวัติ ให้หมุนความลับเว้นแต่จะตั้งใจไว้ ปุ่มปรับแต่งที่ไม่บังคับ: BLOCKSCOUT_SESSION_MCP_MAX_CALLS และ BLOCKSCOUT_SESSION_REST_MAX_CALLS (เพดานการเรียกต่อพื้นผิวเหนือตัวนับต่อตัวระบุที่ใช้ร่วมกันหนึ่งตัว; ทั้งคู่ค่าเริ่มต้น 5; 0 ปิดการเข้าถึงที่วัดบนพื้นผิวนั้นในขณะที่ปล่อยให้การออกตัวระบุและการนำทาง get_chains_list เปิดอยู่), BLOCKSCOUT_SESSION_TTL_SECONDS (ค่าเริ่มต้น 900) และ BLOCKSCOUT_SESSION_SWEEP_INTERVAL_SECONDS (ความถี่ในการล้างแถวเซสชันที่หมดอายุ; ค่าเริ่มต้น: หนึ่งครั้งต่อ TTL)

โหมด Stdio: โหมด stdio เริ่มต้นออกแบบมาสำหรับใช้กับโฮสต์/ไคลเอ็นต์ MCP (เช่น Claude Desktop, Cursor) และไม่สมเหตุสมผลที่จะรันโดยตรงกับ Docker โดยไม่มีไคลเอ็นต์ MCP จัดการการสื่อสาร

การทดสอบกับ Claude Desktop

ใช้ MCP bundle เพื่อทดสอบเซิร์ฟเวอร์กับ Claude Desktop

  1. สร้าง bundle ตามคำแนะนำใน mcpb/README.md
  2. เปิด Claude Desktop
  3. ดับเบิลคลิกเพื่อเปิดไฟล์ blockscout-mcp-dev.mcpb เพื่อติดตั้ง bundle โดยอัตโนมัติ
  4. กำหนดค่า URL ของ Blockscout MCP Server เมื่อได้รับพร้อมต์ (ค่าเริ่มต้น: http://127.0.0.1:8000/mcp)

ความเป็นส่วนตัวและการวัดข้อมูลทางไกลแบบไม่ระบุตัวตน

เพื่อช่วยเราปรับปรุง Blockscout MCP Server อินสแตนซ์ที่ชุมชนดำเนินการจะเก็บข้อมูลการใช้งานแบบไม่ระบุตัวตนโดยค่าเริ่มต้น ซึ่งช่วยให้เราเข้าใจว่าเครื่องมือใดได้รับความนิยมมากที่สุดและเป็นแนวทางในการพัฒนาของเรา

สิ่งที่เราเก็บ:

  • ชื่อของเครื่องมือที่ถูกเรียก (เช่น get_block_number)
  • พารามิเตอร์ที่ให้กับเครื่องมือ (พารามิเตอร์ session_id ถูกปกปิดเป็นตัวยึดตำแหน่งก่อนการส่ง)
  • เวอร์ชันของ Blockscout MCP Server ที่ใช้
  • แฮชทางเดียวที่ไม่สามารถย้อนกลับได้ (SHA-256) ของคีย์ PRO API ที่ใช้ในการอนุญาตคำขอ เมื่อมีคีย์ นี่เป็นเพียงลายนิ้วมือที่ได้มา — ตัวคีย์เองไม่ถูกส่งและไม่สามารถกู้คืนจากแฮชได้

สิ่งที่เราไม่เก็บ:

  • เราไม่เก็บข้อมูลส่วนบุคคลใดๆ ที่อยู่ IP (เซิร์ฟเวอร์กลางใช้ IP ของผู้ส่งสำหรับระบุตำแหน่งทางภูมิศาสตร์ผ่าน Mixpanel แล้วทิ้งทันที) หรือความลับและคีย์ส่วนตัวเอง โดยเฉพาะคีย์ PRO API ไม่ถูกส่ง — เฉพาะลายนิ้วมือทางเดียวที่ไม่สามารถย้อนกลับได้ตามที่อธิบายข้างต้น ซึ่งไม่สามารถกู้คืนคีย์จากลายนิ้วมือนั้นได้

วิธีเลือกไม่ใช้

คุณสามารถปิดใช้งานฟีเจอร์นี้ได้ตลอดเวลาโดยตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:

export BLOCKSCOUT_DISABLE_COMMUNITY_TELEMETRY=true

สัญญาอนุญาต

License: Blockscout Software Licence

โปรเจกต์นี้อยู่ภายใต้ Blockscout Software Licence ดูไฟล์ LICENSE สำหรับข้อกำหนดฉบับเต็ม