DeFi收益数据服务

一个生产就绪的模型上下文协议(MCP)服务器,为AI助手提供全面的DeFi收益数据,包括来自StakeKit/yield.xyz的实时APY数据和风险指标,支持50多个网络的质押、借贷和保险库机会的发现和比较。

  • by dennisonbertram
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 dennisonbertram/mcp-yield

使用说明

MCP收益服务器

一个生产就绪的模型上下文协议(MCP)服务器,为AI助手提供从StakeKit/yield.xyz访问全面的DeFi产量数据的权限。通过实时APY数据和风险指标,发现并比较50多个网络中的质押、贷款和保险库机会。

特性

  • 14种专用工具 用于查询收益机会、网络、令牌和协议
  • 5个引导提示 用于常见的工作流程(收益率比较、网络尽职调查等)
  • 动态资源 为增强的AI响应提供上下文数据
  • 类型安全API集成 具有全面的错误处理功能
  • 多种运输方式:stdio(用于Claude Desktop)和HTTP(用于远程访问)
  • 生产级测井 通过Pino进行结构化输出

快速开始

先决条件

  • Node.js 18或更新版本
  • npm 9+
  • 来自的StakeKit API密钥 api.stakek.it

安装

# Clone and install dependencies
git clone <repository-url>
cd mcp-yield
npm install

# Configure your API key
cp .env.example .env
# Edit .env and set: STAKEKIT_API_KEY=your_api_key_here

构建

npm run build

用法

选项1:克劳德桌面集成(推荐)

将此服务器添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "yield": {
      "command": "node",
      "args": [
        "/absolute/path/to/mcp-yield/dist/index.js"
      ],
      "env": {
        "STAKEKIT_API_KEY": "your_api_key_here"
      }
    }
  }
}

替换 /absolute/path/to/mcp-yield 安装的实际路径。

重新启动Claude Desktop,您的对话中将提供收益工具。

选项2:标准模式(手动测试)

# Start the server in stdio mode
STAKEKIT_API_KEY=your_key npm run start:stdio

# Test with JSON-RPC commands via stdin
echo '{"jsonrpc":"2.0","method":"tools/list","id":1,"params":{}}' | \
  STAKEKIT_API_KEY=your_key node dist/index.js

选项3:HTTP模式(远程访问)

# Start HTTP server on port 3000
STAKEKIT_API_KEY=your_key PORT=3000 npm run start:http

# The server exposes:
# - POST /mcp - JSON-RPC endpoint
# - GET /health - Health check endpoint

可用工具

该服务器提供14个工具,分为三类:

产量发现(8个工具)

  • get-yield-opportunities -所有收益机会的分页列表
  • get-yield-details -特定产量的详细明细
  • get-yields-by-network -按区块链网络过滤收益
  • get-yields-by-token -查找支持特定代币的收益
  • get-staking-yields -质押和流动质押机会
  • get-lending-yields -具有抵押品指标的贷款市场
  • get-vault-yields -包含费用数据的保险库策略
  • get-top-yields -使用过滤器获得最高APY机会

网络和令牌目录(4个工具)

  • list-supported-chains -所有支持的区块链网络
  • get-chain-details -网络元数据和最高收益
  • list-supported-tokens -具有网络覆盖范围的令牌目录
  • get-token-details -代币元数据和支持收益

协议分析(2个工具)

  • list-protocols -带度量的DeFi协议目录
  • get-protocol-details -协议深度挖掘和APY统计

引导提示

服务器包括5个智能提示,用于指导常见的工作流程:

  • compare-yields -并排比较多个收益机会
  • find-optimal-yield -找到符合特定标准的最佳收益
  • network-due-diligence -为网络生成风险评估
  • protocol-risk-review -分析协议安全性和收益率
  • token-yield-availability -发现代币的所有收益选项

配置

可以在中设置环境变量 .env 或直接传递:

