项目简介
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)进行交互,包括发送交易(需用户签名)。
安装步骤
- 确保您的环境中已安装 Node.js (22+版本) 和 pnpm。
node -v # 确保版本 >= 22 pnpm -v # 检查 pnpm 是否已安装 - 克隆仓库到本地:
git clone https://github.com/EmberAGI/arbitrum-vibekit.git cd arbitrum-vibekit - 安装项目依赖:
pnpm install - 配置环境变量:根据您想运行的示例(如 '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通信。
基本使用方法
- 根据上述步骤完成安装和环境变量配置。
- 选择并启动一个MCP服务器示例,例如运行 'lending-agent-no-wallet' 示例服务器:
服务器启动后会监听配置的端口(默认为 3001)。pnpm ts-node typescript/examples/lending-agent-no-wallet/src/index.ts - 使用支持MCP协议的客户端(如定制应用或某些IDE)连接到运行中的服务器,配置好服务器的URL和传输协议(如 SSE 'http://localhost:3001')。
- 通过客户端调用服务器暴露的工具。例如,连接到 'lending-agent-no-wallet' 服务器后,客户端可以发现并调用名为 'askLendingAgent' 的工具,向其发送包含用户指令和用户钱包地址的请求:
服务器(Agent)会处理该请求,可能调用内部的 'getUserPositions' MCP工具,然后返回包含结果或下一步指示的MCP响应。{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "askLendingAgent", "arguments": { "instruction": "What are my current lending positions?", "userAddress": "0x..." // 您的钱包地址 } } }
注意: 示例中的Agent通常需要一个钱包地址来查询链上数据或生成交易计划。对于实际执行链上交易,Agent生成的交易计划(作为 Artifact 返回)需要客户端/用户端进行签名和广播。'swapping-agent' 示例包含了在服务器端进行签名的逻辑(不推荐用于生产环境),而 'swapping-agent-no-wallet' 和 'lending-agent-no-wallet' 示例则将交易计划返回给客户端,让客户端处理签名和发送,这种模式更安全。
信息
分类
开发者工具