DeFi策略服务器

一个用于管理多链DeFi金库和构建复杂策略的协议服务器,支持安全钱包管理和交易模拟。

  • by FactorDAO
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FactorDAO/factor-mcp

使用说明

因子MCP服务器

MCP(模型上下文协议)服务器,使AI工具能够与EVM链上的因子协议库进行交互。

特性

  • 68 MCP工具 实现完整的保险库管理
  • 多链支持:Arbitrum One、Base、以太坊主网
  • 安全钱包管理:Foundry密钥库(Web3 V3)+AES-256-GCM加密
  • 模拟模式:执行前预览交易
  • 战略建设:使用构建块编写DeFi策略
  • 铸造集成:分叉模拟、错误解码、伪造脚本

操作模式

标准MCP

默认模式。服务器作为本地进程运行,通过stdin/stdout进行通信,并在工具调用之间维护全局状态(活动链、钱包、环境)。使用 factor_set_chain 切换链条和 factor_wallet_setup 配置钱包。

无状态(用于MCP网关集成)

专为多租户网关设计,其中许多用户共享一个服务器进程。没有全局状态发生突变——每个工具调用都有自己的 chainId 和 environment 参数。

使用环境变量启用:

STATELESS_MODE=true node dist/index.js

或设置 STATELESS_MODE=true 在过程环境中。

无状态模式的主要区别:

行为 stdio模式 无状态模式
链条选择 factor_set_chain 改变全球状态 chainId 每次工具调用的参数
环境 通过config/env-var设置一次 environment 每次工具调用的参数
钱包 写操作需要 不需要-- sendTransaction 返回未签名的调用数据
气体估算 根据RPC运行 跳过(返回零估算)
津贴检查 在创建保险库之前检查 跳过(赞助处理审批)
客户端缓存 Singleton PublicClient 每条链 每次请求新客户端(并发安全)
模拟模式 可配置 始终为真

它在内部是如何工作的:

  • ConfigManager (in src/config/index.ts)使用Node.js AsyncLocalStorage 存储每个请求的上下文(chainId, environment).
  • 在 server.ts,每 CallToolRequest 提取物 chainId 和 environment 从工具参数中提取并封装处理程序 configManager.runWithContext(ctx, execute).
  • 所有配置getter(getChain(), getChainId(), getRpcUrl(), getEnvironment())阅读自 AsyncLocalStorage 首先,仅在stdio模式下回退到全局配置。
  • 国家变异决策者(setChain(), setRpcUrl())引入无状态模式以防止全局突变。
  • sendTransaction() 在 src/wallet/signer.ts 返回a calldata 对象({ to, data, value, chainId })而不是签名和广播。
  • factor_create_vault 接受a ownerAddress 参数(在无状态中是必需的),用于设置保管库所有者,而不需要本地钱包。通过 feeReceiverAddress 当费用收入必须转到其他地址时。
  • getClient() 在 src/sdk/client.ts 创造新鲜 PublicClient 在无状态模式下执行每次调用,而不是使用全局缓存,确保不同链的并发请求不会冲突。

快速开始

单线安装

curl -sSL https://raw.githubusercontent.com/FactorDAO/factor-mcp/main/install.sh | bash

这将:

  • 安装Rust(如果不存在)
  • 安装铸造厂(铸造、砧座、锻造)
  • 克隆和构建因子MCP
  • 创建 factor-mcp 命令

手动安装

git clone https://github.com/FactorDAO/factor-mcp.git
cd factor-mcp
npm install
npm run build

配置

服务器使用存储在以下位置的JSON配置 ~/.factor-mcp/config.json:

{
  "alchemyApiKey": "your_api_key",
  "defaultChain": "ARBITRUM_ONE",
  "simulationMode": false,
  "logLevel": "info",
  "activeWallet": "default"
}

