Bankless链上数据
STDIOOfficial通过Bankless API交互区块链数据
通过Bankless API交互区块链数据
MCP (Model Context Protocol) server for blockchain data interaction through the Bankless API.
The Bankless Onchain MCP Server provides a framework for interacting with on-chain data via the Bankless API. It implements the Model Context Protocol (MCP) to allow AI models to access blockchain state and event data in a structured way.
https://github.com/user-attachments/assets/95732dff-ae5f-45a6-928a-1ae17c0ddf9d
The server provides the following onchain data operations:
Read Contract State (read_contract
): Read state from smart contracts on various blockchain networks.
Get Proxy (get_proxy
): Retrieve proxy implementation contract addresses.
Get ABI (get_abi
): Fetch the ABI (Application Binary Interface) for a contract.
Get Source (get_source
): Retrieve the source code for a verified contract.
Get Events (get_events
): Fetch event logs for a contract based on topics.
Build Event Topic (build_event_topic
): Generate an event topic signature from event name and argument types.
Get Transaction History (get_transaction_history
): Retrieve transaction history for a user address.
Get Transaction Info (get_transaction_info
): Get detailed information about a specific transaction.
read_contract
network
(string, required): The blockchain network (e.g., "ethereum", "polygon")contract
(string, required): The contract addressmethod
(string, required): The contract method to callinputs
(array, required): Input parameters for the method call, each containing:
type
(string): The type of the input parameter (e.g., "address", "uint256")value
(any): The value of the input parameteroutputs
(array, required): Expected output types, each containing:
type
(string): The expected output typeget_proxy
network
(string, required): The blockchain network (e.g., "ethereum", "base")contract
(string, required): The contract addressget_events
network
(string, required): The blockchain network (e.g., "ethereum", "base")addresses
(array, required): List of contract addresses to filter eventstopic
(string, required): Primary topic to filter eventsoptionalTopics
(array, optional): Optional additional topics (can include null values)build_event_topic
network
(string, required): The blockchain network (e.g., "ethereum", "base")name
(string, required): Event name (e.g., "Transfer(address,address,uint256)")arguments
(array, required): Event arguments types, each containing:
type
(string): The argument type (e.g., "address", "uint256")npm install @bankless/onchain-mcp
Before using the server, set your Bankless API token. For details on how to obtain your Bankless API token, head to https://docs.bankless.com/bankless-api/other-services/onchain-mcp
export BANKLESS_API_TOKEN=your_api_token_here
The server can be run directly from the command line:
npx @bankless/onchain-mcp
This server implements the Model Context Protocol (MCP), which allows it to be used as a tool provider for compatible AI models. Here are some example calls for each tool:
// 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
To integrate this server with AI applications that support MCP, add the following to your app's server configuration:
{ "mcpServers": { "bankless": { "command": "npx", "args": [ "@bankless/onchain-mcp" ], "env": { "BANKLESS_API_TOKEN": "your_api_token_here" } } } }
The server provides specific error types for different scenarios:
BanklessValidationError
: Invalid input parametersBanklessAuthenticationError
: API token issuesBanklessResourceNotFoundError
: Requested resource not foundBanklessRateLimitError
: API rate limit exceededIn order to guide an LLM model to use the Bankless Onchain MCP Server, the following prompts can be used:
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.
MIT