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 以上を推奨)
パッケージ管理のための
uvAPIキー付きのLunoアカウント(全機能対応)
インストール
このリポジトリをクローンする
git clone https://github.com/amanasmuei/mcp-luno.git
cd mcp-lunouvを使って仮想環境を作成する
uv venv
source .venv/bin/activate # On macOS/Linux
# On Windows use: .venv\Scripts\activate依存関係をインストールする
uv pip install -r requirements.txtLuno API 資格情報を設定します (1 つの方法を選択):
Docker サポート
Docker を使用して MCP サーバーを実行すると、さまざまなプラットフォーム間での展開が容易になり、環境の一貫性も確保できます。
Docker Compose の使用(推奨)
サンプル環境ファイルをコピーし、資格情報を設定します。
cp .env.example .env
# Edit .env file with your Luno API credentialsサーバーを起動します。
docker compose up -dサーバーは、WebSocket モードでws://localhost:8765で利用できるようになります。
ログを表示:
docker compose logs -fサーバーを停止します。
docker compose downDockerを直接使用する
イメージをビルドします。
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-lunoAIアシスタントと併用する
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 を使用するには:
提供されたスクリプトを使用して証明書を生成します。
./generate_certificates.shコンテナを実行するときに証明書ディレクトリをマウントします。
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 stdioWebSocket トランスポート (複数のクライアント)
複数のクライアント接続を同時にサポートするには、サーバーを 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.pyMCPプロトコル統合
このサーバーはモデルコンテキストプロトコル(MCP)を実装しており、AIモデルは標準化されたJSON-RPC 2.0メッセージを介してサーバーとやり取りできます。サーバーはデフォルトでSTDIO経由で動作するため、VS Code拡張機能やその他のMCP互換クライアントとの統合が容易です。
VSコード統合
.vscode/mcp.jsonファイルは、VS Code で使用するサーバーの設定を行います。2 つのサーバー設定が用意されています。
luno-mcp-server-stdio- STDIO トランスポートを使用します (デフォルトの MCP 動作)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 モデルやその他のツールとの統合が容易になります。
利用可能な方法
方法 | 説明 | 認証が必要です |
| サーバーの機能に関する情報を返す | いいえ |
| 特定の取引ペアの現在の価格を取得する | いいえ |
| 利用可能なすべての市場の概要を確認する | いいえ |
| すべてのアカウントの残高を取得する | はい |
| 新しい注文をする | はい |
| 既存の注文をキャンセルする | はい |
| 注文のステータスを取得する | はい |
| アカウントの取引履歴を取得する | はい |
| 取引ペアの手数料情報を取得する | はい |
リクエストの例
サーバー機能を取得します:
{
"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 機能を追加するには:
src/luno_mcp_server/luno_client.pyのLunoClientクラスを新しい API メソッドで拡張します。src/luno_mcp_server/server.pyのLunoMCPServerクラスに対応するメソッドを追加します。server.pyのMCP_METHODSリストを更新し、_register_methods関数でメソッドを登録します。テストを
tests/ディレクトリに追加する
建築
MCP サーバーはシンプルなアーキテクチャを使用します。
通信用のJSON-RPC 2.0
トランスポート用の標準入出力(STDIO)
暗号通貨操作のためのLuno APIクライアント
トラブルシューティング
よくある問題
API認証エラー: Luno APIキーが
.envファイルまたは.vscode/mcp.jsonに正しく設定されていることを確認してください。インポートエラー: 仮想環境がアクティブ化されていることを確認してください
レート制限: Luno API にはレート制限があります。本番環境での使用には再試行ロジックを実装してください。
構成の優先順位
サーバーを起動すると、構成値が次の優先順位で読み込まれます。
MCP 構成を通じて渡される環境変数 (最高優先度)
.envファイルの値コード内のデフォルト値(最低優先度)
つまり、MCP 構成で値を設定して、 .envファイル内の既存の値を上書きすることができます。
マルチクライアントサポート
このMCPサーバーは、WebSocketを介して複数のクライアントからの同時接続をサポートします。詳細については、 MULTI_CLIENT_SUPPORT.mdをご覧ください。
交通手段
サーバーは 2 つのトランスポート メカニズムをサポートしています。
STDIO (デフォルト): 標準入出力 - 単一クライアント、VS Code MCP によって使用される
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 100SSL/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.keyWebSocketクライアントツール
リポジトリには 2 つのクライアント ツールが含まれています。
test_websocket_client.py : シンプルなテストクライアント
python test_websocket_client.pyenhanced_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
本ソフトウェアおよび関連ドキュメント ファイルのコピーを入手するすべての人に対して、無償で許可が付与されます。