
Onchain Mcp
将无银行链上API引入MCP
Bankless 链上 MCP 服务器
用于通过 Bankless API 进行区块链数据交互的 MCP(模型上下文协议)服务器。
概述
Bankless 链上 MCP 服务器提供了一个框架,通过 Bankless API 与链上数据进行交互。它实现了模型上下文协议(MCP),允许 AI 模型以结构化的方式访问区块链状态和事件数据。
https://github.com/user-attachments/assets/95732dff-ae5f-45a6-928a-1ae17c0ddf9d
功能
该服务器提供以下链上数据操作:
合约操作
-
读取合约状态 (
read_contract
): 从各种区块链网络的智能合约中读取状态。- 参数: 网络, 合约地址, 方法, 输入, 输出
- 返回: 带类型值的合约调用结果
-
获取代理 (
get_proxy
): 检索代理实现合约地址。- 参数: 网络, 合约地址
- 返回: 实现合约地址
-
获取 ABI (
get_abi
): 获取合约的 ABI(应用二进制接口)。- 参数: 网络, 合约地址
- 返回: JSON 格式的合约 ABI
-
获取源代码 (
get_source
): 检索已验证合约的源代码。- 参数: 网络, 合约地址
- 返回: 源代码、ABI、编译器版本和其他合约元数据
事件操作
-
获取事件 (
get_events
): 根据主题获取合约的事件日志。- 参数: 网络, 地址, 主题, 可选主题
- 返回: 过滤后的事件日志
-
构建事件主题 (
build_event_topic
): 根据事件名称和参数类型生成事件主题签名。- 参数: 网络, 事件名称, 参数类型
- 返回: 事件主题哈希
交易操作
-
获取交易历史 (
get_transaction_history
): 检索用户地址的交易历史。- 参数: 网络, 用户地址, 可选合约, 可选方法 ID, 可选起始区块, 包含数据标志
- 返回: 包含哈希、数据、网络和时间戳的交易列表
-
获取交易信息 (
get_transaction_info
): 获取特定交易的详细信息。- 参数: 网络, 交易哈希
- 返回: 交易详情,包括区块号、时间戳、发送/接收地址、值、gas 信息、状态和收据数据
工具
-
read_contract
- 从区块链读取合约状态
- 输入:
network
(字符串, 必需): 区块链网络 (如 "ethereum", "polygon")contract
(字符串, 必需): 合约地址method
(字符串, 必需): 要调用的合约方法inputs
(数组, 必需): 方法调用的输入参数,每个包含:type
(字符串): 输入参数类型 (如 "address", "uint256")value
(任意): 输入参数的值
outputs
(数组, 必需): 预期输出类型,每个包含:type
(字符串): 预期输出类型
- 返回合约调用结果数组
-
get_proxy
- 获取给定网络和合约的代理地址
- 输入:
network
(字符串, 必需): 区块链网络 (如 "ethereum", "base")contract
(字符串, 必需): 合约地址
- 返回代理合约的实现地址
-
get_events
- 根据过滤条件获取网络的事件日志
- 输入:
network
(字符串, 必需): 区块链网络 (如 "ethereum", "base")addresses
(数组, 必需): 过滤事件的合约地址列表topic
(字符串, 必需): 过滤事件的主要主题optionalTopics
(数组, 可选): 可选附加主题 (可包含 null 值)
- 返回包含匹配过滤条件的事件日志的对象
-
build_event_topic
- 根据事件名称和参数构建事件主题签名
- 输入:
network
(字符串, 必需): 区块链网络 (如 "ethereum", "base")name
(字符串, 必需): 事件名称 (如 "Transfer(address,address,uint256)")arguments
(数组, 必需): 事件参数类型,每个包含:type
(字符串): 参数类型 (如 "address", "uint256")
- 返回包含事件签名 keccak256 哈希的字符串
安装
bash
npm install @bankless/onchain-mcp
使用
环境设置
在使用服务器之前,设置您的 Bankless API 令牌。有关如何获取 Bankless API 令牌的详细信息,请访问 https://docs.bankless.com/bankless-api/other-services/onchain-mcp
bash
export BANKLESS_API_TOKEN=your_api_token_here
运行服务器
可以直接从命令行运行服务器:
bash
npx @bankless/onchain-mcp
与 LLM 工具一起使用
该服务器实现了模型上下文协议(MCP),可将其用作兼容 AI 模型的工具提供程序。以下是每个工具的示例调用:
read_contract
javascript
// 示例调用
{
"name": "read_contract",
"arguments": {
"network": "ethereum",
"contract": "0x1234...",
"method": "balanceOf",
"inputs": [
{ "type": "address", "value": "0xabcd..." }
],
"outputs": [
{ "type": "uint256" }
]
}
}
// 示例响应
[
{
"value": "1000000000000000000",
"type": "uint256"
}
]
get_proxy
javascript
// 示例调用
{
"name": "get_proxy",
"arguments": {
"network": "ethereum",
"contract": "0x1234..."
}
}
// 示例响应
{
"implementation": "0xefgh..."
}
get_events
javascript
// 示例调用
{
"name": "get_events",
"arguments": {
"network": "ethereum",
"addresses": ["0x1234..."],
"topic": "0xabcd...",
"optionalTopics": ["0xef01...", null]
}
}
// 示例响应
{
"result": [
{
"removed": false,
"logIndex": 5,
"transactionIndex": 2,
"transactionHash": "0x123...",
"blockHash": "0xabc...",
"blockNumber": 12345678,
"address": "0x1234...",
"data": "0x...",
"topics": ["0xabcd...", "0xef01...", "0x..."]
}
]
}
build_event_topic
javascript
// 示例调用
{
"name": "build_event_topic",
"arguments": {
"network": "ethereum",
"name": "Transfer(address,address,uint256)",
"arguments": [
{ "type": "address" },
{ "type": "address" },
{ "type": "uint256" }
]
}
}
// 示例响应
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
开发
从源代码构建
bash
# 克隆仓库
git clone https://github.com/Bankless/onchain-mcp.git
cd onchain-mcp
# 安装依赖
npm install
# 构建项目
npm run build
调试模式
bash
npm run debug
与 AI 模型集成
要将此服务器与支持 MCP 的 AI 应用程序集成,请将以下内容添加到应用程序的服务器配置中:
json
{
"mcpServers": {
"bankless": {
"command": "npx",
"args": [
"@bankless/onchain-mcp"
],
"env": {
"BANKLESS_API_TOKEN": "your_api_token_here"
}
}
}
}
错误处理
服务器为不同场景提供特定的错误类型:
BanklessValidationError
: 无效的输入参数BanklessAuthenticationError
: API 令牌问题BanklessResourceNotFoundError
: 请求的资源未找到BanklessRateLimitError
: API 速率限制超过
提示技巧
为了引导 LLM 模型使用 Bankless 链上 MCP 服务器,可以使用以下提示:
角色:
• 你是 Kompanion,一名区块链专家和 EVM 侦探。
• 你擅长使用工具和资源导航和分析智能合约。
KOMPANION 如何处理代理合约:
• 如果合约是代理,调用你的“get_proxy”工具获取实现合约。
• 如果失败,尝试在代理合约上调用“implementation”方法。
• 如果也失败,尝试调用“_implementation”函数。
• 获取实现地址后,调用“get_contract_source”获取其源代码。
• 读取或修改合约状态时,在代理合约地址上调用实现函数(而不是直接在实现上调用)。
KOMPANION 如何处理事件:
• 获取相关合约的 ABI 和源代码
• 从 ABI 中的事件类型构建与问题相关的事件主题
• 使用“get_event_logs”工具获取合约的日志
KOMPANION 的规则:
• 不要以“好的”、“当然”、“可以”或“没问题”开头任何回答。
• 保持直接、技术性的风格。不要添加对话修饰。
• 如果用户的问题与智能合约无关,不要获取任何合约。
• 如果导航合约,用项目符号解释每个步骤。
• 迭代解决任务,将其分解为步骤。
• 使用项目符号表示步骤列表。
• 永远不要假设合约的功能。始终使用工具读取合约状态来验证示例。
• 在回答之前,考虑哪些工具可以帮助你收集更好的信息。
• 根据你的发现,在最终答案中包含尽可能多的相关信息。
KOMPANION 如何使用工具:
• 你可以通过使用工具和函数获取合约源代码、ABI 和读取合约数据。
• 始终验证源代码或 ABI 以理解合约,而不是做出假设。
• 如果需要读取合约状态,获取其 ABI(特别是当源代码很长时)。
最终指令:
• 提供最佳、简洁的答案回应用户的请求。如果是指令而不是问题,直接遵循它。
• 使用你的工具收集必要的澄清或数据。
• 提供清晰、直接的响应,并在最后总结你所做的操作(如何导航合约)。
许可证
MIT

100ms Spl Token Sniper Mcp
一个高度专业化的狙击MCP,适用于具有Raydium池的Solana SPLP代币
Adamik Server
Adamik MCP
Agentipy Mcp
启用与 Solana 区块链的交互,通过 AgentiPy 框架执行诸如查询账户数据、发送交易和与智能合约交互等操作。
Cryptowallet Evm
通过 ethers.js v5 启用与以太坊和 EVM 兼容区块链的直接交互,用于钱包创建、余额查询、交易发送和智能合约操作。