pactfi-mcp
建筑
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ PactFi MCP │────▶│ UluWalletMCP │────▶│ UluBroadcastMCP │
│ (this repo) │ │ (signing) │ │ (submit to net) │
└──────┬───────┘ └──────────────┘ └──────────────────┘
│
├── PactFi REST API (api.pact.fi) ── pool discovery & metadata
└── Algorand algod (algonode.cloud) ── on-chain state & tx params不依赖PactFi SDK -通过PactFi REST API查询池,使用常数乘积AMM数学在本地计算报价,并使用直接构建事务 algosdk.
工具
| 工具 | 说明 |
|---|---|
get_pools | 列出具有可选过滤器(符号、已验证、池类型)的PactFi池 |
get_pool | 通过应用ID获取详细的池信息(链上储量+API元数据) |
get_quote | 根据预期产出、费用、价格影响和滑点计算掉期报价 |
swap_txn | 构建未签名的掉期交易组 |
add_liquidity_txn | 构建未签名的添加流动性交易组 |
remove_liquidity_txn | 构建未签名的移除流动性交易组 |
工具详情
get_tools
列出PactFi流动性池。支持按令牌符号、验证状态、池类型(CONST或STABLE)和结果限制进行过滤。
get_pool
获取与API元数据(代币名称、价格、TVL、APR)合并的链上池状态(准备金A/B、LP供应、费用配置)。
get_quote
在不建立交易的情况下模拟掉期。提供 fromToken/toToken 符号和a amount。可选择指定 poolAppId 以针对特定池,或让它自动发现该对的最高TVL池。
swap_txn
构建一个双事务原子组:
- 向池托管存款(付款或资产转移)
- 应用程序调用
SWAP+最低接收量
add_liquidity_txn
构建一个3事务原子组:
- 将主要资产存入池托管
- 将二级资产存入池托管
- 应用程序调用
ADDLIQ+最小LP令牌
remove_liquidity_txn
构建一个双事务原子组:
- 将LP代币存入池托管
- 应用程序调用
REMLIQ+最低小学+最低中学
代理流示例
Agent: get_quote(fromToken="ALGO", toToken="USDC", amount="100")
→ { expectedOutput: "8.52", minimumReceived: "8.47", poolAppId: 1073557308, ... }
Agent: swap_txn(fromToken="ALGO", toToken="USDC", amount="100", sender="ABC...")
→ { transactions: ["base64...", "base64..."], details: { ... } }
Agent: UluWalletMCP.sign_transactions(signerId="my-signer", transactions=["base64..."])
→ { signedTransactions: ["base64..."] }
Agent: UluBroadcastMCP.broadcast_transactions(network="algorand-mainnet", txns=["base64..."])
→ { txIds: ["TXID..."] }设置
npm install用法
node index.js添加到客户端
{
"mcpServers": {
"pactfi-mcp": {
"command": "node",
"args": ["/absolute/path/to/pactfi-mcp/index.js"]
}
}
}数据源
- PactFi REST API (
api.pact.fi):池列表、令牌元数据、TVL、卷、APR - Algorand算法 (
mainnet-api.algonode.cloud):链上池状态、事务参数
支持的池类型
- 恒定产品 (
CONST):标准x·y=k AMM池——完全支持报价和交易 - NFT常数产品:与常量产品相同的AMM数学——完全支持
- Stableswap (
STABLE):曲线式稳定水池--get_quote返回近似结果(带警告);swap_txn拒绝稳定交换池,因为常数乘积数学无法为链上执行生成正确的最小接收值
已知限制
- Stableswap交易:不支持为稳定掉期池建立掉期/流动性交易。链上合约使用StableSwap(曲线)不变量,这需要与常数乘积不同的数学运算。
get_quote提供带有警告的近似值。 - 池发现:PactFi API用于代币元数据(符号、小数、价格)。对于特定的池,请使用
appId参数直接。
许可证
麻省理工学院
