返回市场
光链-MCP

光链-MCP

作者:lifinance4 星标更新:2025-09-04

项目介绍

LiFi MCP Server

⚠️ 重要安全免责声明 ⚠️

切勿使用此工具与你的主钱包密钥存储或包含大量资金的钱包!

此工具仅用于测试和实验目的。由于以下原因,可能会导致资金损失:

  • 软件错误或安全漏洞
  • 交易错误或配置错误
  • 网络问题或智能合约失败

LI.FI 或此工具的开发者不对因使用此免费开源软件而导致的资金损失负责。

仅使用测试钱包自行承担风险。

此 MCP 服务器通过集成 LI.FI API,利用模型上下文协议(MCP)提供跨多个流动性池和桥梁的跨链交换功能。

模型上下文协议(MCP)是一种用于AI模型集成的协议,允许AI模型访问外部工具和数据源。

组件

工具

代币信息

  • get-tokens

    • 获取所有LI.FI服务已知的代币
    • 参数:chains, chainTypes, minPriceUSD
  • get-token

    • 获取特定代币的详细信息
    • 参数:chain(必需),token(必需)

链信息

  • get-chains

    • 获取所有支持链的信息
    • 参数:chainTypes
  • get-chain-by-id

    • 根据数字ID查找链
    • 参数:id(必需)
  • get-chain-by-name

    • 根据名称、键或ID(不区分大小写)查找链
    • 参数:name(必需)

跨链操作

  • get-quote

    • 获取代币转移(跨链或同链)的报价
    • 参数:fromChain, toChain, fromToken, toToken, fromAddress, fromAmount
  • get-status

    • 检查跨链转移的状态
    • 参数:txHash(必需),bridge, fromChain, toChain
  • get-connections

    • 返回链之间的所有可能连接
    • 参数:fromChain, toChain, fromToken, toToken, chainTypes
  • get-tools

    • 获取可用的桥梁和交易所
    • 参数:chains

钱包操作

  • get-wallet-address

    • 获取加载私钥的以太坊地址
  • get-native-token-balance

    • 获取钱包的原生代币余额
    • 参数:rpcUrl(必需),address(必需)
  • get-token-balance

    • 获取钱包中特定ERC20代币的余额
    • 参数:rpcUrl, tokenAddress, walletAddress
  • get-allowance

    • 检查特定花费者对ERC20代币的授权额度
    • 参数:rpcUrl, tokenAddress, ownerAddress, spenderAddress

交易操作(需要密钥存储)

注意: 当服务器使用 --keystore 标志启动时,这些工具才可用。

  • execute-quote

    • 使用存储的私钥执行报价交易
    • 参数:rpcUrl, transactionRequest
  • approve-token

    • 批准特定数量的ERC20代币由另一个地址花费
    • 参数:rpcUrl, tokenAddress, spenderAddress, amount
  • transfer-token

    • 将ERC20代币转移到另一个地址
    • 参数:rpcUrl, tokenAddress, to, amount
  • transfer-native

    • 将原生加密货币转移到另一个地址
    • 参数:rpcUrl, to, amount

快速开始

安装

使用 Go 安装

go install github.com/lifinance/lifi-mcp@latest

使用方法

启动 MCP 服务器:

lifi-mcp

带有密钥存储以实现交易功能:

lifi-mcp --keystore <keystore-name> --password <keystore-password>

检查版本:

lifi-mcp --version

作为包使用

你可以在Go项目中导入服务器:

标准输入输出模式

import "github.com/lifinance/lifi-mcp/server"

func main() {
    // 创建一个具有版本的新服务器
    s := server.NewServer("1.0.0")
    
    // 在标准输入输出模式下启动服务器
    if err := s.ServeStdio(); err != nil {
        log.Fatalf("服务器错误:%v", err)
    }
}

进程内模式

对于与mcp-go客户端库一起使用的进程内使用:

import (
    "context"
    "log"
    
    "github.com/mark3labs/mcp-go/client"
    "github.com/mark3labs/mcp-go/client/transport"
    "github.com/lifinance/lifi-mcp/server"
)

func main() {
    // 创建LiFi MCP服务器
    lifiServer := server.NewServer("1.0.0")

    // 使用服务器的MCPServer创建进程内传输
    inProcessTransport := transport.NewInProcessTransport(lifiServer.GetMCPServer())

    // 使用进程内传输创建MCP客户端
    mcpClient := client.NewMCPClient(inProcessTransport)

    // 启动传输
    ctx := context.Background()
    if err := mcpClient.Connect(ctx); err != nil {
        log.Fatalf("连接失败:%v", err)
    }
    defer mcpClient.Close()

    // 初始化客户端
    if err := mcpClient.Initialize(ctx); err != nil {
        log.Fatalf("初始化失败:%v", err)
    }

    // 列出可用工具
    tools, err := mcpClient.ListTools(ctx)
    if err != nil {
        log.Fatalf("列出工具失败:%v", err)
    }

    // 使用工具...
    result, err := mcpClient.CallTool(ctx, "get-chain-by-name", map[string]any{
        "name": "ethereum",
    })
    if err != nil {
        log.Fatalf("调用工具失败:%v", err)
    }
}

钱包管理

服务器将在标准的以太坊密钥存储目录中搜索密钥存储文件:

  • Linux: ~/.ethereum/keystore
  • macOS: ~/Library/Ethereum/keystore
  • Windows: %APPDATA%\Ethereum\keystore

与模型上下文协议的使用

要将此服务器与支持MCP的应用程序集成:

{
  "mcpServers": {
    "lifi": {
      "command": "lifi-mcp",
      "args": []
    }
  }
}

带有密钥存储以实现交易功能:

{
  "mcpServers": {
    "lifi": {
      "command": "lifi-mcp",
      "args": ["--keystore", "your-keystore", "--password", "your-password"]
    }
  }
}

许可证

MIT