⚠️ 正在进行中: 此项目正在积极开发中。功能和API可能会在没有通知的情况下发生变化。自行承担在生产环境中使用的风险。
MCP (模型上下文协议) 服务器通过服务器发送事件 (SSE) 暴露 CCXT 加密货币交易所API。此服务器提供了与多个加密货币交易所交互的24种全面工具。
重要: 此服务器包括多层安全措施以防止意外或恶意交易操作:
参见 SECURITY.md 获取完整的安全文档。
为了最大安全性(推荐用于生产环境):
# .env
SAFE_MODE=true # 禁用所有交易操作
启用 SAFE_MODE 后:
npm install
在根目录创建一个 .env 文件:
# ==========================================
# 安全配置
# ==========================================
# SAFE_MODE: 禁用所有交易操作
# 推荐: 生产环境设置为true
SAFE_MODE=false
# ==========================================
# 服务器配置
# ==========================================
HOST=0.0.0.0
PORT=3000
LOG_LEVEL=info
DEFAULT_EXCHANGE=coinbase
# ==========================================
# 交易所API凭证
# ==========================================
# 仅需用于私有工具 (余额, 订单等)
# 空白则仅使用公共工具
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
# 根据需要添加其他交易所的凭证
安全建议:
.env 文件到版本控制npm start
服务器将在 http://0.0.0.0:3000 (或您配置的HOST/PORT) 上启动。
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 - 服务器统计⚠️ 警告: 交易工具执行真实操作并涉及真实资金!
npm test
node test-extended.js
{
"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 # 主服务器
├── src/
│ ├── mcpServer.js # MCP服务器
│ ├── config/
│ │ └── config.js # 配置
│ ├── tools/
│ │ ├── publicTools.js # 13种公共工具
│ │ └── privateTools.js # 10种私有工具
│ └── utils/
│ └── exchangeManager.js # 交易所管理器
├── test-mcp-client.js # 基本测试
├── test-extended.js # 扩展测试
└── .env # 环境变量
http://your-server:3000import { 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 文件 到版本控制CCXT支持超过100个交易所。在 .env 中添加凭证以启用更多交易所。
.env 文件是否存在.env 中的API密钥MIT
欢迎贡献!请: