金融数据分析服务器

基于CCXT和Finnhub的MCP服务器,提供投资标的新闻、技术分析数据和Binance交易功能,适用于量化交易和AI助手集成。

  • by WoodsGao
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 WoodsGao/trade-mcp

使用说明

Trade MCP Server

基于 CCXT 和 Finnhub 的 MCP(Model Context Protocol)服务器,提供投资标的新闻、技术面数据和 Binance 交易功能。

功能特性

  • 📰 新闻获取 - 通过 Finnhub 获取股票和加密货币的实时新闻
  • 📊 技术分析 - 使用 TA-Lib 计算多种技术指标(RSI, MACD, MA, BB, ATR 等)
  • 💱 Binance 交易 - 支持现货交易下单、撤单、查询余额和持仓
  • 📈 市场数据 - 获取订单簿、行情、K 线等市场数据
  • 🔌 MCP 协议 - 标准化的 MCP 接口,易于与 AI 助手集成

快速开始

1. 创建虚拟环境

Windows

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
.\venv\Scripts\Activate.ps1

macOS / Linux

# 创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

2. 安装依赖

pip install -r requirements.txt

3. 配置 API 密钥

复制环境变量模板文件:

cp .env.example .env

编辑 .env 文件,填入您的 API 密钥:

# Finnhub API Key (获取:https://finnhub.io/dashboard)
FINNHUB_API_KEY=your_finnhub_api_key_here

# Binance API Key (获取:https://www.binance.com/en/my/settings/api-management)
BINANCE_API_KEY=your_binance_api_key_here
BINANCE_API_SECRET=your_binance_api_secret_here

# Binance 交易选项
BINANCE_TESTNET=false          # 是否使用 Testnet(需要单独的 API Key): true/false
BINANCE_FUTURES=false          # 是否使用合约交易:true=合约,false=现货

# MCP 服务器配置
MCP_SERVER_HOST=127.0.0.1
MCP_SERVER_PORT=8000

# 日志级别
LOG_LEVEL=INFO

4. 检查配置

# 检查配置状态
python -m src.cli --check-config

5. 启动 MCP 服务器

# 启动服务器
python -m src.cli

MCP 工具列表

数据查询工具

1. news - 获取新闻

获取指定标的的新闻信息。

参数:

  • symbol (必需): 股票代码或加密货币符号(如 AAPL, BTCUSD)
  • limit (可选): 返回新闻数量限制,默认 10

示例:

{
  "name": "news",
  "arguments": {
    "symbol": "AAPL",
    "limit": 5
  }
}

2. technical_analysis - 技术指标

获取技术指标数据(MACD、RSI 等)。

参数:

  • symbol (必需): 股票代码或加密货币符号
  • resolution (可选): K 线周期 (D=日,W=周,M=月),默认 D

示例:

{
  "name": "technical_analysis",
  "arguments": {
    "symbol": "TSLA",
    "resolution": "D"
  }
}

交易工具

3. place_order - 下单交易

在 Binance 下单交易。

参数:

  • symbol (必需): 交易对(如 BTC/USDT)
  • order_type (必需): 订单类型 (market, limit)
  • side (必需): 买卖方向 (buy, sell)
  • amount (必需): 交易数量
  • price (可选): 价格(限价订单必需)

示例:

{
  "name": "place_order",
  "arguments": {
    "symbol": "BTC/USDT",
    "order_type": "market",
    "side": "buy",
    "amount": 0.001
  }
}

4. cancel_order - 取消订单

取消 Binance 订单。

参数:

  • order_id (必需): 订单 ID
  • symbol (必需): 交易对

示例:

{
  "name": "cancel_order",
  "arguments": {
    "order_id": "12345678",
    "symbol": "BTC/USDT"
  }
}

5. get_balance - 查询余额

查询 Binance 账户余额。

参数: 无

示例:

{
  "name": "get_balance",
  "arguments": {}
}

6. get_positions - 查询持仓

查询 Binance 持仓信息。

参数:

  • symbol (可选): 指定交易对

示例:

{
  "name": "get_positions",
  "arguments": {
    "symbol": "BTC/USDT"
  }
}

7. get_orderbook - 订单簿

获取 Binance 订单簿数据。

参数:

  • symbol (必需): 交易对
  • limit (可选): 深度限制,默认 20

示例:

{
  "name": "get_orderbook",
  "arguments": {
    "symbol": "BTC/USDT",
    "limit": 20
  }
}

8. get_tickers - 行情数据

获取 Binance 行情数据。

参数:

  • symbols (可选): 指定交易对列表

示例:

{
  "name": "get_tickers",
  "arguments": {
    "symbols": ["BTC/USDT", "ETH/USDT"]
  }
}

与 AI 助手集成

Claude Desktop 配置

方法 1:使用虚拟环境(推荐)

Windows:

{
  "mcpServers": {
    "trade-mcp": {
      "command": "C:\\Projects\\trade-mcp\\venv\\Scripts\\python.exe",
      "args": ["-m", "src.cli"],
      "cwd": "C:\\Projects\\trade-mcp",
      "env": {
        "FINNHUB_API_KEY": "your_finnhub_api_key",
        "BINANCE_API_KEY": "your_binance_api_key",
        "BINANCE_API_SECRET": "your_binance_api_secret",
        "BINANCE_TESTNET": "true",
        "BINANCE_FUTURES": "false"
      }
    }
  }
}

macOS / Linux:

{
  "mcpServers": {
    "trade-mcp": {
      "command": "/path/to/trade-mcp/venv/bin/python",
      "args": ["-m", "src.cli"],
      "cwd": "/path/to/trade-mcp",
      "env": {
        "FINNHUB_API_KEY": "your_finnhub_api_key",
        "BINANCE_API_KEY": "your_binance_api_key",
        "BINANCE_API_SECRET": "your_binance_api_secret",
        "BINANCE_TESTNET": "true",
        "BINANCE_FUTURES": "false"
      }
    }
  }
}

