Сервер Luno MCP
Сервер Model Context Protocol (MCP) для API криптовалютной биржи Luno. Этот сервер предоставляет стандартизированный интерфейс для моделей и приложений ИИ для взаимодействия с API Luno для торговли криптовалютой.
_ __ __ ____ ____
| | _ _ _ __ ___ | \/ |/ ___| _ \
| | | | | | '_ \ / _ \ | |\/| | | | |_) |
| |___| |_| | | | | (_) || | | | |___| __/
|_____|\__,_|_| |_|\___/ |_| |_|\____|_| Функции
Информация о ценах криптовалют в режиме реального времени через API Luno
Обзор рынка по всем торговым парам
Запросы баланса счета
Управление заказами (размещение, отмена, статус)
Извлечение истории транзакций
Информация о сборах
Стандартизированный интерфейс JSON-RPC 2.0
Простая интеграция с приложениями ИИ
Related MCP server: AMOCA Solana MCP Server
Предпосылки
Python 3.8+ (рекомендуется Python 3.9+)
uvдля управления пакетамиУчетная запись Luno с ключами API (для полной функциональности)
Установка
Клонировать этот репозиторий
git clone https://github.com/amanasmuei/mcp-luno.git
cd mcp-lunoСоздать виртуальную среду с помощью
uv
uv venv
source .venv/bin/activate # On macOS/Linux
# On Windows use: .venv\Scripts\activateУстановить зависимости
uv pip install -r requirements.txtНастройте учетные данные API Luno (выберите один способ):
Поддержка докера
Вы можете запустить сервер MCP с помощью Docker для более простого развертывания и обеспечения единообразной среды на разных платформах.
Использование Docker Compose (рекомендуется)
Скопируйте пример файла среды и настройте свои учетные данные:
cp .env.example .env
# Edit .env file with your Luno API credentialsЗапустите сервер:
docker compose up -dСервер будет доступен по адресу ws://localhost:8765 в режиме WebSocket.
Просмотр журналов:
docker compose logs -fОстановите сервер:
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Использование с помощниками на основе искусственного интеллекта
После запуска контейнера Docker вы можете подключить различных помощников на основе искусственного интеллекта для использования сервера Luno MCP:
Курсор
Добавьте следующее в конфигурацию курсора:
{
"mcp_servers": {
"luno": {
"type": "websocket",
"url": "ws://localhost:8765"
}
}
}Клод Десктоп
В настройках Claude Desktop у вас есть два варианта настройки сервера MCP:
Вариант 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"
}
}
}
}Эта конфигурация запускает сервер Python напрямую с использованием транспорта STDIO.
Примечание: замените
/path/to/mcp-lunoфактическим путем, по которому вы клонировали репозиторий.
Клайн
Добавьте следующее в файл конфигурации Cline:
{
"mcp": {
"servers": {
"luno": {
"transport": "websocket",
"url": "ws://localhost:8765"
}
}
}
}Поддержка SSL с Docker
Чтобы использовать SSL с контейнером Docker:
Сгенерируйте сертификаты с помощью предоставленного скрипта:
./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Ручная установка
Вариант А : использование файла .env
cp .env.example .envЗатем отредактируйте файл .env , чтобы добавить свои учетные данные API Luno:
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 в двух различных транспортных режимах:
Транспорт STDIO (по умолчанию, один клиент)
Это режим по умолчанию, который поддерживает одно клиентское соединение через стандартный ввод/вывод:
python -m src.main --transport stdioТранспорт WebSockets (несколько клиентов)
Для поддержки нескольких клиентских подключений одновременно запустите сервер в режиме 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: Хост для привязки к транспорту WebSocketMCP_PORT: порт для привязки к транспорту WebSocket
Тестирование со стандартным клиентом
Для тестирования транспорта STDIO используйте прилагаемый тестовый клиент:
python test_client.pyИнтеграция протокола MCP
Этот сервер реализует протокол контекста модели, который позволяет моделям ИИ взаимодействовать с ним через стандартизированные сообщения JSON-RPC 2.0. Сервер работает через STDIO по умолчанию, что упрощает интеграцию с расширениями VS Code и другими MCP-совместимыми клиентами.
Интеграция VS-кода
Файл .vscode/mcp.json настраивает сервер для использования с VS Code. Предоставляются две конфигурации сервера:
luno-mcp-server-stdio— использует транспорт STDIO (поведение MCP по умолчанию)luno-mcp-server-websocket— использует транспорт WebSocket для поддержки нескольких клиентов
Конфигурация VS-кода
Для использования транспорта WebSocket с VS Code файл mcp.json включает конфигурацию типа процесса:
"luno-mcp-server-websocket": {
"type": "process",
"command": "python",
"args": ["-m", "src.main", "--transport", "websocket"],
"env": {
// environment variables
}
}При использовании транспорта WebSocket VS Code запустит сервер как фоновый процесс, а не будет взаимодействовать через STDIO.
Настройка MCP-сервера в VS Code
Вы можете настроить сервер непосредственно из файла .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"
}
}
}
}Эта конфигурация будет использоваться расширениями VS Code, поддерживающими протокол MCP, что упрощает интеграцию с моделями ИИ и другими инструментами.
Доступные методы
Метод | Описание | Требуется аутентификация |
| Возврат информации о возможностях сервера | Нет |
| Получить текущую цену для определенной торговой пары | Нет |
| Получите обзор всех доступных рынков | Нет |
| Получить баланс всех счетов | Да |
| Оформить новый заказ | Да |
| Отменить существующий заказ | Да |
| Получить статус заказа | Да |
| Получить историю транзакций для счета | Да |
| Получить информацию о комиссиях для торговой пары | Да |
Примеры запросов
Получить возможности сервера:
{
"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/Добавление новых функций
Чтобы добавить новые возможности API Luno:
Расширьте класс
LunoClientвsrc/luno_mcp_server/luno_client.pyновыми методами APIДобавьте соответствующие методы в класс
LunoMCPServerвsrc/luno_mcp_server/server.pyОбновите список
MCP_METHODSвserver.pyи зарегистрируйте свои методы в функции_register_methodsДобавьте тесты в каталог
tests/
Архитектура
Сервер MCP использует простую архитектуру:
JSON-RPC 2.0 для связи
Стандартный ввод/вывод (STDIO) для транспорта
Клиент API Luno для криптовалютных операций
Поиск неисправностей
Распространенные проблемы
Ошибки аутентификации API : убедитесь, что ключи API Luno правильно установлены либо в файле
.env, либо в.vscode/mcp.jsonОшибки импорта : убедитесь, что вы активировали виртуальную среду.
Ограничение скорости : API Luno имеет ограничения скорости — реализуйте логику повторных попыток для использования в производстве.
Приоритет конфигурации
При запуске сервера значения конфигурации загружаются в следующем порядке приоритета:
Переменные среды, проходящие через конфигурацию MCP (наивысший приоритет)
Значения в файле
.envЗначения по умолчанию в коде (самый низкий приоритет)
Это означает, что вы можете задать значения в конфигурации MCP, чтобы переопределить любые существующие значения в вашем файле .env .
Поддержка нескольких клиентов
Этот сервер MCP поддерживает несколько клиентских подключений одновременно через WebSockets. Для получения подробной информации см. MULTI_CLIENT_SUPPORT.md .
Варианты транспорта
Сервер поддерживает два транспортных механизма:
STDIO (по умолчанию): стандартный ввод/вывод — один клиент, используется VS Code MCP
WebSockets : сетевой транспорт — несколько клиентов с функциями безопасности
Работа с WebSockets Transport
Основное использование:
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
Репозиторий включает два клиентских инструмента:
test_websocket_client.py : Простой тестовый клиент
python test_websocket_client.pyenhance_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
Лицензия
Лицензия Массачусетского технологического института
Авторские права (c) 2025
Настоящим предоставляется разрешение любому лицу на бесплатное получение копии данного программного обеспечения и связанных с ним файлов документации.