使用说明
区块链MCP服务器演示
一个全面的模型上下文协议(MCP)服务器,用于与多个EVM兼容的区块链进行交互。该服务器为区块链数据访问和分析提供工具和资源。
特性
🔗 多链支持
- 以太坊主网 (链ID:1)
- Conflux空间 (链ID:1030)
🛠️ 工具(类似POST的端点)
get_chains-获取支持的区块链网络列表get_rpc_methods-获取支持的RPC方法列表call_rpc-执行任意RPC方法调用get_latest_block-获取链的最新区块号get_transaction-通过哈希获取交易详细信息get_address-获取地址余额和信息get_block-按编号获取块信息
📚 资源(类似GET的端点)
blockchain://transaction/{hash}-获取交易详情(跨链搜索)blockchain://block/{chainId}/{number}-获取块信息blockchain://address/{chainId}/{address}-获取地址信息和余额blockchain://chains-列出所有支持的区块链网络
技术栈
- TypeScript -类型安全开发
- 我知道 -具有出色TypeScript支持的现代以太坊库
- 模型上下文协议(MCP) -标准化AI区块链通信
- 萨德 -运行时类型验证
安装
- 克隆存储库:
git clone <repository-url>
cd blockchain-mcp-server
- 安装依赖项:
npm install
- 构建项目:
npm run build
- 启动服务器:
npm start
使用示例
工具
获得支持的链条
// 获取所有支持的区块链网络
await callTool("get_chains", {});
获取交易信息
// 获取交易信息
await callTool("get_transaction", {
hash: "0x1234567890abcdef...",
chainId: 1 // optional, will search all chains if not provided
});
获取地址信息
// 获取地址信息
await callTool("get_address", {
address: "0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00",
chainId: 1
});
执行RPC调用
// 获取以太坊主网最新区块号
await callTool("call_rpc", {
method: "eth_blockNumber",
params: [],
chainId: 1
});
// 获取地址余额
await callTool("call_rpc", {
method: "eth_getBalance",
params: ["0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00", "latest"],
chainId: 1
});
资源
访问交易数据
// 跨链查询交易 (will search all supported chains)
const txResource = await getResource("blockchain://transaction/0x1234567890abcdef...");
访问块数据
// 获取以太坊主网特定区块
const block = await getResource("blockchain://block/1/19000000");
// 获取Polygon特定区块
const polygonBlock = await getResource("blockchain://block/137/12345678");
访问地址数据
// 获取地址信息
const addressInfo = await getResource("blockchain://address/1/0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00");
访问支持的链
// 获取所有支持的区块链网络
const chains = await getResource("blockchain://chains");
支持的RPC方法
服务器支持以下标准以太坊JSON-RPC方法:
eth_getBalance-获取账户余额eth_getTransactionByHash-按哈希值获取交易eth_getTransactionReceipt-获取交易收据eth_getBlockByNumber-按数字获取块eth_getBlockByHash-按哈希值获取块eth_getTransactionCount-获取帐户随机数eth_getCode-获取合同代码eth_call-执行合同调用eth_estimateGas-估算交易用气eth_gasPrice-获取当前天然气价格eth_blockNumber-获取最新区块编号eth_chainId-获取链IDnet_version-获取网络版本web3_clientVersion-获取客户端版本
api参考
工具
get_chains
返回所有支持的区块链网络的列表。
参数: 无
答复:
[
{
"chainId": 1,
"name": "Ethereum Mainnet",
"symbol": "ETH",
"rpcUrls": [...],
"blockExplorerUrls": [...],
"nativeCurrency": {...}
}
]
get_transaction
获取详细的交易信息。
参数:
hash(string):交易哈希chainId(数字,可选):要搜索的链ID
答复:
{
"hash": "0x...",
"blockNumber": 19000000,
"from": "0x...",
"to": "0x...",
"value": "1.0",
"gasPrice": "0.00002",
"gasUsed": "21000",
"chainId": 1,
"status": 1
}
get_address
获取地址余额和信息。
参数:
address(string):以太坊地址chainId(编号):链ID
答复:
{
"address": "0x...",
"balance": "10.5",
"nonce": 42,
"code": null,
"chainId": 1
}
call_rpc
执行任意RPC方法调用。
参数:
method(string):RPC方法名称params(数组,可选):方法参数chainId(数字,可选):链ID(默认值:1)
答复: 原始RPC响应
错误处理
服务器包括全面的错误处理:
- 网络故障:RPC端点之间的自动故障转移
- 无效参数:使用Zod模式进行输入验证
- 链不可用:链条放下时,操作优雅
- 未找到交易记录:带有明确错误消息的跨链搜索
建筑
src/
├── index.ts # Main MCP server implementation
├── blockchain-service.ts # Blockchain interaction service (using viem)
├── config.ts # Chain configurations and constants
└── types.ts # TypeScript interfaces and schemas
关键组件
- 区块链服务:使用viem客户端管理与多个EVM链的连接
- MCP服务器:按照MCP规范公开工具和资源
- 类型安全:完全支持TypeScript,支持Zod验证和viem的优秀类型
- 多链支持:跨不同网络的无缝交互
为什么是VIEM?
此项目使用 我知道 代替醚有几个优点:
- 更好的TypeScript支持:具有严格类型的原生TypeScript
- 现代API:功能性方法,更好地摇动树木
- 演出:针对速度和捆绑包大小进行了优化
- 可靠性:内置重试逻辑和更好的错误处理
- 经得起未来考验:积极维护尖端功能
测试
您可以使用MCP检查器测试服务器:
npx @modelcontextprotocol/inspector node dist/index.js
配置
服务器使用公共RPC端点自动连接到多个区块链网络。您可以通过修改来自定义RPC终结点 src/config.ts 文件。
添加新链
要添加对新的EVM兼容链的支持,请更新 SUPPORTED_CHAINS 对象在 src/config.ts:
export const SUPPORTED_CHAINS: Record<number, ChainConfig> = {
// ... existing chains
// New chain example
YOUR_CHAIN_ID: {
chainId: YOUR_CHAIN_ID,
name: "Your Chain Name",
symbol: "TOKEN",
rpcUrls: [
"https://rpc.yourchain.com",
"https://backup-rpc.yourchain.com"
],
blockExplorerUrls: ["https://explorer.yourchain.com"],
nativeCurrency: {
name: "Your Token",
symbol: "TOKEN",
decimals: 18
}
}
};
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
如有疑问或问题,请在GitHub存储库上打开问题。