项目简介

Vibekit 是一个多功能的工具包,旨在快速开发去中心化金融(DeFi)智能体。它通过集成链上和链下数据源,支持自主执行代币转移、兑换、借贷等复杂链上操作,并提供了现成的实现和模板。该项目利用 Model Context Protocol (MCP) 标准,将DeFi功能暴露为结构化的工具,供大型语言模型 (LLM) 或其他AI客户端调用。

主要功能点

  • MCP工具实现: 将多种DeFi操作(如兑换、借贷、获取余额/头寸、查询代币)封装为遵循MCP规范的工具。
  • MCP服务器: 提供可运行的MCP服务器实例,用于注册和托管这些DeFi工具。
  • 多种传输协议支持: 仓库中包含了基于Stdio和SSE(Server-Sent Events)的MCP服务器实现示例,方便客户端通过不同方式连接。
  • 智能体框架: 提供构建复杂AI智能体的示例,展示如何使用MCP客户端调用已注册的DeFi工具,并结合LLM处理用户指令和执行链上交易。
  • 链上交互: 集成'viem'等库,支持与以太坊虚拟机(EVM)兼容链(如Arbitrum)进行交互,包括发送交易(需用户签名)。

安装步骤

  1. 确保您的环境中已安装 Node.js (22+版本) 和 pnpm。
    node -v # 确保版本 >= 22
    pnpm -v # 检查 pnpm 是否已安装
  2. 克隆仓库到本地:
    git clone https://github.com/EmberAGI/arbitrum-vibekit.git
    cd arbitrum-vibekit
  3. 安装项目依赖:
    pnpm install
  4. 配置环境变量:根据您想运行的示例(如 'swapping-agent-no-wallet' 或 'lending-agent-no-wallet'),在项目根目录创建 '.env' 文件,并配置必要的环境变量。至少需要:
    • 'MNEMONIC': 用于签名交易的钱包助记词。
    • 'QUICKNODE_SUBDOMAIN' 和 'QUICKNODE_API_KEY': 用于连接区块链节点的 QuickNode API 凭据。
    • 'EMBER_ENDPOINT': (可选)指定连接的 Ember AI GRPC 服务端点,默认为 'grpc.api.emberai.xyz:50051'。
    • 'OPENROUTER_API_KEY': 用于智能体调用外部LLM(如Gemini)处理自然语言指令的 API 密钥。

服务器配置(供MCP客户端连接)

Vibekit 仓库中包含了多个MCP服务器实现示例。其中一种常见的模式是运行一个Agent服务器(例如 'lending-agent-no-wallet' 或 'swapping-agent-no-wallet'),该服务器自身作为一个高级MCP工具对外暴露,并内部调用低级MCP工具(由 'ember-mcp-tool-server' 提供)。

如果您希望连接到例如 'lending-agent-no-wallet' 示例所运行的 MCP 服务器(默认通过 SSE 协议暴露),MCP 客户端需要以下连接信息:

{
  // 服务器的唯一标识名称
  "name": "Lending Agent No Wallet Server",
  // 服务器监听的基础URL
  "url": "http://localhost:3001",
  // 使用的传输协议类型
  "transport": "sse",
  // SSE传输协议需要的具体端点路径
  "endpoints": {
    "sse": "/sse", // 用于建立SSE连接并接收事件
    "messages": "/messages" // 用于POST客户端请求
  }
  // 客户端可以通过 discover/tools 方法发现服务器提供的工具,例如 askLendingAgent
}

注意:上述端口号 '3001' 是示例代码中定义的默认端口,实际运行时可能需要根据环境配置调整。

如果您是使用支持管理本地进程的MCP客户端(如Cursor IDE),您也可以直接配置客户端启动仓库中的MCP服务器进程,例如启动 'lending-agent-no-wallet' 示例作为Stdio传输的服务器:

{
  // 服务器的唯一标识名称
  "name": "Vibekit Lending Agent (Local Stdio)",
  // 用于启动服务器进程的可执行命令
  "command": "npx",
  // 传递给命令的参数,这里是使用 ts-node 运行示例的入口文件
  "args": ["ts-node", "typescript/examples/lending-agent-no-wallet/src/index.ts"],
  // 传递给服务器进程的环境变量
  "env": {
    // 确保包含服务器运行所需的环境变量,例如:
    "MNEMONIC": "...",
    "QUICKNODE_SUBDOMAIN": "...",
    "QUICKNODE_API_KEY": "...",
    "OPENROUTER_API_KEY": "..."
  },
  // 使用的传输协议类型(此配置方式通常默认为 stdio)
  "transport": "stdio"
}

客户端会通过Stdio与启动的进程进行JSON-RPC通信。

基本使用方法

  1. 根据上述步骤完成安装和环境变量配置。
  2. 选择并启动一个MCP服务器示例,例如运行 'lending-agent-no-wallet' 示例服务器:
    pnpm ts-node typescript/examples/lending-agent-no-wallet/src/index.ts
    服务器启动后会监听配置的端口(默认为 3001)。
  3. 使用支持MCP协议的客户端(如定制应用或某些IDE)连接到运行中的服务器,配置好服务器的URL和传输协议(如 SSE 'http://localhost:3001')。
  4. 通过客户端调用服务器暴露的工具。例如,连接到 'lending-agent-no-wallet' 服务器后,客户端可以发现并调用名为 'askLendingAgent' 的工具,向其发送包含用户指令和用户钱包地址的请求:
    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "askLendingAgent",
        "arguments": {
          "instruction": "What are my current lending positions?",
          "userAddress": "0x..." // 您的钱包地址
        }
      }
    }
    服务器(Agent)会处理该请求,可能调用内部的 'getUserPositions' MCP工具,然后返回包含结果或下一步指示的MCP响应。

注意: 示例中的Agent通常需要一个钱包地址来查询链上数据或生成交易计划。对于实际执行链上交易,Agent生成的交易计划(作为 Artifact 返回)需要客户端/用户端进行签名和广播。'swapping-agent' 示例包含了在服务器端进行签名的逻辑(不推荐用于生产环境),而 'swapping-agent-no-wallet' 和 'lending-agent-no-wallet' 示例则将交易计划返回给客户端,让客户端处理签名和发送,这种模式更安全。

信息

分类

开发者工具