DeFi协议服务器

Saros MCP Server是一个将Saros DeFi SDK功能暴露为AI可访问工具的Model Context Protocol (MCP)服务器,支持流动性池、农场和投资组合分析的自然语言交互。

  • by Pavilion-devs
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Pavilion-devs/saros-mcp-server

使用说明

Saros MCP 服务器

Saros DeFi的模型上下文协议(MCP)服务器 - 将Saros SDK功能作为AI可访问的工具公开

概述

这个项目实现了(或实施了)一个 模型上下文协议(MCP)服务器 该工具封装了Saros DeFi SDK,使AI代理、机器人和仪表板能够通过自然语言或简单的工具调用来与Saros的流动性池、农场和分析工具进行交互。

特点/功能

核心MCP工具

  • get_lp_positions - 获取某个钱包的所有流动性池仓位
  • simulate_rebalance - 根据IL阈值模拟流动性池(LP)再平衡
  • portfolio_analytics - 全面的投资组合指标和风险评估
  • get_farm_positions - 查看耕种位置和可领取的奖励
  • swap_quote - 获取包含价格影响和滑点的兑换报价

演示客户端

  • 测试客户端 - 命令行测试工具
  • Telegram 机器人 - 用于投资组合管理的交互式机器人

快速入门

安装

cd saros-mcp-server
npm install

运行服务器

# Start the MCP server
npm start

# Development mode with auto-reload
npm run dev

测试

# Run the test client
npm test

使用示例

与Claude Desktop一起使用

在您的Claude桌面MCP设置中添加:

{
  "mcpServers": {
    "saros": {
      "command": "node",
      "args": ["/path/to/saros-mcp-server/src/index.js"]
    }
  }
}

然后在克劳德(Claude)那里:

"Show me my LP positions for wallet HqB8Rf76fAwmd4qZpL81yB2SSLFzEgdoPwpWAUJ31ont"

"Analyze my portfolio for wallet HqB8Rf76fAwmd4qZpL81yB2SSLFzEgdoPwpWAUJ31ont"

"Get me a swap quote for 100 tokens from C98A4nkJXhpVZNAZdHUA95RpTF3T4whtQubL3YobiUX9 to EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v in pool 2wUvdZA8ZsY714Y5wUL9fkFmupJGGwzui2N74zqJWgty"

实际工作示例:

包含实际流动性提供(LP)仓位的钱包: HqB8Rf76fAwmd4qZpL81yB2SSLFzEgdoPwpWAUJ31ont (5个空缺职位)

已知的萨洛斯水池:

  • C98/USDC 池: 2wUvdZA8ZsY714Y5wUL9fkFmupJGGwzui2N74zqJWgty

与Telegram机器人一起使用

  1. 通过(某种方式)创建一个机器人 @BotFather(机器人之父)
  2. 复制你的机器人令牌
  3. 设置环境变量:
export BOT_TOKEN="your_telegram_bot_token"
  1. 运行机器人:
node examples/telegram-bot.js
  1. 与您的机器人聊天:
/start
/wallet 5UrM9csUEDBeBqMZTuuZyHRNhbRW4vQ1MgKJDrKU1U2v
/positions
/rebalance 5
/analytics

程序化使用

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "node",
  args: ["src/index.js"],
});

const client = new Client({
  name: "my-client",
  version: "1.0.0",
}, {
  capabilities: {},
});

await client.connect(transport);

// Call tools
const result = await client.callTool({
  name: "get_lp_positions",
  arguments: { wallet: "5UrM9csUEDBeBqMZTuuZyHRNhbRW4vQ1MgKJDrKU1U2v" },
});

console.log(result.content[0].text);

项目结构

saros-mcp-server/
├── src/
│   ├── index.js                 # Main MCP server
│   ├── services/
│   │   ├── pool-service.js      # LP pool operations
│   │   ├── farm-service.js      # Farming operations
│   │   └── analytics-service.js # Analytics & IL calculations
│   └── tools/
│       ├── get-lp-positions.js
│       ├── simulate-rebalance.js
│       ├── portfolio-analytics.js
│       ├── get-farm-positions.js
│       └── swap-quote.js
├── examples/
│   ├── test-client.js           # Test client
│   └── telegram-bot.js          # Telegram bot demo
├── package.json
└── README.md

API 参考文档

获取LP(流动性提供者)仓位

获取某个钱包的所有流动性池仓位。

输入:

{
  "wallet": "string (Solana address)"
}

输出:

Found 2 LP position(s) for wallet: 5UrM9c...