变量 必填 默认 描述
STAKEKIT_API_KEY 是 - 您的StakeKit API密钥
STAKEKIT_BASE_URL 没有 https://api.stakek.it/v2 API主要终点
STAKEKIT_FALLBACK_URL 没有 https://api.yield.xyz/v1 回退端点
LOG_LEVEL 没有 info 日志记录级别(调试、信息、警告、错误)
PORT 没有 3000 HTTP服务器端口

测试

# Run all tests
npm test

# Run tests in watch mode
npm test -- --watch

# Type checking
npm run lint

# Run with live API (requires STAKEKIT_API_KEY)
RUN_LIVE_TESTS=1 npm test

测试覆盖范围包括:

  • 所有工具和实用程序的单元测试
  • 带有模拟API响应的集成测试
  • 型式安全验证
  • 错误处理场景

示例用法

通过克劳德桌面

配置后,您可以询问Claude:

“向我展示以太坊上至少有100万美元TVL的前5个质押收益率”

“比较Aave和Compound的USDC贷款收益率”

“在丽都下注ETH有什么风险?”

通过Stdio(手动)

# Get top yields
echo '{
  "jsonrpc":"2.0",
  "method":"tools/call",
  "id":2,
  "params":{
    "name":"get-top-yields",
    "arguments":{"limit":5,"minTvlUsd":1000000}
  }
}' | STAKEKIT_API_KEY=your_key node dist/index.js

# Get chain details
echo '{
  "jsonrpc":"2.0",
  "method":"tools/call",
  "id":3,
  "params":{
    "name":"get-chain-details",
    "arguments":{"networkId":"ethereum"}
  }
}' | STAKEKIT_API_KEY=your_key node dist/index.js

Docker部署

# Build the Docker image
docker build -t mcp-yield .

# Run in stdio mode
docker run --rm -e STAKEKIT_API_KEY=your_key mcp-yield

# Run in HTTP mode
docker run --rm -p 3000:3000 \
  -e STAKEKIT_API_KEY=your_key \
  -e PORT=3000 \
  mcp-yield npm run start:http

故障排除

问题 解决方案
“身份验证失败”错误 验证 STAKEKIT_API_KEY 在中设置正确 .env 或环境
Claude中“找不到工具” 更新配置后重新启动Claude Desktop
速率限制(429个错误) 等待几秒钟;客户端自动重试瞬态错误
类型验证错误 更新到最新版本;API架构可能已更改
空工具响应 检查API密钥权限和网络连接

发展

项目结构

mcp-yield/
├── src/
│   ├── tools/          # Tool implementations (yields, chains)
│   ├── resources/      # Dynamic resources
│   ├── prompts/        # Guided prompts
│   ├── client/         # StakeKit API client
│   ├── types/          # TypeScript types and Zod schemas
│   ├── services/       # Business logic
│   └── utils/          # Shared utilities
├── tests/              # Test suites
├── docs/               # Planning and documentation
│   └── archive/        # Historical test reports
└── dist/               # Compiled output

开发流程

  1. 从以下位置创建特征分支 main
  2. 先写测试(TDD方法)
  3. 实施具有类型安全的功能
  4. 跑 npm run lint && npm test 在承诺之前
  5. 在代码更改的同时更新文档

重要技术说明

  • 严格的TypeScript:没有 any 类型;全面型安全贯穿始终
  • 错误处理:所有API错误都被捕获并格式化为MCP兼容错误
  • 架构验证:Zod架构验证所有API响应
  • 过滤:错误格式的API数据被正常筛选出
  • 重试逻辑:针对瞬态故障,采用指数回退自动重试

文档

  • 规划文件:参见 docs/ 详细的规划和实施说明
  • 测试档案:历史测试报告 docs/archive/
  • 开发日志: DEVELOPMENT.md 包含TDD方法和进展
  • 修复摘要:技术细节见 CODE_REVIEW_FIX_PLAN.md, PARALLEL_FIX_SUMMARY.md等等。

资源

许可证

麻省理工学院

贡献

欢迎投稿!拜托:

  1. 复刻仓库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过,类型检查成功
  5. 提交一个带有明确描述的拉取请求

支持

对于问题或疑问:

  • GitHub问题:报告错误或请求功能
  • 文件:检查 docs/ 获取详细的技术信息