项目简介
本项目是一个实现了 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 账户。
- 克隆仓库:
git clone https://github.com/luno/luno-mcp cd luno-mcp - 构建可执行文件:
go build -o luno-mcp ./cmd/server - (可选)将可执行文件移动到系统 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' 服务器需要作为独立的进程运行并监听一个地址,客户端通过该地址连接。
- 手动启动服务器: 在命令行中运行 'luno-mcp --transport=sse --sse-address=localhost:8080' (或其他您希望监听的地址)。需要先设置 'LUNO_API_KEY_ID' 和 'LUNO_API_SECRET' 环境变量。
- 在客户端配置: 在您的 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?" (查询最新价格)
信息
分类
商业系统