使用说明
MCP服务器CCXT
⚠️ 进行中:该项目目前正在积极开发中。功能和API可能会更改,恕不另行通知。在生产环境中使用,风险自负。
MCP(模型上下文协议)服务器,通过服务器发送事件(SSE)公开CCXT加密货币交换API。该服务器提供24个全面的工具,用于与多个加密货币交易所进行交互。
🔒 安全第一
重要:此服务器包括 多层安全 为防止意外或恶意交易操作:
- 🛡️ 安全模式:禁用所有交易操作,仅限只读访问
- ⏱️ 速率限制:防止订单激增(每次会话最多10个订单/分钟)
- 📝 增强日志记录:所有交易操作的完整审计跟踪
- 🔍 工具分类:明确区分安全工具和危险工具
- 🚨 安全检查:执行交易前有多个验证层
看 安全.md 获取完整的安全文档。
快速启动-安全模式
为了获得最大的安全性(建议用于生产):
# .env
SAFE_MODE=true # Disables ALL trading operations
启用SAFE_MODE后:
- ✅ 可以阅读:余额、市场、价格、订单、历史
- ❌ 不能:下单、取消订单、转账
特性
- 🌐 基于Web的MCP服务器 使用SSE传输
- 💱 多交换支持:币安、Coinbase、Kraken、Bitfinex、Bybit
- 🔧 24种综合工具 (13个公共+11个私人)
- 🔐 基于环境的凭据 管理
- 🛡️ 高级安全功能 (SAFE_MODE、速率限制、审计日志)
- 📊 公共API:市场数据、股票代码、订单簿、OHLCV、交易、融资率
- 💰 私有API:账户余额、订单管理、期货交易、资金转账
- 🔄 基于会话的传输 具有UUID跟踪功能
- 📝 详细日志记录 用于调试
安装
npm install
配置
创建一个 .env 根目录中的文件:
# ==========================================
# Security Configuration
# ==========================================
# SAFE_MODE: Disable ALL trading operations
# Recommended: true for production
SAFE_MODE=false
# ==========================================
# Server Configuration
# ==========================================
HOST=0.0.0.0
PORT=3000
LOG_LEVEL=info
DEFAULT_EXCHANGE=coinbase
# ==========================================
# Exchange API Credentials
# ==========================================
# Only needed for private tools (balance, orders, etc)
# Leave empty to use public tools only
BINANCE_API_KEY=your_binance_api_key
BINANCE_SECRET=your_binance_secret
COINBASE_API_KEY=your_coinbase_api_key
COINBASE_SECRET=your_coinbase_secret
KRAKEN_API_KEY=your_kraken_api_key
KRAKEN_SECRET=your_kraken_secret
# Add credentials for other exchanges as needed
安全建议:
- 始终启用SAFE_MODE 除非明确要求进行交易
- 使用 单独的API密钥 用于只读与交易操作
- 启用 IP限制 在交换API密钥上
- 永不承诺
.env文件到版本控制 - 看 安全.md 获取完整的安全指南
运行服务器
npm start
服务器将于启动 http://0.0.0.0:3000 (或您配置的HOST/PORT)。
可用端点
- SSE流:
GET http://localhost:3000/sse-建立SSE连接 - 消息:
POST http://localhost:3000/message?sessionId=<uuid>-处理MCP消息 - 健康检查:
GET http://localhost:3000/health-服务器运行状况 - 信息:
GET http://localhost:3000/-服务器信息 - 统计:
GET http://localhost:3000/stats-服务器统计信息
可用工具
公共工具(13个工具-无需身份验证)
- list_exchange -列出所有可用的交易所
- get_ticker -获取交易对的当前股票代码
- batch_get-tickers -一次获取多个股票
- 获取订单簿 -获取市场订单簿
- get_ohlcv -获取烛台数据
- get_trades -获取最近的交易
- 获取_市场 -列出所有可用市场
- get_exchange信息 -获取交易所信息
- get_leverage_tiers -获取期货杠杆等级
- get_funding_rates -获得永久期货融资利率
- get_positions -获取空缺职位(公开数据)
- get_open_orders -获取未结订单(公共数据)
- 获取订单历史 -获取订单历史记录(公共数据)
专用工具(10个工具-需要API证书)
- 会计平衡 -获取账户余额
- 地点_市场_订单 -下达市场订单⚠️
- 地点限制订单 -下达限价订单⚠️
- 取消订单 -取消特定订单
- 取消所有订单 -取消所有订单
- set_平均值 -设定期货杠杆
- set_margin_mode -设置边距模式(隔离/交叉)
- 地点_未来_市场_订单 -下达期货市场订单⚠️
- 地点_未来_限制_顺序 -下达期货限价订单⚠️
- 转账_资金 -在账户之间转账
⚠️ 警告:交易工具用真钱执行真实操作!
测试
基本测试
npm test
扩展测试
node test-extended.js
工具示例
获取Ticker
{
"name": "get_ticker",
"arguments": {
"symbol": "BTC/USDT",
"exchange": "binance"
}
}
批量获取门票
{
"name": "batch_get_tickers",
"arguments": {
"symbols": ["BTC/USDT", "ETH/USDT", "BNB/USDT"]
}
}
列表交换
{
"name": "list_exchanges",
"arguments": {
"certified": false
}
}
获取账户余额(需要凭据)
{
"name": "account_balance",
"arguments": {
"exchange": "binance"
}
}
下达限价订单(需要凭据)⚠️
{
"name": "place_limit_order",
"arguments": {
"symbol": "BTC/USDT",
"side": "buy",
"amount": 0.001,
"price": 50000
}
}
建筑
mcp-server-ccxt/
├── index.js # Main server
├── src/
│ ├── mcpServer.js # MCP server
│ ├── config/
│ │ └── config.js # Configuration
│ ├── tools/
│ │ ├── publicTools.js # 13 public tools
│ │ └── privateTools.js # 10 private tools
│ └── utils/
│ └── exchangeManager.js # Exchange manager
├── test-mcp-client.js # Basic tests
├── test-extended.js # Extended tests
└── .env # Environment variables
MCP集成
与n8n一起使用
- 在n8n中安装MCP连接器
- 配置服务器URL:
http://your-server:3000 - 在工作流中使用工具
自定义集成
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const client = new Client({
name: "my-client",
version: "1.0.0",
}, { capabilities: {} });
const transport = new SSEClientTransport(
new URL("http://localhost:3000/sse")
);
await client.connect(transport);
const result = await client.callTool({
name: "get_ticker",
arguments: { symbol: "BTC/USDT" },
});
console.log(result.content[0].text);
安全
⚠️ 重要安全注意事项:
- 永不承诺
.env文件 到版本控制 - 交易工具执行真实交易 用真钱
- 使用HTTPS 生产中
- 限制访问 使用防火墙规则
- 注意费率限制 交易所
支持的交易所
- Coinbase(默认)
- 币安
- 海妖
- Bitfinex
- Bybit
CCXT支持100多个交易所。在中添加凭据 .env 以实现更多。
故障排除
服务器无法启动
- 检查端口3000未使用
- 验证
.env文件存在 - 检查日志是否有错误
工具未显示
- 代码更改后重新启动服务器
- 检查工具定义
- 查看服务器日志
身份验证错误
- 验证中的API密钥
.env - 检查交换名称(小写)
- 确保正确的API权限
许可证
麻省理工学院
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建特征分支
- 添加测试
- 提交拉取请求
