Skip to main content
Glama
amanasmuei

Luno MCP Server

Luno MCP サーバー

Luno暗号通貨取引API用のモデルコンテキストプロトコル(MCP)サーバー。このサーバーは、AIモデルとアプリケーションが暗号通貨取引用のLuno APIと連携するための標準化されたインターフェースを提供します。

 _                        __  __  ____ ____   
| |    _   _ _ __   ___  |  \/  |/ ___|  _ \  
| |   | | | | '_ \ / _ \ | |\/| | |   | |_) | 
| |___| |_| | | | | (_) || |  | | |___|  __/  
|_____|\__,_|_| |_|\___/ |_|  |_|\____|_|     

特徴

  • Luno API経由のリアルタイム暗号通貨価格情報

  • すべての取引ペアの市場概要

  • 口座残高照会

  • 注文管理(発注、キャンセル、ステータス)

  • 取引履歴の取得

  • 料金情報

  • 標準化されたJSON-RPC 2.0インターフェース

  • AIアプリケーションとのシンプルな統合

Related MCP server: AMOCA Solana MCP Server

前提条件

  • Python 3.8 以上 (Python 3.9 以上を推奨)

  • パッケージ管理のためのuv

  • APIキー付きのLunoアカウント(全機能対応)

インストール

  1. このリポジトリをクローンする

git clone https://github.com/amanasmuei/mcp-luno.git
cd mcp-luno
  1. uvを使って仮想環境を作成する

uv venv
source .venv/bin/activate  # On macOS/Linux
# On Windows use: .venv\Scripts\activate
  1. 依存関係をインストールする

uv pip install -r requirements.txt
  1. Luno API 資格情報を設定します (1 つの方法を選択):

Docker サポート

Docker を使用して MCP サーバーを実行すると、さまざまなプラットフォーム間での展開が容易になり、環境の一貫性も確保できます。

Docker Compose の使用(推奨)

  1. サンプル環境ファイルをコピーし、資格情報を設定します。

cp .env.example .env
# Edit .env file with your Luno API credentials
  1. サーバーを起動します。

docker compose up -d

サーバーは、WebSocket モードでws://localhost:8765で利用できるようになります。

  1. ログを表示:

docker compose logs -f
  1. サーバーを停止します。

docker compose down

Dockerを直接使用する

イメージをビルドします。

docker build -t mcp-luno .

コンテナを実行します。

docker run -d \
  -p 8765:8765 \
  -e LUNO_API_KEY=your_api_key_here \
  -e LUNO_API_SECRET=your_api_secret_here \
  -e MCP_TRANSPORT=websocket \
  -e MCP_HOST=0.0.0.0 \
  -v ./certs:/app/certs \
  --name mcp-luno \
  mcp-luno

AIアシスタントと併用する

Docker コンテナを起動したら、さまざまな AI アシスタントを接続して Luno MCP サーバーを使用できます。

カーソル

カーソル設定に以下を追加します。

{
  "mcp_servers": {
    "luno": {
      "type": "websocket",
      "url": "ws://localhost:8765"
    }
  }
}

クロードデスクトップ

Claude Desktop 設定には、MCP サーバーを構成するための 2 つのオプションがあります。

オプション 1: Docker を使用する (推奨)
{
  "mcpServers": {
    "luno": {
      "command": "docker",
      "args": ["compose", "up"],
      "cwd": "/path/to/mcp-luno",
      "transport": "websocket",
      "url": "ws://localhost:8765",
      "env": {
        "LUNO_API_KEY": "your_api_key_here",
        "LUNO_API_SECRET": "your_api_secret_here"
      }
    }
  }
}

この構成では、Docker コンテナ内でサーバーを起動し、WebSocket 経由で接続します。

オプション2: Pythonの直接実行を使用する
{
  "mcpServers": {
    "luno": {
      "command": "python",
      "args": ["-m", "src.main", "--transport", "stdio"],
      "cwd": "/path/to/mcp-luno",
      "transport": "stdio",
      "env": {
        "PYTHONPATH": "${workspaceFolder}",
        "LUNO_API_KEY": "your_api_key_here",
        "LUNO_API_SECRET": "your_api_secret_here"
      }
    }
  }
}

この構成では、STDIO トランスポートを使用して Python サーバーを直接実行します。

注: /path/to/mcp-lunoリポジトリのクローンを作成した実際のパスに置き換えます。

クライン

Cline 構成ファイルに次の内容を追加します。

{
  "mcp": {
    "servers": {
      "luno": {
        "transport": "websocket",
        "url": "ws://localhost:8765"
      }
    }
  }
}

Docker による SSL サポート

Docker コンテナで SSL を使用するには:

  1. 提供されたスクリプトを使用して証明書を生成します。

