AMM DEX协议服务器

PactFi MCP是Algorand区块链上的自动做市商(AMM)去中心化交易所协议服务器,提供流动性池查询、报价计算和交易构建功能。

  • by NautilusOSS
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 NautilusOSS/PactFiMCP

使用说明

pactfi-mcp

MCP(模型上下文协议)服务器 PactFi AMM DEX在Algorand。部分 UluOS 代理生态系统。

建筑

┌──────────────┐     ┌──────────────┐     ┌──────────────────┐
│  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

构建一个双事务原子组:

  1. 向池托管存款(付款或资产转移)
  2. 应用程序调用 SWAP +最低接收量

add_liquidity_txn

构建一个3事务原子组:

  1. 将主要资产存入池托管
  2. 将二级资产存入池托管
  3. 应用程序调用 ADDLIQ +最小LP令牌

remove_liquidity_txn

构建一个双事务原子组:

  1. 将LP代币存入池托管
  2. 应用程序调用 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 参数直接。

许可证

麻省理工学院