Bankless Onchain MCP Server

Official

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides tools for interacting with Ethereum blockchain data, including reading contract state, fetching contract ABIs, retrieving source code, and accessing transaction information.

  • Enables blockchain data interaction on Polygon network, supporting contract state reading, event log retrieval, and transaction history analysis.

Bankless Onchain MCP 服务器

通过Bankless API进行区块链数据交互的MCP(模型上下文协议)服务器。

概述

Bankless Onchain MCP 服务器提供了一个通过 Bankless API 与链上数据交互的框架。它实现了模型上下文协议 (MCP),允许 AI 模型以结构化的方式访问区块链状态和事件数据。

https://github.com/user-attachments/assets/95732dff-ae5f-45a6-928a-1ae17c0ddf9d

特征

服务器提供以下链上数据操作:

合同运营

  • 读取合约状态read_contract ):从各种区块链网络上的智能合约读取状态。
    • 参数:网络、合约地址、方法、输入、输出
    • 返回:带有类型值的合约调用结果
  • 获取代理get_proxy ):检索代理实现合约地址。
    • 参数:网络、合约地址
    • 返回:执行合约地址
  • 获取 ABIget_abi ):获取合约的 ABI(应用程序二进制接口)。
    • 参数:网络、合约地址
    • 返回:JSON格式的合约ABI
  • 获取源代码get_source ):检索已验证合约的源代码。
    • 参数:网络、合约地址
    • 返回:源代码、ABI、编译器版本和其他合约元数据

事件操作

  • 获取事件get_events ):根据主题获取合约的事件日志。
    • 参数:网络、地址、主题、可选主题
    • 返回:过滤后的事件日志
  • 构建事件主题build_event_topic ):根据事件名称和参数类型生成事件主题签名。
    • 参数:网络、事件名称、参数类型
    • 返回:事件主题哈希

事务操作

  • 获取交易历史记录get_transaction_history ):检索用户地址的交易历史记录。
    • 参数:网络、用户地址、可选合约、可选方法ID、可选起始块、包含数据标志
    • 返回:包含哈希、数据、网络和时间戳的交易列表
  • 获取交易信息get_transaction_info ):获取有关特定交易的详细信息。
    • 参数:网络、交易哈希
    • 返回:交易详情,包括区块号、时间戳、发件人/收件人地址、价值、gas 信息、状态和收据数据

工具

  • 读取合同
    • 从区块链读取合约状态
    • 输入:
      • network (字符串,必需):区块链网络(例如“以太坊”,“多边形”)
      • contract (字符串,必需):合约地址
      • method (字符串,必需):要调用的合约方法
      • inputs (数组,必需):方法调用的输入参数,每个参数包含:
        • type (字符串):输入参数的类型(例如,“address”、“uint256”)
        • value (任意):输入参数的值
      • outputs (数组,必需):预期的输出类型,每个类型包含:
        • type (字符串):预期的输出类型
    • 返回合约调用结果数组
  • 获取代理
    • 获取给定网络和合约的代理地址
    • 输入:
      • network (字符串,必需):区块链网络(例如“以太坊”,“基础”)
      • contract (字符串,必需):合约地址
    • 返回代理合约的实现地址
  • 获取事件
    • 获取给定网络和过滤条件的事件日志
    • 输入:
      • network (字符串,必需):区块链网络(例如“以太坊”,“基础”)
      • addresses (数组,必需):用于过滤事件的合约地址列表
      • topic (字符串,必需):过滤事件的主要主题
      • optionalTopics (数组,可选):可选的附加主题(可以包含空值)
    • 返回包含符合过滤条件的事件日志的对象
  • 构建事件主题
    • 根据事件名称和参数构建事件主题签名
    • 输入:
      • network (字符串,必需):区块链网络(例如“以太坊”,“基础”)
      • name (字符串,必需):事件名称(例如,“Transfer(address,address,uint256)”)
      • arguments (数组,必需):事件参数类型,每个包含:
        • type (字符串):参数类型(例如,“address”、“uint256”)
    • 返回包含事件签名的 keccak256 哈希值的字符串

安装

npm install @bankless/onchain-mcp

用法

环境设置

使用服务器前,请设置您的 Bankless API 令牌。有关如何获取 Bankless API 令牌的详细信息,请访问https://docs.bankless.com/bankless-api/other-services/onchain-mcp

export BANKLESS_API_TOKEN=your_api_token_here

运行服务器

可以直接从命令行运行服务器:

npx @bankless/onchain-mcp

与 LLM 工具一起使用

此服务器实现了模型上下文协议 (MCP),因此可以用作兼容 AI 模型的工具提供程序。以下是每个工具的一些示例调用:

读取合同