环境变量可以覆盖JSON配置:

  • ALCHEMY_API_KEY -用于RPC访问的Alchemy API密钥
  • DEFAULT_CHAIN -默认链(ARBITRUM_ONE、BASE、MAINNET)
  • STATELESS_MODE -设置为 true 用于无状态/网关模式(按请求 chainId 和 environment)
  • FACTOR_ENVIRONMENT - production, staging,或 testing
  • SIMULATION_MODE -设置为 true 用于干运行模式
  • LOG_LEVEL -日志记录级别(调试、信息、警告、错误)
  • FACTOR_ARTIFACTS_DIR -将生成的伪造脚本持久化到此目录(在Docker/临时环境中很有用)

跑步

# Direct execution
npm start

# Or with environment variables
ALCHEMY_API_KEY=xxx npm start

Claude代码集成

添加到您的Claude代码配置中(~/.config/claude-code/config.json 或MCP设置):

{
  "mcpServers": {
    "factor": {
      "command": "node",
      "args": ["/path/to/factor-mcp/dist/index.js"],
      "env": {
        "ALCHEMY_API_KEY": "your_api_key"
      }
    }
  }
}

工具参考

配置(5个工具)

工具 说明
factor_set_chain 设置活动链(ARBITRUM_ONE、BASE、MAINNET)
factor_set_rpc 配置自定义RPC终结点
factor_get_config 获取当前配置
factor_wallet_setup 导入/生成带有可选加密功能的钱包
factor_get_address_book 获取当前链的SDK地址簿(Pro适配器)

保险库操作(14个工具)

工具 说明
factor_vault_templates 准备好使用vault参数(创建vault时先调用)
factor_create_vault 部署新的Studio Pro保管库
factor_get_owned_vaults 列出某个地址拥有的保管库
factor_get_vault_info 获取详细的保险库信息
factor_get_shares 获取用户份额、总供应量、每股价格
factor_get_executions 通过解码的调用获取vault执行历史记录
factor_preview_deposit 预览存款(只读)
factor_deposit 执行存款(自动批准代币)
factor_preview_withdraw 预览提款(只读)
factor_withdraw 执行提款(赎回股份)
factor_execute_manager 作为保管库管理员执行DeFi策略
factor_get_factory_addresses 从工厂获取白名单资产/适配器
factor_validate_vault_config 部署前验证vault配置
factor_add_adapter 将管理器适配器添加到vault

保险库管理(12个工具)

工具 说明
factor_set_deposit_fee 设定存款手续费(基点)
factor_set_withdraw_fee 设定提款费(基点)
factor_set_performance_fee 设定绩效费(基点)
factor_set_management_fee 设定年度管理费(基点)
factor_charge_performance_fee 收取应计绩效费
factor_set_fee_receiver 设置收款人地址
factor_set_max_cap 设置最高存款上限
factor_set_max_debt_ratio 设置最大债务比率
factor_set_price_deviation_allowance 设置价格偏差容差
factor_add_vault_manager 添加经理地址
factor_remove_vault_manager 删除经理地址
factor_set_risk_manager 设置风险经理地址

贷款操作(4种工具)

工具 说明
factor_lend_supply 向Aave、化合物V3、Morpho、筒仓V2供应资产
factor_lend_withdraw 提取供应资产
factor_lend_borrow 以抵押品为抵押借入资产
factor_lend_repay 偿还借入资产

交换操作(4个工具)

工具 说明
factor_swap Uniswap V3精确输入交换(指定花费多少)
factor_swap_exact_output Uniswap V3精确输出交换(指定接收多少)
factor_swap_openocean OpenOcean DEX聚合器交换
factor_swap_pendle Pendle PT/YT代币互换

LP操作(4个工具)

工具 说明
factor_lp_create_position 建立集中流动性头寸
factor_lp_add_liquidity 为现有头寸增加流动性
factor_lp_remove_liquidity 从头寸中移除流动性
factor_lp_collect_fees 收取累计交易费

产量操作(1个工具)

工具 说明
factor_pendle_lp Pendle LP(添加/删除流动性,收取费用)

闪借(1个工具)

工具 说明
factor_flashloan 执行快速贷款策略(Aave、Morpho)

