区块链服务接口

Sei MCP服务器为Sei区块链提供统一接口,支持AI助手和代理进行区块链状态读取、智能合约交互、代币转移等操作。

  • by abdussalam-mustapha
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 abdussalam-mustapha/sei-mcp-server

使用说明

SEI MCP服务器

Sei模型上下文协议(Sei MCP)服务器为Sei区块链提供区块链服务。 该服务器使AI助手和代理能够通过统一的界面进行交互。

📋 目录

🔭 概述

Sei MCP EVM服务器利用模型上下文协议为AI代理提供区块链服务。 它支持广泛的服务,包括:

  • 读取区块链状态(余额、交易、区块等)
  • 与智能合约交互
  • 转移代币(原生、ERC20、ERC721、ERC1155)
  • 查询令牌元数据和余额

所有服务都通过MCP工具和资源的一致接口公开,使AI代理能够轻松地 发现和使用区块链功能。

✨ 特性

区块链数据访问

  • 链信息 包括blockNumber、chainId和RPC
  • 块数据 按数字、哈希值或最新值访问
  • 交易详情 以及带有解码日志的收据
  • 地址余额 适用于本地令牌和所有令牌标准

代币服务

  • ERC20文件

    • 获取令牌元数据(名称、符号、小数、供应)
    • 检查代币余额
    • 在地址之间转移令牌
    • 批准支出津贴
  • NFT(ERC721)

    • 获取集合和令牌元数据
    • 验证令牌所有权
    • 在地址之间传输NFT
    • 检索令牌URI并统计持有量
  • 多代币(ERC1155)

    • 获取令牌余额和元数据
    • 按数量转移代币
    • 访问令牌URI

智能合约交互

  • 读取合同状态 通过视图/纯函数
  • 写服务 使用私钥签名
  • 合同验证 区别于EOA
  • 事件日志 检索和过滤

全面的交易支持

  • 本地代币转移 跨所有支持的网络
  • 天然气估算 用于交易计划
  • 交易状态 以及收据信息
  • 错误处理 带有描述性信息

🌐 支持的网络

  • 六 主网
  • 测试网络
  • Sei Devnet

🛠️ 先决条件

  • 包子 1.0.0或更高版本
  • Node.js 18.0.0或更高版本(如果不使用Bun)

📦 安装

# Clone the repository
git clone https://github.com/sei-protocol/sei-mcp-server.git
cd sei-mcp-server

# Install dependencies with Bun
bun install

# Or with npm
npm install

⚙️ 服务器配置

服务器使用以下默认配置:

  • 默认链ID: 1329 (无主网)
  • 服务器端口: 3001
  • 服务器主机:0.0.0.0(可从任何网络接口访问)

这些值在应用程序中是硬编码的。如果需要修改它们,可以编辑以下文件:

  • 对于链条配置: src/core/chains.ts
  • 对于服务器配置: src/server/http-server.ts

环境变量

服务器支持从环境变量加载配置:

  • PRIVATE_KEY: 必需 用于任何涉及签署交易的区块链操作的私钥(例如,转移代币、与修改状态的智能合约交互)。这就是 唯一方法 用于提供私钥。如果在调用交易签名工具时未设置此环境变量,则该工具将返回一条错误消息,指示AI助手要求用户设置 PRIVATE_KEY 环境变量,然后重新启动MCP服务器。

创建一个 .env 根目录中的文件基于 .env.example 模板:

# .env.example
PRIVATE_KEY=your_private_key_here

安全警告:永远不要将实际的私钥提交给版本控制。这 .env 文件包含在 .gitignore 默认情况下。

🚀 用法

与Claude Desktop一起使用

  1. 安装 克劳德桌面.
  2. 前往“设置”>“开发人员”>“编辑配置”。
  3. 将以下内容添加到 mcpServers 章节:
{
  "mcpServers": {
    "sei": {
      "command": "npx",
      "args": [
        "-y",
        "@sei-protocol/sei-mcp-server"
      ],
      "env": {
        "PRIVATE_KEY": "your_private_key_here"
      }
    }
  }
}
  1. 保存配置文件并重新启动Claude。 完成后,Claude将添加新的提示、资源和工具。 要访问提示,请单击左下角的“+”按钮。然后“从sei添加”。

从那里,单击“从sei添加”,例如,添加“my_wallet_address”提示。 克劳德现在应该援引 get_address_from_private_key 工具并返回钱包地址。 有时,模型可能无法理解提示或随机问题。尝试添加更多上下文或重试 广泛的思维选择。

