返回市场
墨蝎-MCP服务器

墨蝎-MCP服务器

作者:RyanLisse3 星标更新:2025-07-20

项目介绍

MEXC MCP Server

使用Encore.ts实现的用于MEXC数字货币交易所集成的模型上下文协议(MCP)服务器。

🚀 特性

  • 实时市场数据:来自MEXC交易所的实时报价、订单簿和24小时统计数据
  • 安全API管理:使用Encore.ts进行API密钥的秘密管理
  • 速率限制与缓存:内置保护和性能优化
  • 类型安全性:完整的TypeScript实现,带有Encore.ts接口
  • 测试驱动开发:全面的测试套件,覆盖率超过90%
  • CI/CD流水线:自动化测试、代码检查和部署
  • 预提交钩子:自动代码质量检查

📋 先决条件

🛠️ 本地开发设置

1. 克隆并安装

git clone https://github.com/RyanLisse/mexc-mcp-server.git
cd mexc-mcp-server
bun install

2. 环境配置

在项目根目录创建一个.env文件:

# MEXC API凭证
MEXC_API_KEY=your_mexc_api_key_here
MEXC_SECRET_KEY=your_mexc_secret_key_here

3. 开发工作流

# 启动开发服务器
bun run dev

# 运行测试(带监视模式)
bun run test:watch

# 运行所有质量检查
bun run check

# 格式化和代码检查
bun run format
bun run lint:fix

🧪 测试

# 运行所有测试
bun test

# 运行带有覆盖率的测试
bun run test:coverage

# 运行特定测试文件
bun test auth/auth.test.ts

# 测试MEXC API连接
bun run test:mexc

🔧 可用的MCP工具

工具名称描述输入参数
mexc_get_ticker获取当前报价和24小时统计数据symbol: string, convert?: string
mexc_get_order_book获取当前订单簿(买/卖)symbol: string, limit?: number
mexc_get_24h_stats获取24小时交易统计数据symbol?: string
mexc_test_connectivity测试API连接性和服务器时间
mexc_test_authentication测试API认证
mexc_get_active_symbols获取所有活跃交易符号limit?: number
mexc_place_order下买单或卖单`symbol: string, side: 'buy'
mexc_cancel_order取消现有订单symbol: string, orderId: string
mexc_get_order_status获取订单状态和详情symbol: string, orderId: string
mexc_get_account_balance获取账户余额
mexc_get_open_orders获取所有未完成订单symbol?: string
mexc_get_order_history获取订单历史symbol?: string, limit?: number
mexc_get_trade_history获取交易执行历史symbol?: string, limit?: number

🚀 部署

Encore云部署

  1. 安装Encore CLI

    curl -L https://encore.dev/install.sh | bash
    
  2. 身份验证

    encore auth login
    
  3. 设置秘密

    # 对于测试环境
    encore secret set --env=staging MEXC_API_KEY "your_api_key"
    encore secret set --env=staging MEXC_SECRET_KEY "your_secret_key"
    
    # 对于生产环境
    encore secret set --env=production MEXC_API_KEY "your_api_key"
    encore secret set --env=production MEXC_SECRET_KEY "your_secret_key"
    
  4. 部署

    # 部署到测试环境
    encore deploy --env=staging
    
    # 部署到生产环境
    encore deploy --env=production
    

自动化部署

该项目包括GitHub Actions工作流程以实现自动化部署:

  • CI流水线.github/workflows/ci.yml):在所有PR和推送时运行

    • 类型检查
    • 代码检查和格式化
    • 测试执行
    • 安全扫描
    • 构建验证
  • 部署流水线.github/workflows/deploy.yml):部署到Encore云

    • 在主分支推送时触发
    • 手动选择环境进行部署
    • 自动健康检查
    • 秘密管理

必要的GitHub秘密

在你的GitHub仓库设置中配置这些秘密:

ENCORE_AUTH_TOKEN=your_encore_auth_token
ENCORE_INSTALL_ID=your_encore_install_id
MEXC_API_KEY=your_mexc_api_key
MEXC_SECRET_KEY=your_mexc_secret_key
CODECOV_TOKEN=your_codecov_token  # 可选,用于覆盖报告

🔒 安全与秘密管理

Encore.ts秘密

此项目使用Encore.ts内置的秘密管理来安全存储凭证:

// 在shared/config.ts中
import { secret } from "encore.dev/config";

// 秘密由Encore.ts自动注入
const mexcApiKey = secret("MEXC_API_KEY");
const mexcSecretKey = secret("MEXC_SECRET_KEY");

// 本地开发时使用环境变量
const localConfig = {
  apiKey: process.env.MEXC_API_KEY || mexcApiKey(),
  secretKey: process.env.MEXC_SECRET_KEY || mexcSecretKey(),
};

设置秘密

# 为不同环境设置秘密
encore secret set --env=development MEXC_API_KEY "your_dev_api_key"
encore secret set --env=development MEXC_SECRET_KEY "your_dev_secret_key"

encore secret set --env=staging MEXC_API_KEY "your_staging_api_key"
encore secret set --env=staging MEXC_SECRET_KEY "your_staging_secret_key"

encore secret set --env=production MEXC_API_KEY "your_prod_api_key"
encore secret set --env=production MEXC_SECRET_KEY "your_prod_secret_key"

最佳实践

  • ✅ 永不将API密钥提交到版本控制
  • ✅ 使用环境特定的秘密(测试/生产)
  • ✅ 定期轮换API密钥
  • ✅ 监控API使用情况和速率限制
  • ✅ 使用最小权限访问原则

🔄 CI/CD流水线

预提交钩子

Husky预提交钩子确保代码质量:

# 在git提交时自动运行
- Lint-staged(格式化和检查暂存文件)
- 类型检查
- 测试执行

GitHub Actions

CI工作流(.github/workflows/ci.yml

  • 触发器:向main/develop推送或拉取请求
  • 步骤:安装 → 类型检查 → 代码检查 → 测试 → 安全扫描 → 构建

部署工作流(.github/workflows/deploy.yml

  • 触发器:向main推送或手动调度
  • 步骤:质量检查 → 部署 → 健康检查 → 通知

📊 API端点

健康与信息

  • GET /health - 服务健康检查
  • GET /mcp/info - MCP协议信息
  • GET / - API概览

认证服务

  • POST /auth/validate - 验证API密钥
  • GET /auth/status - 认证状态
  • POST /auth/rate-limit - 速率限制状态
  • GET /auth/test-mexc - 测试MEXC凭证

市场数据服务

  • POST /market-data/ticker - 获取报价数据
  • POST /market-data/order-book - 获取订单簿
  • POST /market-data/24h-stats - 获取24小时统计数据
  • GET /market-data/test-connectivity - 测试连接
  • GET /market-data/test-auth - 测试认证
  • POST /market-data/active-symbols - 获取活跃符号
  • GET /market-data/health - 市场数据服务健康
  • GET /market-data/mcp/tools - 可用的MCP工具

交易服务

  • POST /trading/place-order - 下新订单
  • POST /trading/cancel-order - 取消现有订单
  • POST /trading/order-status - 获取订单状态
  • GET /trading/open-orders - 获取未完成订单
  • POST /trading/order-history - 获取订单历史
  • POST /trading/trade-history - 获取交易历史
  • GET /trading/health - 交易服务健康

资产组合服务

  • GET /portfolio/balance - 获取账户余额
  • GET /portfolio/positions - 获取开放头寸
  • POST /portfolio/pnl - 获取利润/损失数据
  • GET /portfolio/health - 资产组合服务健康

工具服务(MCP协议)

  • GET /tools/list - 列出所有可用的MCP工具
  • POST /tools/call - 执行MCP工具
  • GET /tools/resources - 列出MCP资源
  • POST /tools/resources/read - 读取MCP资源内容

🧩 架构

Encore.ts服务

应用程序使用微服务架构构建,包含5个主要服务:

mexc-mcp-server/
├── encore.service.ts        # 主服务定义
├── api.ts                   # 根API端点
├── auth/                    # 认证服务
│   ├── encore.service.ts    # 服务定义
│   ├── api.ts              # 认证端点
│   └── auth.ts             # 认证逻辑
├── market-data/             # 市场数据服务
│   ├── encore.service.ts    # 服务定义
│   ├── api.ts              # 市场数据端点
│   ├── tools.ts            # MCP工具实现
│   └── mexc-client.ts      # MEXC API客户端
├── trading/                 # 交易操作服务
│   ├── encore.service.ts    # 服务定义
│   ├── api.ts              # 交易端点
│   └── tools.ts            # 交易MCP工具
├── portfolio/               # 资产组合管理服务
│   ├── encore.service.ts    # 服务定义
│   ├── api.ts              # 资产组合端点
│   └── tools.ts            # 资产组合MCP工具
└── tools/                   # MCP工具聚合服务
    ├── encore.service.ts    # 服务定义
    └── api.ts              # MCP协议端点

服务依赖关系

  • auth:基本认证和速率限制
  • market-data:实时市场数据(依赖于auth)
  • trading:订单管理(依赖于auth,market-data)
  • portfolio:账户和头寸跟踪(依赖于auth,trading)
  • tools:MCP协议实现(聚合所有服务)

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 按照编码标准进行更改
  4. 运行测试:bun test
  5. 使用常规提交:git commit -m "feat: 添加神奇的功能"
  6. 推送到你的分支:git push origin feature/amazing-feature
  7. 打开Pull Request

开发标准

  • ✅ TypeScript严格模式
  • ✅ 测试驱动开发(TDD)
  • ✅ 文件少于500行
  • ✅ 使用Encore.ts接口保证类型安全
  • ✅ 常规提交
  • ✅ 新功能的测试覆盖率超过90%
  • ✅ 使用Biome.js进行代码检查和格式化

📝 许可证

MIT许可证 - 详情见LICENSE文件。

🆘 支持