令牌和注册表(3个工具)

工具 说明
factor_give_approval 批准ERC20代币用于支出
factor_get_lending_tokens 查找借贷代币(aTokens、债务代币)
factor_add_vault_token 使用会计功能将资产/债务令牌添加到保管库

战略构建(1个工具)

工具 说明
factor_list_adapters 列出可用的协议适配器(30+)

交易工具(2个工具)

工具 说明
factor_preview_transaction 预览含天然气估算的tx
factor_get_transaction_status 通过哈希检查tx状态

简介与战略(6个工具)

工具 说明
factor_save_profile 保存用户资料(需要钱包签名)
factor_get_profile 按地址获取用户配置文件(只读)
factor_save_strategy 保存或更新保管库策略(需要钱包签名)
factor_delete_strategy 删除已保存的策略(需要钱包签名)
factor_get_strategy 通过哈希获取策略(只读)
factor_get_strategies 获取链上所有者的所有策略(只读)

铸造工具(5个工具)

工具 说明
factor_check_foundry 检查铸造厂安装
factor_cast_call 执行只读合约调用
factor_simulate_transaction 在分叉网络上进行模拟
factor_decode_error 解码合同错误数据
factor_run_forge_script 运行Solidity锻造脚本

安全

钱包存储

钱包支持两个后端:

  • MCP因子 (默认): ~/.factor-mcp/wallets/ --AES-256-GCM加密,PBKDF2密钥推导(100k迭代)
  • 铸造钥匙库: ~/.foundry/keystores/ --Web3秘密存储V3格式,兼容cast/geth

最佳实践

  1. 始终对生产钱包使用加密
  2. 使用模拟模式进行测试 (simulationMode: true)
  3. 切勿提交钱包文件或API密钥

Docker 部署

# Build image
docker build -t factor-mcp .

# Run with docker-compose
docker-compose up -d

发展

# Install dependencies
npm install

# Type checking
npm run typecheck

# Build
npm run build

# Run in dev mode
npm run dev

# Run tests
npm test

SDK覆盖路线图

此路线图跟踪MCP服务器对 @factordao/sdk-studio 包裹。标记的项目 [x] 在MCP中实施,标记项目 [ ] SDK功能尚未公开。


配置和钱包

  • [x] 设置活动链(ARBITRUM_ONE、BASE、MAINNET)
  • [x] 设置自定义RPC终结点
  • [x] 获取当前配置(链、RPC、钱包、模拟模式)
  • [x] 从私钥导入钱包
  • [x] 钱包生成(新随机)
  • [x] Foundry密钥库存储(Web3 V3格式)
  • [x] 因子MCP加密存储(AES-256-GCM)
  • [x] 使用现有的Foundry密钥库
  • [x] 获取SDK地址簿(Pro适配器地址)

Vault创建和模板

  • [x] 部署新的Factor Pro保险库(factor_create_vault)
  • [x] 带有现成参数的Vault模板(factor_vault_templates)
  • [x] 可借出的保险库模板(已预设)
  • [x] 可借出的保险库模板(复合V3预设)
  • [x] 可借出的保险库模板(Morpho预设)
  • [x] 从工厂自动检测会计适配器
  • [x] 部署前验证vault配置(factor_validate_vault_config)
  • [x] 获取白名单工厂地址(factor_get_factory_addresses)
  • [x] 不可变保险库选项
  • [x] 可配置的费用、上限、债务比率、冷却时间、可升级性

保险库查询

  • [x] 拥有保险库(factor_get_owned_vaults)
  • [x] 获取保险库信息——资产、费用、管理者、适配器(factor_get_vault_info)
  • [x] 获取用户份额、总供应量、每股价格(factor_get_shares)
  • [x] 获取解码调用的执行历史记录(factor_get_executions)
  • [x] 预存--预期份额(factor_preview_deposit)
  • [x] 预览提款——预期资产(factor_preview_withdraw)
  • []检查资产是否为有效存款资产(isDepositAsset)
  • []检查资产是否有效提取资产(isWithdrawAsset)
  • []获取资产会计适配器(getAssetAccounting)
  • []获取债务会计适配器(getDebtAccounting)
  • []估算原始提款预期金额(estimateRawWithdrawExpectedAmount)
  • []Alchemy的美元余额明细(balanceUsd)

