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(必需): 订单 IDsymbol(必需): 交易对
示例:
{
"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
Binance API Key
Binance Demo Trading(模拟交易)
Binance 提供 Demo Trading 功能用于开发和测试(CCXT v4.5.6+ 支持):
申请 Demo Trading API Key:
- 访问 Binance API 管理
- 创建新的 API Key
- 启用现货交易和/或期货交易权限
- 在
.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 已启用现货交易权限
- 检查网络连接
开发
添加新功能
- 在
src/services/目录创建新的服务模块 - 在
src/server.py中注册新的 MCP 工具 - 更新本文档
测试
# 安装测试依赖
pip install pytest
# 运行测试
pytest
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
支持
如有问题,请提交 Issue 或联系开发者。