使用说明

项目简介

本项目 'mcp-solana-dex' 是一个基于 Model Context Protocol (MCP) 构建的去中心化交易所 (DEX) 服务器示例,专注于为 Solana 区块链上的代币提供基本的交易功能。它通过 MCP 协议将 DEX 的操作暴露为工具,使得 LLM 客户端可以通过标准化的方式调用这些功能,实现与 Solana DEX 的交互。

请注意: 这是一个简化的示例,'execute_order' 工具使用了非原子性的交易模型,不适用于生产环境

主要功能点

  • 订单管理: 支持创建、取消和执行卖单。
  • 订单簿查询: 允许检索特定 ICO 代币的当前订单簿。
  • MCP 工具: 将 DEX 功能以 MCP 工具的形式暴露,方便 LLM 客户端调用。
  • 文件持久化: 使用 JSON 文件存储订单簿数据。

安装步骤

  1. 确保已安装 Poetry: 如果尚未安装 Poetry,请根据 Poetry 官方文档 (https://python-poetry.org/docs/) 进行安装。
  2. 导航到项目根目录: 打开终端,进入包含 'pyproject.toml' 文件的项目根目录(即仓库的根目录)。
  3. 安装依赖: 运行以下命令安装项目依赖:
    poetry install

服务器配置

MCP 服务器需要配置启动命令和参数,以便 MCP 客户端能够连接和调用服务。以下是 'mcp-solana-dex' 服务器的配置信息,请复制到 MCP 客户端的服务器配置中:

{
  "serverName": "solana_dex_server",
  "command": "poetry",
  "args": [
    "run",
    "python",
    "mcp_solana_dex/server.py"
  ],
  "transport": "stdio",
  "description": "Solana DEX MCP Server",
  "version": "0.1.0",
  "capabilities": [
    "tools"
  ]
}

参数注释:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 启动服务器的命令,这里使用 'poetry' 命令。
  • 'args': 命令参数列表,包括 'run python mcp_solana_dex/server.py',用于通过 Poetry 运行 'server.py' 文件。
  • 'transport': 指定 MCP 客户端与服务器通信的传输协议,这里使用 'stdio' (标准输入/输出)。
  • 'description': 服务器的描述信息。
  • 'version': 服务器版本。
  • 'capabilities': 声明服务器提供的能力,这里声明了 'tools' 能力,表示服务器提供 MCP 工具功能。

环境变量配置: 在项目根目录下创建 '.env' 文件,并根据需要配置以下环境变量:

# Solana RPC Endpoint (默认为本地节点)
RPC_ENDPOINT="http://localhost:8899"

# 订单簿数据文件路径 (默认为 data/order_book.json)
ORDER_BOOK_FILE="data/order_book.json"

您可以根据实际 Solana RPC 节点地址和订单簿文件存储位置修改 '.env' 文件中的配置。

基本使用方法

  1. 启动服务器: 在项目根目录下,运行以下命令启动 Solana DEX MCP 服务器:

    poetry run python mcp_solana_dex/server.py

    服务器成功启动后,会监听标准输入/输出,等待 MCP 客户端的请求。

  2. 使用 MCP 客户端交互: 配置 MCP 客户端连接到该服务器。客户端可以通过 JSON-RPC 协议发送请求,调用服务器提供的 MCP 工具,例如 'create_order', 'cancel_order', 'execute_order', 'get_orders' 等。

    具体的工具参数和使用方法请参考 'README.md' 文件中 "MCP Tools" 部分的详细描述。

示例工具调用 (假设使用 MCP 客户端发送 JSON-RPC 请求):

  • 创建卖单:

    {
      "jsonrpc": "2.0",
      "method": "tool/create_order",
      "params": {
        "ico_id": "ICO_TOKEN_A",
        "amount": 1000,
        "price": 0.5,
        "owner": "YOUR_PUBLIC_KEY"
      },
      "id": "1"
    }
  • 查询订单簿:

    {
      "jsonrpc": "2.0",
      "method": "tool/get_orders",
      "params": {
        "ico_id": "ICO_TOKEN_A"
      },
      "id": "2"
    }

请根据 MCP 客户端的具体使用方式,构造相应的 JSON-RPC 请求与服务器进行交互。

信息

分类

商业系统