// Example call { "name": "read_contract", "arguments": { "network": "ethereum", "contract": "0x1234...", "method": "balanceOf", "inputs": [ { "type": "address", "value": "0xabcd..." } ], "outputs": [ { "type": "uint256" } ] } } // Example response [ { "value": "1000000000000000000", "type": "uint256" } ]

获取代理

// Example call { "name": "get_proxy", "arguments": { "network": "ethereum", "contract": "0x1234..." } } // Example response { "implementation": "0xefgh..." }

获取事件

// Example call { "name": "get_events", "arguments": { "network": "ethereum", "addresses": ["0x1234..."], "topic": "0xabcd...", "optionalTopics": ["0xef01...", null] } } // Example response { "result": [ { "removed": false, "logIndex": 5, "transactionIndex": 2, "transactionHash": "0x123...", "blockHash": "0xabc...", "blockNumber": 12345678, "address": "0x1234...", "data": "0x...", "topics": ["0xabcd...", "0xef01...", "0x..."] } ] }

构建事件主题

// Example call { "name": "build_event_topic", "arguments": { "network": "ethereum", "name": "Transfer(address,address,uint256)", "arguments": [ { "type": "address" }, { "type": "address" }, { "type": "uint256" } ] } } // Example response "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"

发展

从源代码构建

# Clone the repository git clone https://github.com/Bankless/onchain-mcp.git cd onchain-mcp # Install dependencies npm install # Build the project npm run build

调试模式

npm run debug

与人工智能模型的集成

要将此服务器与支持 MCP 的 AI 应用程序集成,请将以下内容添加到应用程序的服务器配置中:

{ "mcpServers": { "bankless": { "command": "npx", "args": [ "@bankless/onchain-mcp" ], "env": { "BANKLESS_API_TOKEN": "your_api_token_here" } } } }

错误处理

服务器针对不同的场景提供了特定的错误类型:

  • BanklessValidationError :输入参数无效
  • BanklessAuthenticationError :API 令牌问题
  • BanklessResourceNotFoundError :未找到请求的资源
  • BanklessRateLimitError :超出 API 速率限制

提示技巧

为了指导 LLM 模型使用 Bankless Onchain MCP 服务器,可以使用以下提示:

ROLE: • You are Kompanion, a blockchain expert and EVM sleuth. • You specialize in navigating and analyzing smart contracts using your tools and resources. HOW KOMPANION CAN HANDLE PROXY CONTRACTS: • If a contract is a proxy, call your “get_proxy” tool to fetch the implementation contract. • If that fails, try calling the “implementation” method on the proxy contract. • If that also fails, try calling the “_implementation” function. • After obtaining the implementation address, call “get_contract_source” with that address to fetch its source code. • When reading or modifying the contract state, invoke implementation functions on the proxy contract address (not directly on the implementation). HOW KOMPANION CAN HANDLE EVENTS: • Get the ABI and Source of the relevant contracts • From the event types in the ABI, construct the correct topics for the event relevant to the question • use the "get_event_logs" tool to fetch logs for the contract KOMPANION'S RULES: • Do not begin any response with “Great,” “Certainly,” “Okay,” or “Sure.” • Maintain a direct, technical style. Do not add conversational flourishes. • If the user’s question is unrelated to smart contracts, do not fetch any contracts. • If you navigate contracts, explain each step in bullet points. • Solve tasks iteratively, breaking them into steps. • Use bullet points for lists of steps. • Never assume a contract’s functionality. Always verify with examples using your tools to read the contract state. • Before responding, consider which tools might help you gather better information. • Include as much relevant information as possible in your final answer, depending on your findings. HOW KOMPANION CAN USE TOOLS: • You can fetch contract source codes, ABIs, and read contract data by using your tools and functions. • Always verify the source or ABI to understand the contract rather than making assumptions. • If you need to read contract state, fetch its ABI (especially if the source is lengthy). FINAL INSTRUCTION: • Provide the best possible, concise answer to the user’s request. If it's not an immediate question but an instruction, follow it directly. • Use your tools to gather any necessary clarifications or data. • Offer a clear, direct response and add a summary of what you did (how you navigated the contracts) at the end.

执照

麻省理工学院

You must be authenticated.

A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

实现模型上下文协议,允许 AI 模型访问和交互区块链数据,包括读取合约状态、检索事件以及访问跨各种网络的交易信息。

  1. Overview
    1. Features
      1. Contract Operations
      2. Event Operations
      3. Transaction Operations
    2. Tools
      1. Installation
        1. Usage
          1. Environment Setup
          2. Running the Server
          3. Usage with LLM Tools
        2. Development
          1. Building from Source
          2. Debug Mode
          3. Integration with AI Models
        3. Error Handling
          1. Prompting Tips
            1. License
              ID: uawv4sbvqj