Position 1:
- Pool: 2wUvdZ...
- LP Balance: 150.5
- Token 0: C98A4n...
- Token 1: EPjFWd...

模拟再平衡

基于永久损失阈值模拟再平衡策略。

输入:

{
  "wallet": "string",
  "threshold": "number (0-100)"
}

输出:

Rebalance Simulation for 5UrM9c...

IL Threshold: 5%
Positions Analyzed: 2
Recommendations: 1

1. Pool: 2wUvdZ...
   - Current IL: 6.25%
   - Severity: medium
   - Action: Consider withdrawing - high IL detected

投资组合分析

获取全面的投资组合分析。

输入:

{
  "wallet": "string"
}

输出:

Portfolio Analytics for 5UrM9c...

Overview:
- Total Positions: 2
- Estimated Total Value: $1,250.00
- Average IL: 3.5%

Risk Assessment:
✅ Low Risk - Portfolio is performing well

获取农场位置信息

获取所有耕种/质押仓位。

输入:

{
  "wallet": "string"
}

输出:

Farm Positions for 5UrM9c...

Total Farms: 1

Position 1:
- Farm: FW9hgA...
- LP Token: HVUeNV...
- Staked Amount: 100.0
- Pending Rewards:
  • 50.5 C98

交换报价

获取包含价格影响的交换报价。

输入:

{
  "poolAddress": "string",
  "fromMint": "string",
  "toMint": "string",
  "amount": "number",
  "slippage": "number (optional, default 0.5)"
}

输出:

Swap Quote

Input:
- Pool: 2wUvdZ...
- Amount: 100

Output:
- Expected Output: 150.5
- Minimum Output: 149.75
- Price Impact: 0.15%
- Slippage Tolerance: 0.5%

建筑

MCP服务器层

  • 处理MCP协议通信
  • 通过标准输入输出传输暴露工具
  • 将请求路由到服务层

服务层

  • **PoolService(可译为“池服务”或根据具体上下文译为更具体的名称,如“资源池服务”等)**LP仓位、资金池信息、兑换报价
  • **FarmService(农场服务)**持仓、奖励
  • 分析服务风险价值(IL,这里假设IL代表Value at Risk的缩写,但通常用VaR表示)计算,投资组合指标

SDK 集成

  • 用途 @saros-finance/sdk 用于Solana/Saros交互
  • 为SDK函数添加错误处理包装
  • 将数据格式化为便于AI处理的形式

发展

添加新工具

  1. 在(某个地方/系统中)创建工具处理程序 src/tools/:
export async function myNewTool(args, services) {
  const { param1, param2 } = args;

  // Tool logic here

  return {
    content: [{
      type: "text",
      text: "Result text"
    }]
  };
}
  1. 在……注册 src/index.js:
// In ListToolsRequestSchema handler
{
  name: "my_new_tool",
  description: "Tool description",
  inputSchema: { /* schema */ }
}

// In CallToolRequestSchema handler
case "my_new_tool":
  return await myNewTool(args, this.services);

测试

# Test with example wallet
node examples/test-client.js

# Manual testing
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | node src/index.js

部署

本地部署

npm start

铁路/渲染

  1. 创建新服务
  2. 连接GitHub仓库
  3. 设置构建命令: npm install
  4. 设置启动命令: npm start

Docker(可选)

FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]

路线图

  • [ ] 添加DLMM特定功能(高级订单、动态费用)
  • [ ] 实现实时价格数据推送
  • [ ] 添加交易执行工具
  • [ ] 多钱包管理
  • [ ] 历史绩效追踪
  • [ ] 网页仪表盘用户界面

贡献;做出贡献

欢迎投稿!请:

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 提交更改
  4. 提交一个拉取请求(PR)

许可证

MIT 许可证 - 请参阅 LICENSE 文件

黑客马拉松提交作品

项目: Saros MCP 服务器 类别: SDK使用及开发者工具 黑客马拉松(或编程马拉松): Saros 10万美元黑客马拉松

关键创新

  • Saros DeFi的首个MCP服务器
  • 原生AI投资组合管理
  • 自然语言与DeFi(去中心化金融)的交互
  • 自主交易代理基金会

演示

  • 测试客户端: npm test
  • Telegram 机器人:参见示例/telegram-bot.js
  • 视频指南:[链接待定]

资源

支持

  • GitHub Issues(问题跟踪): 报告错误
  • Telegram(电报): 社区
  • 电子邮箱:your-email@example.com

为Saros黑客马拉松倾情打造