加密货币交易所API服务器

MCP Server CCXT是一个通过Server-Sent Events (SSE)暴露CCXT加密货币交易所API的服务器,提供24种工具用于与多个加密货币交易所交互,支持安全模式和高级安全特性。

  • by carlosatta
  • JavaScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 carlosatta/mcp-server-ccxt

使用说明

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

安全建议:

  1. 始终启用SAFE_MODE 除非明确要求进行交易
  2. 使用 单独的API密钥 用于只读与交易操作
  3. 启用 IP限制 在交换API密钥上
  4. 永不承诺 .env 文件到版本控制
  5. 看 安全.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个工具-无需身份验证)

  1. list_exchange -列出所有可用的交易所
  2. get_ticker -获取交易对的当前股票代码
  3. batch_get-tickers -一次获取多个股票
  4. 获取订单簿 -获取市场订单簿
  5. get_ohlcv -获取烛台数据
  6. get_trades -获取最近的交易
  7. 获取_市场 -列出所有可用市场
  8. get_exchange信息 -获取交易所信息
  9. get_leverage_tiers -获取期货杠杆等级
  10. get_funding_rates -获得永久期货融资利率
  11. get_positions -获取空缺职位(公开数据)
  12. get_open_orders -获取未结订单(公共数据)
  13. 获取订单历史 -获取订单历史记录(公共数据)

专用工具(10个工具-需要API证书)

  1. 会计平衡 -获取账户余额
  2. 地点_市场_订单 -下达市场订单⚠️
  3. 地点限制订单 -下达限价订单⚠️
  4. 取消订单 -取消特定订单
  5. 取消所有订单 -取消所有订单
  6. set_平均值 -设定期货杠杆
  7. set_margin_mode -设置边距模式(隔离/交叉)
  8. 地点_未来_市场_订单 -下达期货市场订单⚠️
  9. 地点_未来_限制_顺序 -下达期货限价订单⚠️
  10. 转账_资金 -在账户之间转账

⚠️ 警告:交易工具用真钱执行真实操作!

测试

基本测试

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一起使用

  1. 在n8n中安装MCP连接器
  2. 配置服务器URL: http://your-server:3000
  3. 在工作流中使用工具

自定义集成

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);

安全

⚠️ 重要安全注意事项:

  1. 永不承诺 .env 文件 到版本控制
  2. 交易工具执行真实交易 用真钱
  3. 使用HTTPS 生产中
  4. 限制访问 使用防火墙规则
  5. 注意费率限制 交易所

支持的交易所

  • Coinbase(默认)
  • 币安
  • 海妖
  • Bitfinex
  • Bybit

CCXT支持100多个交易所。在中添加凭据 .env 以实现更多。

故障排除

服务器无法启动

  • 检查端口3000未使用
  • 验证 .env 文件存在
  • 检查日志是否有错误

工具未显示

  • 代码更改后重新启动服务器
  • 检查工具定义
  • 查看服务器日志

身份验证错误

  • 验证中的API密钥 .env
  • 检查交换名称(小写)
  • 确保正确的API权限

许可证

麻省理工学院

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建特征分支
  3. 添加测试
  4. 提交拉取请求