方法 2:使用系统 Python

如果您已在全局环境安装了依赖:

{
  "mcpServers": {
    "trade-mcp": {
      "command": "python",
      "args": ["-m", "src.cli"],
      "cwd": "C:\\Projects\\trade-mcp",
      "env": {
        "FINNHUB_API_KEY": "your_finnhub_api_key",
        "BINANCE_API_KEY": "your_binance_api_key",
        "BINANCE_API_SECRET": "your_binance_api_secret",
        "BINANCE_TESTNET": "true",
        "BINANCE_FUTURES": "false"
      }
    }
  }
}

配置文件位置:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json

提示: 项目提供了示例配置文件 claude_desktop_config.example.json,您可以复制并根据实际情况修改。

使用示例

配置完成后,您可以在与 Claude 的对话中直接使用:

  • "获取 Apple 的最新新闻"
  • "查看 BTC/USDT 的技术指标"
  • "查询我的 Binance 余额"
  • "以市价买入 0.001 BTC"

项目结构

trade-mcp/
├── src/
│   ├── __init__.py
│   ├── cli.py              # CLI 入口
│   ├── server.py           # MCP 服务器主程序
│   ├── config/
│   │   ├── __init__.py
│   │   └── settings.py     # 配置管理
│   └── services/
│       ├── __init__.py
│       ├── finnhub_service.py  # Finnhub 数据服务
│       └── ccxt_service.py     # CCXT 交易服务
├── .env.example            # 环境变量模板
├── .gitignore
├── requirements.txt        # Python 依赖
└── README.md

获取 API 密钥

Finnhub API Key

  1. 访问 Finnhub
  2. 注册免费账户
  3. 在 Dashboard 获取 API Key

Binance API Key

  1. 登录 Binance
  2. 进入 API 管理页面
  3. 创建新的 API Key
  4. 启用现货交易权限(如果是合约交易,也需要启用期货交易权限)
  5. 重要: 妥善保管 API Secret,只显示一次

Binance Demo Trading(模拟交易)

Binance 提供 Demo Trading 功能用于开发和测试(CCXT v4.5.6+ 支持):

申请 Demo Trading API Key:

  1. 访问 Binance API 管理
  2. 创建新的 API Key
  3. 启用现货交易和/或期货交易权限
  4. 在 .env 文件中设置 BINANCE_DEMO=true

优势:

  • 支持现货和合约交易
  • 使用模拟资金,安全无风险
  • 不受地区限制
  • 支持所有 API 端点

注意:

  • Demo Trading 需要专用的 API Key,与正式网络和旧 Testnet 的 API Key 不通用
  • 需要在 Binance 官网重新申请 Demo Trading 专用的 API Key

现货 vs 合约交易

通过 BINANCE_FUTURES 参数控制交易类型:

  • 现货交易 (BINANCE_FUTURES=false):

    • 交易实际的加密货币资产
    • 无杠杆或低杠杆
    • 风险相对较低
  • 合约交易 (BINANCE_FUTURES=true):

    • 交易期货合约
    • 支持高杠杆(最高 125x)
    • 可以做多或做空
    • 风险较高,适合有经验的用户

注意: 合约交易需要额外的期货交易权限,请确保您的 API Key 已启用该权限。

技术指标计算

本项目使用 TA-Lib 库计算多种技术指标,支持以下指标:

移动平均线:

  • SMA (Simple Moving Average) - 简单移动平均
  • EMA (Exponential Moving Average) - 指数移动平均

动量指标:

  • RSI (Relative Strength Index) - 相对强弱指标
  • MACD (Moving Average Convergence Divergence) - 指数平滑异同移动平均线
  • MOM (Momentum) - 动量指标
  • Stochastic - 随机指标

波动率指标:

  • BB (Bollinger Bands) - 布林带
  • ATR (Average True Range) - 平均真实波幅

成交量指标:

  • OBV (On Balance Volume) - 能量潮指标

其他指标:

  • CCI (Commodity Channel Index) - 商品通道指标
  • Williams %R - 威廉指标

使用方法:

# 通过 MCP 工具调用
technical_analysis(symbol="BTC/USDT", timeframe="1d", limit=100)

参数说明:

  • symbol: 交易对符号(如 BTC/USDT)
  • timeframe: K 线周期(1m, 5m, 15m, 1h, 4h, 1d, 1w)
  • limit: K 线数量(建议 50-500)

安全提示

⚠️ 重要安全注意事项:

  • 永远不要将 .env 文件提交到版本控制系统
  • 定期更换 API 密钥
  • 为 API Key 设置适当的权限限制(如 IP 白名单)
  • 不要与任何人分享您的 API 密钥

故障排除

常见问题

1. 模块导入错误

# 确保已激活虚拟环境
# Windows
.\venv\Scripts\Activate.ps1
# macOS/Linux
source venv/bin/activate

# 重新安装依赖
pip install -r requirements.txt

2. API 未配置错误

# 检查 .env 文件是否存在
# 运行配置检查
python -m src.cli --check-config

3. Binance 连接失败

  • 检查 API Key 是否正确
  • 确认 API Key 已启用现货交易权限
  • 检查网络连接

开发

添加新功能

  1. 在 src/services/ 目录创建新的服务模块
  2. 在 src/server.py 中注册新的 MCP 工具
  3. 更新本文档

测试

# 安装测试依赖
pip install pytest

# 运行测试
pytest

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

支持

如有问题,请提交 Issue 或联系开发者。