返回市场
MCP区块链服务器

MCP区块链服务器

作者:zhangzhongnan92810 星标更新:2025-03-05

项目介绍

MCP 区块链服务器及DApp

一个安全系统,使AI助手能够与区块链智能合约进行交互,同时确保用户完全控制其私钥和交易签名。

概述

该项目解决了AI与区块链集成中的关键挑战:允许AI助手读取区块链数据并准备交易,同时确保用户对交易签名和私钥拥有独家控制权。

该系统包括:

  1. MCP服务器:一个模型上下文协议服务器,将区块链操作暴露为可以由AI助手使用的工具。
  2. Web DApp:一个React应用程序,提供连接钱包和签署交易的用户界面。
  3. 数据库:PostgreSQL数据库用于存储用户、API密钥和交易记录。
  4. 缓存:Redis用于缓存频繁访问的数据。

功能

MCP服务器功能

  • 区块链数据访问:读取余额、合约状态和其他链上数据。
  • 交易准备:创建供用户批准的未签名交易。
  • 多链支持:适用于Ethereum、Polygon及其他兼容EVM的链。
  • 智能合约交互:从支持网络上的已验证智能合约中读取。
  • 安全优先设计:私钥永远不会离开用户的钱包。

Web DApp功能

  • 钱包集成:连接MetaMask及其他Web3钱包。
  • 交易审查:清晰的UI以在签署前审查交易详情。
  • 交易签名:使用连接的钱包签署交易。
  • 交易跟踪:监控提交的交易状态。
  • 移动设备兼容性:响应式设计适用于所有设备。

安全原则

  1. 私钥隔离:密钥永远不会离开用户的钱包。
  2. 交易验证:清晰的UI以审查交易详情。
  3. API认证:安全的API密钥管理。
  4. 速率限制:防止滥用。
  5. 输入验证:清理所有输入。
  6. 审计日志:追踪所有操作。
  7. 仅HTTPS:安全通信。
  8. 内容安全策略:防止XSS。

交易流程

  1. AI助手通过MCP服务器请求交易。
  2. MCP服务器准备带有UUID的未签名交易。
  3. MCP服务器返回交易URL给AI助手。
  4. AI助手向用户提供URL。
  5. 用户在浏览器中打开URL。
  6. 用户连接钱包并审查交易详情。
  7. 用户使用他们的钱包批准并签署交易。
  8. Web DApp将签署的交易提交到区块链。
  9. 更新并跟踪交易状态。

开始使用

先决条件

  • Node.js(v18或更高)
  • npm或yarn
  • PostgreSQL
  • Redis(可选,用于缓存)
  • Infura API密钥(用于区块链访问)
  • Etherscan API密钥(用于合约ABI)

安装

  1. 克隆仓库:
git clone https://github.com/zhangzhongnan928/mcp-blockchain-server.git
cd mcp-blockchain-server
  1. 安装依赖项:
npm install
# 或
yarn install
  1. 设置环境变量: 在根目录创建一个.env文件(或从.env.example复制):
cp .env.example .env
# 使用您的配置编辑.env
  1. 设置数据库:
# 详细的安装和配置指南,请参阅Database Setup Guide
# docs/database-setup.md

# 创建PostgreSQL数据库
createdb mcp_blockchain

# 运行数据库迁移
npm run db:migrate
# 或
yarn db:migrate

请参阅Database Setup Guide获取详细的安装和配置PostgreSQL指南。

  1. 启动服务器:
npm run dev
# 或
yarn dev

使用Docker Compose

快速启动使用Docker:

# 创建包含所需环境变量的.env文件
cp .env.example .env
# 使用您的配置编辑.env

# 启动服务
docker-compose up -d

这将启动:

  • PostgreSQL数据库
  • Redis缓存
  • MCP服务器
  • Web DApp

开发

服务器结构

  • src/mcp:MCP服务器实现
  • src/services:核心业务逻辑服务
  • src/utils:实用函数
  • src/index.ts:主入口点

Web DApp结构

  • web/src/components:React组件
  • web/src/hooks:自定义React钩子
  • web/src/services:API服务
  • web/src/pages:页面组件

使用MCP服务器

MCP服务器暴露了几个可以被AI助手使用的工具:

  • get-chains:获取支持的区块链网络列表
  • get-balance:获取地址的账户余额
  • read-contract:从智能合约中读取数据
  • prepare-transaction:准备供用户批准的未签名交易
  • get-transaction-status:获取交易的当前状态

工具使用示例

// 使用get-balance工具的示例
const result = await callTool("get-b_alance", {
  chainId: "1",
  address: "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
});

故障排除

如果遇到依赖问题:

# MCP SDK问题 - 直接从GitHub安装
npm uninstall @modelcontextprotocol/sdk
npm install modelcontextprotocol/typescript-sdk

对于数据库连接问题,请参阅Database Setup Guide

许可证

本项目根据MIT许可证发布 - 详情请参阅LICENSE文件。