./generate_certificates.sh
  1. コンテナを実行するときに証明書ディレクトリをマウントします。

docker run -d \
  -p 8765:8765 \
  -e LUNO_API_KEY=your_api_key_here \
  -e LUNO_API_SECRET=your_api_secret_here \
  -e MCP_TRANSPORT=websocket \
  -e MCP_HOST=0.0.0.0 \
  -v ./certs:/app/certs \
  --name mcp-luno \
  mcp-luno

手動インストール

オプションA : .envファイルを使用する

cp .env.example .env

次に、 .envファイルを編集して、Luno API 資格情報を追加します。

LUNO_API_KEY=your_api_key_here
LUNO_API_SECRET=your_api_secret_here

オプションB : VS Code MCP構成を使用する

.vscode/mcp.jsonファイルを編集し、 envセクションに資格情報を追加します。

"env": {
  "PYTHONPATH": "${workspaceFolder}",
  "LUNO_API_KEY": "your_api_key_here",
  "LUNO_API_SECRET": "your_api_secret_here",
  "LOG_LEVEL": "INFO"
}

: 有効なAPI認証情報がない場合は、パブリックエンドポイントのみ利用可能です。推奨事項: セキュリティのため、コードを共有する際は環境変数を使用することをお勧めします。

サーバーの実行

MCP サーバーは、次の 2 つの異なるトランスポート モードで実行できます。

STDIO トランスポート (デフォルト、単一クライアント)

これはデフォルトのモードで、標準入出力を介して単一のクライアント接続をサポートします。

python -m src.main --transport stdio

WebSocket トランスポート (複数のクライアント)

複数のクライアント接続を同時にサポートするには、サーバーを WebSocket モードで実行します。

python -m src.main --transport websocket [--host HOST] [--port PORT]

WebSocket サーバーは、デフォルトではws://localhost:8765で起動します。

WebSocketサーバーのテスト

付属のテスト クライアントを使用して WebSocket サーバーをテストできます。

python test_websocket_client.py

これにより、サーバーが WebSocket 接続を正しく処理し、要求に応答していることを確認できます。

コマンドラインオプション

  • --transport {stdio,websocket} : 使用するトランスポートメカニズム (デフォルト: stdio)

  • --host HOST : WebSocketトランスポートを使用するときにバインドするホスト(デフォルト: localhost)

  • --port PORT : WebSocketトランスポートを使用するときにバインドするポート(デフォルト: 8765)

環境変数

環境変数を使用してトランスポートを構成することもできます。

  • MCP_TRANSPORT : トランスポートメカニズム(「stdio」または「websocket」)

  • MCP_HOST : WebSocketトランスポートにバインドするホスト

  • MCP_PORT : WebSocketトランスポートにバインドするポート

標準クライアントでのテスト

STDIO トランスポートをテストするには、付属のテスト クライアントを使用します。

python test_client.py

MCPプロトコル統合

このサーバーはモデルコンテキストプロトコル(MCP)を実装しており、AIモデルは標準化されたJSON-RPC 2.0メッセージを介してサーバーとやり取りできます。サーバーはデフォルトでSTDIO経由で動作するため、VS Code拡張機能やその他のMCP互換クライアントとの統合が容易です。

VSコード統合

.vscode/mcp.jsonファイルは、VS Code で使用するサーバーの設定を行います。2 つのサーバー設定が用意されています。

  1. luno-mcp-server-stdio - STDIO トランスポートを使用します (デフォルトの MCP 動作)

  2. luno-mcp-server-websocket - 複数のクライアントをサポートするためにWebSocketトランスポートを使用します

VSコードの構成

VS Code で WebSocket トランスポートを使用するには、 mcp.jsonファイルにプロセス タイプの構成を含めます。

"luno-mcp-server-websocket": {
  "type": "process",
  "command": "python",
  "args": ["-m", "src.main", "--transport", "websocket"],
  "env": {
    // environment variables
  }
}

WebSocket トランスポートを使用する場合、VS Code は STDIO 経由で通信するのではなく、バックグラウンド プロセスとしてサーバーを起動します。

VS Code で MCP サーバーを構成する

.vscode/mcp.jsonファイルから直接サーバーを構成できます。

