项目简介

本项目是一个实现了 Model Context Protocol (MCP) 的服务器,旨在为支持 MCP 的客户端(如 VS Code Copilot)提供与 Luno 加密货币交易平台互动的能力。它允许 LLM 客户端通过标准化的协议访问您的 Luno 账户信息和执行交易操作。

主要功能点

  • 资源访问: 提供读取您的 Luno 账户余额、交易历史和特定账户详情的能力。
  • 工具调用: 允许 LLM 执行 Luno API 操作,例如创建限价订单、取消订单、获取市场行情(最新价格、订单簿、近期交易)等。
  • 安全认证: 使用您的 Luno API Key 和 Secret 进行安全认证,确保对您账户的访问是安全的。
  • LLM 集成: 与支持 MCP 的 LLM 客户端无缝集成,使您能够通过自然语言与您的 Luno 账户和市场数据进行交互。

安装步骤

要运行此服务器,您需要 Go 1.24 或更高版本,以及一个包含 API Key 和 Secret 的 Luno 账户。

  1. 克隆仓库:
    git clone https://github.com/luno/luno-mcp
    cd luno-mcp
  2. 构建可执行文件:
    go build -o luno-mcp ./cmd/server
  3. (可选)将可执行文件移动到系统 PATH 中:
    sudo mv luno-mcp /usr/local/bin/

服务器配置

MCP 服务器是为 MCP 客户端提供服务的。要让您的 MCP 客户端连接到此服务器,您需要在客户端的配置文件中添加服务器配置。以 VS Code 为例,您可以在 'settings.json' 文件中添加以下配置。服务器需要通过环境变量获取 Luno API 凭据('LUNO_API_KEY_ID' 和 'LUNO_API_SECRET')。客户端配置中的 'inputs' 字段会提示用户输入这些凭据,并将它们作为环境变量传递给服务器进程。

使用 Stdio 传输协议 (推荐)

此配置会直接启动 'luno-mcp' 程序并通过标准输入/输出进行通信。

"mcp": {
  "servers": {
    "luno": {
      "command": "luno-mcp", // 或您安装luno-mcp可执行文件的完整路径
      "args": [],
      "env": {
        "LUNO_API_KEY_ID": "${input:luno_api_key_id}",
        "LUNO_API_SECRET": "${input:luno_api_secret}"
        // 可选:设置日志级别,例如 "LOG_LEVEL": "debug"
        // 可选:覆盖Luno API域名,例如 "LUNO_API_DOMAIN": "api.staging.luno.com"
      },
      "inputs": [
        {
          "id": "luno_api_key_id",
          "type": "promptString",
          "description": "请输入您的 Luno API Key ID",
          "password": true // 设置为 true 表示输入时隐藏字符
        },
        {
          "id": "luno_api_secret",
          "type": "promptString",
          "description": "请输入您的 Luno API Secret",
          "password": true
        }
      ]
    }
  }
}
  • 'command': 指定 'luno-mcp' 可执行文件的路径。如果您已将其移动到系统 PATH 中,直接使用 '"luno-mcp"' 即可。
  • 'args': 传递给 'luno-mcp' 命令的命令行参数,例如 '["--log-level", "debug"]'。
  • 'env': 设置服务器进程的环境变量。此处用于将客户端输入的 API 凭据传递给服务器。
  • 'inputs': 定义客户端需要向用户收集的输入项(如 API 凭据),并关联到 'env' 中的环境变量。

使用 Docker 和 Stdio 传输协议

如果您的系统安装了 Docker,可以使用 Docker 镜像运行服务器。这不需要您本地安装 Go。

"mcp": {
  "servers": {
    "luno-docker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i", // Docker 运行参数:运行后删除容器,交互模式
        "-e", "LUNO_API_KEY_ID=${input:luno_api_key_id}", // 将输入作为环境变量传递
        "-e", "LUNO_API_SECRET=${input:luno_api_secret}",
        "ghcr.io/luno/luno-mcp:latest" // 使用 Docker 镜像
        // 可选:添加调试环境变量 -e "LUNO_API_DEBUG=true"
        // 可选:覆盖API域名 -e "LUNO_API_DOMAIN=api.staging.luno.com"
      ],
      "inputs": [
         {"id": "luno_api_key_id", "type": "promptString", "description": "请输入您的 Luno API Key ID", "password": true},
         {"id": "luno_api_secret", "type": "promptString", "description": "请输入您的 Luno API Secret", "password": true}
      ]
    }
  }
}
  • 此配置使用 Docker 命令启动容器,并通过 Docker 的 '-i' 参数保持标准输入/输出连接,实现 Stdio 传输。

使用 SSE 传输协议 (需要单独运行服务器)

如果选择 SSE 传输,'luno-mcp' 服务器需要作为独立的进程运行并监听一个地址,客户端通过该地址连接。

  1. 手动启动服务器: 在命令行中运行 'luno-mcp --transport=sse --sse-address=localhost:8080' (或其他您希望监听的地址)。需要先设置 'LUNO_API_KEY_ID' 和 'LUNO_API_SECRET' 环境变量。
  2. 在客户端配置: 在您的 MCP 客户端配置中添加:
"mcp": {
  "servers": {
    "luno-sse": {
      "type": "sse",
      "url": "http://localhost:8080/sse" // 服务器监听的地址和路径
    }
  }
}
  • 'type': 指定传输类型为 'sse'。
  • 'url': 指定服务器监听的 URL。

重要: 在配置完成后,重新加载或重启您的 MCP 客户端(如 VS Code)以加载新的服务器配置。客户端可能会在首次连接时提示您输入 Luno API Key ID 和 Secret。

基本使用方法

服务器运行并由客户端连接后,您可以在支持 MCP 的 LLM 客户端中通过自然语言与 Luno 平台互动。LLM 会根据您的指令和服务器提供的工具/资源信息来调用相应的 MCP 功能。

例如,您可以尝试以下对话:

  • "What are my current wallet balances on Luno?" (查询余额)
  • "Create a limit order to buy 0.001 BTC at 50000 ZAR" (创建订单)
  • "Show me recent trades for XBTZAR" (查看近期交易)
  • "What's the latest price for Bitcoin in ZAR?" (查询最新价格)

信息

分类

商业系统