保险库存款和取款

  • [x] 存入ERC20代币(factor_deposit)
  • [x] 提取/赎回股份(factor_withdraw)
  • []存款原生代币--ETH(depositNative)
  • []在一次交易中存入并执行策略(depositAssetAndExecute)
  • []带有执行块的原始提款(rawWithdraw)

保险库费用管理

  • [x] 设定存款手续费(factor_set_deposit_fee)
  • [x] 设定提款费用(factor_set_withdraw_fee)
  • [x] 设定表演费(factor_set_performance_fee)
  • [x] 设置管理费(factor_set_management_fee)
  • [x] 收取演出费(factor_charge_performance_fee)
  • [x] 设置费用接收人(factor_set_fee_receiver)

保险库风险和访问管理

  • [x] 设置最高存款上限(factor_set_max_cap)
  • [x] 设置最大债务比率(factor_set_max_debt_ratio)
  • [x] 设定价格偏差容差(factor_set_price_deviation_allowance)
  • [x] 添加保管库管理器(factor_add_vault_manager)
  • [x] 删除保管库管理器(factor_remove_vault_manager)
  • [x] 设置风险经理(factor_set_risk_manager)

Vault策略配置

  • []制定公共战略(setPublicStrategy)
  • []删除公共策略(removePublicStrategy)
  • []执行公共战略(executePublicStrategy)
  • []设置存款策略(setDepositStrategy)
  • []删除存款策略(removeDepositStrategy)

保险库模拟

  • []模拟存款(simulateDeposit)
  • []模拟收费绩效费(simulateChargePerformanceFee)

令牌和批准

  • [x] ERC20代币批准(factor_give_approval)
  • [x] 获取借贷代币——aTokens、债务代币、基础代币(factor_get_lending_tokens)
  • [x] 将资产/债务令牌添加到保管库(factor_add_vault_token)
  • []ERC2612许可证/无气批准(permit 适配器)

贷款-Aave V3

  • [x] 供应/全部供应/按百分比供应
  • [x] 撤回/全部撤回
  • [x] 借用
  • [x] 偿还/偿还全部

贷款——复合V3

  • [x] 供应/供应全部
  • [x] 撤回/全部撤回
  • [x] 借用
  • [x] 偿还/偿还全部
  • []领取奖励(claimRewards)

贷款--Morpho

  • [x] 供应(贷款)
  • [x] 作为抵押品供应
  • [x] 提款(贷款+抵押品)
  • [x] 借用
  • [x] 偿还/偿还全部

贷款——Silo V2

  • [x] 供应
  • [x] 提款
  • [x] 借用
  • [x] 还款

DEX--Uniswap V3

  • [x] 精确输入单交换(factor_swap)
  • [x] 交换所有余额
  • [x] 按百分比交换
  • [x] 可配置的收费等级(100、500、3000、10000)
  • [x] 可配置滑动
  • [x] 精确输出单交换(factor_swap_exact_output)
  • [x] 精确输出单体,完全平衡(factor_swap_exact_output InMax“全部”)

DEX-OpenOcean

  • [x] 聚合掉期(factor_swap_openocean)

DEX--悬挂式PT/YT

  • [x] 令牌到PT交换
  • [x] 代币到YT的交换
  • [x] PT到代币交换
  • [x] YT到代币交换

DEX--水

  • []Aqua DEX掉期(基础)

LP-Uniswap V3

  • [x] 建立集中流动性头寸
  • [x] 为现有头寸增加流动性
  • [x] 移除流动性(金额或“全部”)
  • [x] 收取累计费用
  • []按百分比删除流动性(removeByPercentage)