{
  "servers": {
    "luno-mcp-server": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "src.main"],
      "env": {
        "PYTHONPATH": "${workspaceFolder}",
        "LUNO_API_KEY": "your_api_key_here",
        "LUNO_API_SECRET": "your_api_secret_here",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

この構成は、MCP プロトコルをサポートする VS Code 拡張機能によって使用され、AI モデルやその他のツールとの統合が容易になります。

利用可能な方法

方法

説明

認証が必要です

describe_capabilities

サーバーの機能に関する情報を返す

いいえ

get_crypto_price

特定の取引ペアの現在の価格を取得する

いいえ

get_market_overview

利用可能なすべての市場の概要を確認する

いいえ

get_account_balance

すべてのアカウントの残高を取得する

はい

place_order

新しい注文をする

はい

cancel_order

既存の注文をキャンセルする

はい

get_order_status

注文のステータスを取得する

はい

get_transaction_history

アカウントの取引履歴を取得する

はい

get_fees

取引ペアの手数料情報を取得する

はい

リクエストの例

サーバー機能を取得します:

{
  "jsonrpc": "2.0",
  "method": "describe_capabilities",
  "params": {},
  "id": 1
}

Bitcoin-ZARの価格を取得:

{
  "jsonrpc": "2.0",
  "method": "get_crypto_price",
  "params": {"pair": "XBTZAR"},
  "id": 2
}

発達

プロジェクト構造

├── .env                 # Environment variables (API credentials)
├── .gitignore           # Git ignore configuration
├── .vscode/             # VS Code specific settings
│   └── mcp.json         # MCP configuration for VS Code
├── src/                 # Source code
│   ├── main.py          # Entry point
│   └── luno_mcp_server/ # MCP server implementation
│       ├── luno_client.py # Luno API client
│       └── server.py    # MCP server core
├── tests/               # Test suite
├── test_client.py       # Simple test client for the MCP server
├── requirements.txt     # Project dependencies
└── setup.py             # Package setup

テストの実行

python -m pytest tests/

新機能の追加

新しい Luno API 機能を追加するには:

  1. src/luno_mcp_server/luno_client.pyLunoClientクラスを新しい API メソッドで拡張します。

  2. src/luno_mcp_server/server.pyLunoMCPServerクラスに対応するメソッドを追加します。

  3. server.pyMCP_METHODSリストを更新し、 _register_methods関数でメソッドを登録します。

  4. テストをtests/ディレクトリに追加する

建築

MCP サーバーはシンプルなアーキテクチャを使用します。

  • 通信用のJSON-RPC 2.0

  • トランスポート用の標準入出力(STDIO)

  • 暗号通貨操作のためのLuno APIクライアント

トラブルシューティング

よくある問題

  • API認証エラー: Luno APIキーが.envファイルまたは.vscode/mcp.jsonに正しく設定されていることを確認してください。

  • インポートエラー: 仮想環境がアクティブ化されていることを確認してください

  • レート制限: Luno API にはレート制限があります。本番環境での使用には再試行ロジックを実装してください。

構成の優先順位

サーバーを起動すると、構成値が次の優先順位で読み込まれます。

  1. MCP 構成を通じて渡される環境変数 (最高優先度)

  2. .envファイルの値

  3. コード内のデフォルト値(最低優先度)

つまり、MCP 構成で値を設定して、 .envファイル内の既存の値を上書きすることができます。

マルチクライアントサポート

このMCPサーバーは、WebSocketを介して複数のクライアントからの同時接続をサポートします。詳細については、 MULTI_CLIENT_SUPPORT.mdをご覧ください。

交通手段

サーバーは 2 つのトランスポート メカニズムをサポートしています。

  1. STDIO (デフォルト): 標準入出力 - 単一クライアント、VS Code MCP によって使用される

  2. WebSocket : ネットワークトランスポート - セキュリティ機能を備えた複数のクライアント

WebSocketトランスポートで実行

基本的な使用方法:

python -m src.main --transport websocket --host localhost --port 8765

セキュリティ オプション付き:

python -m src.main --transport websocket --host localhost --port 8765 \
  --max-connections 50 --max-message-size 1048576 --rate-limit 100

SSL/TLS 暗号化の場合:

# First generate certificates
./generate_certificates.sh

# Then run with SSL support
python -m src.main --transport websocket --ssl-cert ./certs/server.crt --ssl-key ./certs/server.key

WebSocketクライアントツール

リポジトリには 2 つのクライアント ツールが含まれています。

  1. test_websocket_client.py : シンプルなテストクライアント

    python test_websocket_client.py
  2. enhanced_websocket_client.py : マルチクライアントシミュレーションを備えた高度なクライアント

    # Single client mode
    python enhanced_websocket_client.py --mode single
    
    # Multi-client simulation (3 clients)
    python enhanced_websocket_client.py --mode multi --clients 3

ライセンス

MITライセンス

著作権 (c) 2025

本ソフトウェアおよび関連ドキュメント ファイルのコピーを入手するすべての人に対して、無償で許可が付与されます。

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amanasmuei/mcp-luno'

If you have feedback or need assistance with the MCP directory API, please join our Discord server