加密货币交易接口服务

CCXT MCP Server 是一个为大型语言模型(LLMs)提供加密货币交易所交互功能的协议服务器,支持异步操作、清晰的工具定义和认证处理。

  • by jcwleo
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 jcwleo/ccxt-mcp-server

使用说明

CCXT MCP服务器

该项目提供了一个模型上下文协议(MCP)服务器,该服务器从 仓储管理系统 库作为大型语言模型(LLM)的工具。

它允许LLM以标准化和异步的方式与加密货币交易所进行交互,以完成获取余额、市场数据、创建订单等任务。

此服务器是使用 FastMCP,简化了在Python中创建MCP服务器的过程。

特性

  • CCXT集成:封装用于交换交互的常见CCXT函数。
  • 异步:使用 asyncio 和 ccxt.async_support 以实现高效的非阻塞操作。
  • 清除工具定义:用途 typing.Annotated 和 pydantic.Field 为了获得清晰的参数描述和约束,使LLM(和开发人员)更容易理解和使用这些工具。
  • 身份验证处理:支持用于私有终结点的API密钥、机密和密码验证。
  • 公共和私人工具:为公共市场数据和私人账户操作提供单独的工具。

安装

  1. 克隆存储库(如果您还没有):

    git clone https://github.com/jcwleo/ccxt-mcp-server.git
    cd ccxt-mcp-server
    
  2. 创建并激活虚拟环境(推荐):

    python -m venv .venv
    source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
    
  3. 安装依赖项: 所需的库列在 requirements.txt。您可以使用安装它们 pip 或 uv.

    • 使用 pip:
      pip install -r requirements.txt
      
    • 使用 uv (如果已安装):
      uv pip install -r requirements.txt
      # Or, if you prefer uv's environment management:
      # uv sync
      

运行服务器

安装依赖项后,您可以直接运行MCP服务器:

uv run uvicorn mcp_server:app

您应该看到指示服务器已启动的输出,类似于:

Starting CCXT MCP Server (Async with Annotated Params and Tool Metadata)...
# ... (FastMCP server startup logs)

然后,服务器将可供MCP客户端连接(通常在FastMCP管理的默认端口上,除非另有配置)。

MCP服务器配置(适用于MCP客户端)

如果您使用的MCP客户端需要手动配置服务器(如Claude桌面应用程序),则需要提供类似于以下JSON的配置。

创建一个 claude_desktop_config.json 具有以下结构的文件(或MCP客户端的等效文件):

{
  "mcpServers": {
    "ccxt-mcp-server": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:8000/mcp/"]
    }
  }
}

此配置告诉您的MCP客户端如何启动CCXT MCP服务器并与之通信。

可用的MCP工具

此服务器公开以下工具,按它们是否需要API身份验证进行分类。

需要API身份验证的工具(专用)

  • fetch_account_balance:获取经常账户余额。
  • fetch_deposit_address:获取货币的存款地址。
  • withdraw_cryptocurrency:将加密货币提取到指定地址。
  • fetch_open_positions:获取未平仓头寸(主要用于期货/衍生品)。
  • set_trading_leverage:设置交易品种的杠杆(主要是期货)。
  • create_spot_limit_order:下达新的现货限价订单。
  • create_spot_market_order:下达新的现货市场订单。
  • create_futures_limit_order:下达新的期货限价单。
  • create_futures_market_order:下达新的期货市场订单。
  • cancel_order:取消现有的未结订单。
  • fetch_order_history:获取订单历史记录(打开/关闭)。
  • fetch_my_trade_history:获取用户执行的交易历史记录。

公共数据工具(无需身份验证)

  • fetch_ohlcv:获取历史OHLCV(烛台)数据。
  • fetch_funding_rate:获取永久期货合约的资金利率。
  • fetch_long_short_ratio:获取长/短比率(需要特定于交易所 params).
  • fetch_option_contract_data:获取期权合约的市场数据。
  • fetch_market_ticker:获取某个交易品种的最新价格信息。
  • fetch_public_market_trades:获取最近公开交易的交易品种。
  • calculate_technical_indicator_tool:获取OHLCV数据并计算指定的技术指标(例如RSI、SMA、EMA、MACD、布林带、随机振荡器、平均真实范围(ATR))。

由于使用了 Annotated 和 pydantic.Field.

使用说明

  • 期货/期权:当使用与期货或期权相关的工具时(例如。, fetch_open_positions, create_futures_limit_order, fetch_funding_rate),确保通过正确配置CCXT客户端 params 论点,特别是传递 {'options': {'defaultType': 'future'}} (或 'swap', 'option' 根据需要),如果交易所需要或不默认为所需的市场类型。
  • fetch_long_short_ratio:这不是标准的CCXT统一方法。你 必须 在中提供特定的交换方法名称及其参数 params 论点(例如。, params={'method_name': 'fapiPublicGetGlobalLongShortAccountRatio', 'method_params': {'symbol': 'BTCUSDT', 'period': '5m'}} Binance期货)。
  • 错误处理:工具返回带有 "error" 如果在CCXT呼叫期间出现问题,请键入。