点击“搜索和工具”按钮,然后点击“sei”,可以找到所有可用的工具。

使用npx(无需安装)

您可以使用npx直接运行Sei MCP服务器,而无需安装:

# Run the server in stdio mode (for CLI tools)
npx @sei-protocol/sei-mcp-server

# Run the server in HTTP mode (for web applications)
npx @sei-protocol/sei-mcp-server --http

在本地运行服务器

使用stdio启动服务器(用于嵌入CLI工具):

# Start the stdio server
bun start

# Development mode with auto-reload
bun dev

或者使用SSE启动web应用程序的HTTP服务器:

# Start the HTTP server
bun start:http

# Development mode with auto-reload
bun dev:http

连接到服务器

使用任何兼容MCP的客户端连接到此MCP服务器。对于测试和调试,您可以使用 MCP检查员.

从游标连接

要从Cursor连接到MCP服务器:

  1. 打开光标并转到设置(左下角的齿轮图标)
  2. 向下滚动到“MCP”部分
  3. 点击“添加新的全局MCP服务器”
  4. 在mcp.json选项卡中添加以下配置
{
  "mcpServers": {
    "sei-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@sei-protocol/sei-mcp-server"
      ],
      "env": {
        "PRIVATE_KEY": "your_private_key_here"
      }
    }
  }
}

示例:带有SSE的HTTP模式

如果您正在开发web应用程序,并希望使用服务器发送事件(SSE)连接到HTTP服务器,则可以使用此配置:

{
  "mcpServers": {
    "sei-mcp-sse": {
      "url": "http://localhost:3001/sse"
    }
  }
}

这直接连接到HTTP服务器的SSE端点,这对以下方面很有用:

  • 需要从浏览器连接到MCP服务器的Web应用程序
  • 运行本地命令不理想的环境
  • 在多个用户或应用程序之间共享单个MCP服务器实例

要使用此配置,请执行以下操作:

  1. 创建一个 .cursor 项目根目录中的目录(如果不存在)
  2. 将上述JSON另存为 mcp.json 在 .cursor 目录
  3. 重新启动Cursor或打开项目
  4. Cursor将检测配置并提供启用服务器的功能

示例:在游标中使用MCP服务器

配置MCP服务器后 mcp.json,您可以在Cursor中轻松使用它。以下是一个示例工作流:

  1. 在项目中创建一个新的JavaScript/TypeScript文件:
// blockchain-example.js
async function main() {
  try {
    // Get Sei balance for an address
    console.log("Getting Sei balance for 0x1234...");
    
    // When using with Cursor, you can simply ask Cursor to:
    // "Check the Sei balance of 0x1234 on mainnet"
    // Or "Transfer 0.1 Sei from my wallet to 0x1234"
    
    // Cursor will use the MCP server to execute these operations 
    // without requiring any additional code from you
    
    // This is the power of the MCP integration - your AI assistant
    // can directly interact with blockchain data and operations
  } catch (error) {
    console.error("Error:", error.message);
  }
}

main();
  1. 在Cursor中打开文件后,您可以要求Cursor执行以下操作:

    • “检查主网上0x1234的当前Sei余额”
    • “给我看Sei的最新街区”
    • “检查0x1234…是否是合约地址”
  2. Cursor将使用MCP服务器执行这些操作,并在对话中直接返回结果。

MCP服务器处理所有区块链通信,同时允许Cursor通过自然语言理解和执行区块链相关任务。

使用Claude CLI连接

如果您使用的是Claude CLI,则只需两个命令即可连接到MCP服务器:

# Add the MCP server
claude mcp add evm-mcp-server npx @sei-protocol/sei-mcp-server

# Start Claude with the MCP server enabled
claude

示例:获取代币余额

// Example of using the MCP client to check a token balance
const mcp = new McpClient("http://localhost:3000");

const result = await mcp.invokeTool("get-token-balance", {
  tokenAddress: "0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1", // USDC on Sei
  ownerAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 
  network: "sei"
});

console.log(result);
// {
//   tokenAddress: "0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1",
//   owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
//   network: "sei",
//   raw: "1000000000",
//   formatted: "1000",
//   symbol: "USDC",
//   decimals: 6
// }

📚 api参考

工具

服务器为代理提供以下MCP工具。

代币服务

工具名称 描述 关键参数
get-token-info 获取ERC20令牌元数据 tokenAddress (地址), network
get-token-balance 检查ERC20代币余额 tokenAddress (地址), ownerAddress (地址), network
transfer-token 转移ERC20代币 tokenAddress (地址), toAddress (地址), amount, network
approve-token-spending 批准代币津贴 tokenAddress (地址), spenderAddress (地址), amount, network
get-nft-info 获取NFT元数据 tokenAddress (地址), tokenId, network
check-nft-ownership 验证NFT所有权 tokenAddress (地址), tokenId, ownerAddress (地址), network
get-nft-balance 统计拥有的NFT tokenAddress (地址), ownerAddress (地址), network
get-erc1155-token-uri 获取ERC1155元数据 tokenAddress (地址), tokenId, network
get-erc1155-balance 检查ERC1155余额 tokenAddress (地址), tokenId, ownerAddress (地址), network
transfer-erc1155 转移ERC1155代币 tokenAddress (地址), tokenId, amount, toAddress (地址), network

区块链服务

工具名称 描述 关键参数
get-chain-info 获取网络信息 network
get-balance 获取本地代币余额 address (地址), network
transfer-sei 发送本地令牌 to (地址), amount, network
get-transaction 获取交易详情 txHash, network
read-contract 读取智能合约状态 contractAddress (地址), abi, functionName, args (可选), network
write-contract 写入智能合约 contractAddress (地址), abi, functionName, args (可选), network
is-contract 检查地址是否为合同 address (地址), network

资源

服务器通过以下MCP资源URI公开区块链数据。

区块链资源

资源URI模式 描述
evm://{network}/chain 特定网络的链信息
evm://chain Sei主网链信息
evm://{network}/block/{blockNumber} 按数字块数据
evm://{network}/block/latest 最新区块数据
evm://{network}/address/{address}/balance 本地代币余额
evm://{network}/tx/{txHash} 交易详情
evm://{network}/tx/{txHash}/receipt 带有日志的交易收据

代币资源

资源URI模式 描述
evm://{network}/token/{tokenAddress} ERC20代币信息
evm://{network}/token/{tokenAddress}/balanceOf/{address} ERC20代币余额
evm://{network}/nft/{tokenAddress}/{tokenId} NFT(ERC721)令牌信息
evm://{network}/nft/{tokenAddress}/{tokenId}/isOwnedBy/{address} NFT所有权验证
evm://{network}/erc1155/{tokenAddress}/{tokenId}/uri ERC1155令牌URI。
evm://{network}/erc1155/{tokenAddress}/{tokenId}/balanceOf/{address} ERC1155代币余额

🔒 安全考虑

  • 私钥 仅用于交易签名,服务器从不存储
  • 考虑为生产使用实施额外的身份验证机制
  • Use HTTPS for the HTTP server in production environments
  • 实施限速以防止滥用
  • 对于高价值服务,考虑添加确认步骤

📁 项目结构

mcp-evm-server/
├── src/
│   ├── index.ts                # Main stdio server entry point
│   ├── server/                 # Server-related files
│   │   ├── http-server.ts      # HTTP server with SSE
│   │   └── server.ts           # General server setup
│   ├── core/
│   │   ├── chains.ts           # Chain definitions and utilities
│   │   ├── config.ts           # MCP configuration
│   │   ├── resources.ts        # MCP resources implementation
│   │   ├── tools.ts            # MCP tools implementation
│   │   ├── prompts.ts          # MCP prompts implementation
│   │   └── services/           # Core blockchain services
│   │       ├── index.ts        # Operation exports
│   │       ├── balance.ts      # Balance services
│   │       ├── transfer.ts     # Token transfer services
│   │       ├── utils.ts        # Utility functions
│   │       ├── tokens.ts       # Token metadata services
│   │       ├── contracts.ts    # Contract interactions
│   │       ├── transactions.ts # Transaction services
│   │       └── blocks.ts       # Block services
│   │       └── clients.ts      # RPC client utilities
├── package.json
├── tsconfig.json
└── README.md

🛠️ 发展

要修改或扩展服务器,请执行以下操作:

  1. 在相应的文件中添加新服务 src/core/services/
  2. 在中注册新工具 src/core/tools.ts
  3. 在中注册新资源 src/core/resources.ts
  4. 在中添加新的网络支持 src/core/chains.ts
  5. 要更改服务器配置,请在中编辑硬编码值 src/server/http-server.ts

📄 许可证

该项目根据以下条款获得许可 MIT许可证.