使用说明
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机器人一起使用
- 通过(某种方式)创建一个机器人 @BotFather(机器人之父)
- 复制你的机器人令牌
- 设置环境变量:
export BOT_TOKEN="your_telegram_bot_token"
- 运行机器人:
node examples/telegram-bot.js
- 与您的机器人聊天:
/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处理的形式
发展
添加新工具
- 在(某个地方/系统中)创建工具处理程序
src/tools/:
export async function myNewTool(args, services) {
const { param1, param2 } = args;
// Tool logic here
return {
content: [{
type: "text",
text: "Result text"
}]
};
}
- 在……注册
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
铁路/渲染
- 创建新服务
- 连接GitHub仓库
- 设置构建命令:
npm install - 设置启动命令:
npm start
Docker(可选)
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
路线图
- [ ] 添加DLMM特定功能(高级订单、动态费用)
- [ ] 实现实时价格数据推送
- [ ] 添加交易执行工具
- [ ] 多钱包管理
- [ ] 历史绩效追踪
- [ ] 网页仪表盘用户界面
贡献;做出贡献
欢迎投稿!请:
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 提交更改
- 提交一个拉取请求(PR)
许可证
MIT 许可证 - 请参阅 LICENSE 文件
黑客马拉松提交作品
项目: Saros MCP 服务器 类别: SDK使用及开发者工具 黑客马拉松(或编程马拉松): Saros 10万美元黑客马拉松
关键创新
- Saros DeFi的首个MCP服务器
- 原生AI投资组合管理
- 自然语言与DeFi(去中心化金融)的交互
- 自主交易代理基金会
演示
- 测试客户端:
npm test - Telegram 机器人:参见示例/telegram-bot.js
- 视频指南:[链接待定]
资源
支持
为Saros黑客马拉松倾情打造