LP——卡米洛特V3

  • [x] 建立集中流动性头寸
  • [x] 增加流动性
  • [x] 消除流动性
  • [x] 收取费用
  • []按百分比删除流动性(removeByPercentage)

LP——机场

  • [x] 建立集中流动性头寸
  • [x] 增加流动性
  • [x] 消除流动性
  • [x] 收取费用

产量——Pendle LP

  • [x] 为Pendle市场增加流动性
  • [x] 消除流动性
  • [x] 收取费用/奖励

紧急贷款

  • [x] 具有内部战略步骤的快速贷款
  • [x] Morpho闪借与内部战略步骤
  • []平衡器闪借(balancerFL)

策略生成器

  • [x] 通过以下方式执行战略 executeByManager
  • [x] 列出可用适配器(factor_list_adapters)
  • [x] 将策略保存到Stats API(factor_save_strategy)
  • [x] 从Stats API中删除策略(factor_delete_strategy)
  • [x] 通过哈希获取策略(factor_get_strategy)
  • [x] 按所有者获取策略(factor_get_strategies)
  • [x] 将配置文件保存到Stats API(factor_save_profile)
  • [x] 从Stats API获取配置文件(factor_get_profile)
  • []将策略导出为calldata(export)
  • []导出策略为JSON(exportToJson)
  • []克隆策略(clone)
  • []逐步调试策略(debugFromBlocks)
  • []估计用户影响(estimate / estimateFromBlocks)
  • []战略概述(summary)
  • []猜测令牌状态更改(guessTokenState)

公用事业适配器

  • []在地址之间转移令牌(transfer 适配器)
  • []退还灰尘金额(refund 适配器)
  • []本地令牌打包/解包(native 适配器)
  • []ERC721/NFT操作(erc721 适配器)
  • []利用保险库操作(leverageVault 适配器)
  • []利用战略建设(leverageStrategy 适配器)
  • []存款政策管理(depositPolicy 适配器)
  • []Gelato自动化设置(gelato 适配器)
  • []Chainlink直接报价查询(chainlink 适配器)

适配器发现和元数据

  • [x] 按链列出适配器(factor_list_adapters)
  • []跨适配器获取用户组合信息(getUserInfo)
  • []获得构建块/协议的市场(getMarkets)
  • []通过输入令牌获取市场(getMarketByInToken)
  • []通过输入令牌获取协议(getProtocolsByInToken)
  • []获取支持的输入令牌(getInTokens)
  • []获取适配器元数据(getMetadata / getMetadataByBuildingBlock)
  • []获取所有构建块类型(getBuildingBlocks)

增强系统

  • []添加令牌以增强白名单(addBoostTokenWhitelist)
  • []从boost白名单中删除令牌(removeBoostTokenWhitelist)
  • []存款保险库奖励(depositRewardForVaultBN)
  • []兑换升级奖励(redeemBoostRewards)
  • []兑换所有奖励(redeemBoostRewardAll)
  • []获取增强奖励代币(getBoostRewardTokens)
  • []获得用户获得的增强代币(boostEarnedTokensByUser)
  • []获取奖励数据(rewardData)
  • []获得持续时间奖励(getRewardForDuration)

磅秤系统

  • []获取Scale保险库(getVaults)
  • []获取缩放保险库详细信息(getVaultDetail)
  • []获取用户比例位置(getUserVaults)
  • []获取用户活动余额(activeBalance)
  • []获取总有效供应量(totalActiveSupply)
  • []获取Scale奖励代币(getScaleRewardTokens)
  • []兑换等级奖励(redeemScaleRewards)
  • []兑换奖励+扩大奖励组合(redeemBoostAndScaleRewards)
  • []按仪表投票(vote)
  • []删除投票(unvote)
  • []获取用户/保管库投票
  • []索赔等级奖励(claimRewards)
  • []获取Scale市场数据(getMarketData)
  • []获取历史数据(getHistoricalData)

贿赂制度

  • []制造贿赂(addBribe)
  • []索要贿赂(claimBribe)
  • []获取贿赂信息(getBribe)
  • []收取所有贿赂(getAllBribes)

交易与调试

  • [x] 使用天然气估算预览交易(factor_preview_transaction)
  • [x] 检查交易状态(factor_get_transaction_status)
  • [x] 检查铸造厂安装(factor_check_foundry)
  • [x] 通过以下方式进行只读合同调用 cast (factor_cast_call)
  • [x] 通过以下方式在分叉网络上进行模拟 anvil (factor_simulate_transaction)
  • [x] 解码合同错误(factor_decode_error)
  • [x] 运行Solidity锻造脚本(factor_run_forge_script)
  • [x] 模拟的平衡覆盖
  • [x] 使用自动生成的Forge脚本的模拟提示

Pro适配器可用性

仅 _pro MCP服务器使用适配器。路线图中不包括未部署的适配器。

借贷

适配器 Arb Prod Arb测试 基础Prod 基础测试
Aave ✅ ✅ ✅ ✅
化合物V3 ✅ ✅ ✅ ✅
复合V3市场 ✅ ✅ ✅ ✅
Morpho - - ✅ ✅
Morpho市场✅ ✅
筒仓V1 ✅ ✅ - ✅
筒仓V2 - ✅ - -
思洛V2市场 - ✅ - -

去中心化交易所

适配器 Arb Prod Arb测试 基础Prod 基础测试
Uniswap ✅ ✅ ✅ ✅
OpenOcean ✅ ✅ ✅ ✅
浮动PY(PT/YT掉期) ✅ ✅ ✅ ✅
彭德尔PY市场 ✅ ✅ ✅ ✅
水 - -

唱片

适配器 Arb Prod Arb测试 基础Prod 基础测试
Uniswap V3 LP - ✅ - ✅
卡米洛特V3 LP✅ - -
机场LP - -

产量

适配器 Arb Prod Arb测试 基础Prod 基础测试
吊坠 ✅ ✅ - ✅

紧急贷款

适配器 Arb Prod Arb测试 基础Prod 基础测试
平衡器FL ✅ ✅ ✅ ✅
Morpho FL✅

会计

适配器 Arb Prod Arb测试 基础Prod 基础测试
链式会计 ✅ ✅ ✅ ✅
链式挂钩会计 ✅ ✅ ✅ ✅
Aave会计 ✅ ✅ ✅ ✅
Pendle会计 - ✅ - ✅
潘德尔PY会计 ✅ - ✅ -
复合V3抵押品会计 ✅ ✅ - ✅
复合V3债务会计 ✅ ✅ - ✅
Silo V2抵押品会计 - ✅ - -
Silo V2债务会计 - ✅ - -

基础设施

适配器 Arb Prod Arb测试 基础Prod 基础测试
适配器管理 ✅ ✅ ✅ ✅
资产/债务 ✅ ✅ ✅ ✅
存款政策 ✅ - - ✅
冰淇淋 ✅ ✅ ✅ ✅
增强 ✅ ✅ ✅ ✅

备注:以太坊主网没有部署专业适配器(测试中只有工厂+链会计)。

覆盖范围摘要

类别 已实施 总计 覆盖范围
配置和钱包 9 9 100%
Vault创建和模板 10 10 100%
保险库查询 6 12 50%
金库存款和取款 2 5 40%
保险库费用管理 6 6 100%
保险库风险和访问 6 6 100%
保险库策略配置 0 5 0%
保险库模拟 0 2 0%
令牌和批准 3 4 75%
贷款(Aave、Compound、Morpho、Silo) 16 17 94%
DEX掉期 12 13 92%
LP运营 12 14 86%
收益率(待定) 3 3 100%
紧急贷款 2 3 67%
战略构建者 8 14 57%
实用工具适配器 0 9 0%
适配器发现 1 8 13%
增压系统 0 9 0%
比例系统 0 14 0%
贿赂制度 0 4 0%
事务与调试 9 9 100%
总计 ~99 ~176 ~56%

许可证

麻省理工学院