На этих выходных я собрал сервер MCP для биткойн-кошелька: инструменты, которые агенты ИИ могут вызывать через протокол контекста модели. [Репозиторий](https://github.com/markmhendrickson/mcp-server-bitcoin) предоставляет 93 инструмента на уровне 1 и уровне 2. Оба мнемосхемы управляют обоими.

Ранее я был генеральным менеджером [Leather](https://leather.io), криптокошелька, который также поддерживает биткойны и стеки. В Leather я увидел, что кошельки с самостоятельным хранением, ориентированные на человека, в основном достигают людей, желающих поглотить внимание и сложность (например, дегенератов и разработчиков). Это означало ключевую гигиену, осведомленность о комиссиях, потоки подтверждений и все остальное. Когнитивная нагрузка сужала реальный адресный рынок.

Агентские кошельки меняют это. Когда основным интерфейсом являются агенты, которые рассуждают и выполняют политику, пользователь утверждает только то, что имеет значение. Трение снижается, и число людей, которые практически могут держать свои ключи, увеличивается.

Те же две цепи. Другая поверхность.

## Что предоставляет сервер (L1 и L2 на одной поверхности)

Сервер представляет собой один процесс MCP. Клиенты отправляют имена инструментов и аргументы JSON через stdio и получают обратно структурированные результаты. Деструктивные действия (отправка, подписание и широковещательная рассылка, развертывание) поддерживают Dry_run и по умолчанию не транслируются. Сервер никогда не возвращает ключи или мнемоники.

### Уровень 1 (Биткойн)

**Основной биткойн:**

- Получение адреса для P2PKH, P2SH-P2WPKH, P2WPKH и P2TR с открытыми ключами и путями.
- Аккаунты с балансами по типам адресов ([mempool.space](https://mempool.space) для данных UTXO); баланс кошелька и цены BTC (USD, EUR).
- Отправки одному и нескольким получателям (сумма в BTC или евро); предварительный просмотр перевода с оценкой стоимости перед отправкой.
- Развертка (отправка максимума) и консолидация UTXO.
- знак, декодирование и пакетный знак ПСБТ; подписывайте и проверяйте сообщения (наследие ECDSA и BIP-322).
- Уровни комиссий из mempool.space и оценка комиссий по количеству входов/выходов и типу адреса.
- Список UTXO с фильтрами (тип адреса, минимальное значение, только подтверждено) и деталями каждого UTXO.

**Порядковые номера и надписи:**

- Список надписей с нумерацией страниц; детали надписи (происхождение, тип содержания, порядковый номер сата, редкость, местоположение).
- Отправляйте надписи (полные UTXO или разделенные, чтобы получателю доходил только диапазон спутников надписи).
- Извлекать порядковые номера из смешанных UTXO; восстановить BTC с порядкового адреса (зачистка UTXO без записи); восстановить порядковые номера, поступившие на платежный адрес, обратно на основной адрес.
- Создавайте отдельные или пакетные записи с оценками комиссий за фиксацию/раскрытие.

**Управление транзакциями и кошельком:**

- История транзакций для BTC и стеков; статус для одного TX.
- Ускорить ожидание BTC через RBF; отменить ожидающие BTC (отправка RBF самому себе).
- Конфигурация сети и конечные точки API; переключить основную сеть/тестовую сеть; добавить пользовательскую сеть.
- Список всех поддерживаемых названий и описаний инструментов.

**Ledger (приложение для биткойнов):**

- Получите адреса BTC с подключенного устройства [Ledger](https://www.ledger.com).
- Подпишите PSBT с помощью приложения Ledger Bitcoin.

### Уровень 2 (стеки)

Та же мнемоника позволяет получить ключи Stacks (путь `m/44'/5757'/0'/0/0`). [Hiro](https://hiro.so) API стеков для данных цепочки и трансляции.

**Стек:**

- Адреса и открытые ключи; счета с балансом STX, заблокированными суммами, одноразовыми номерами.
- Баланс, включая взаимозаменяемые и невзаимозаменяемые токены.
- Передача STX (micro-STX) с возможностью запоминания; предварительный перевод с комиссией и проверкой баланса.
- Взаимозаменяемые передачи SIP-10 и SIP-9 NFT через контрактные вызовы.
- Ясность: вызов публичной функции, контракт развертывания, вызов только для чтения.
- Подписать сериализованные стеки tx (SIP-30), подписать сообщение, подписать структурированные данные SIP-018; nonce и оценка комиссии.
- Обновление профиля в цепочке ([schema.org/Person](https://schema.org/Person)) для имен BNS.
- Запросы транзакций с фильтрами (тип, диапазон блоков, без привязки) и по контракту.
- Мемпул: список ожидающих транзакций, статистика мемпула, отброшенные транзакции.
- Обозреватель блоков: последние блоки, блок по высоте или хешу, блоки стека для данного блока биткойнов.
- События контракта: события для контракта или события актива для адреса.
- Метаданные токенов: метаданные и держатели SIP-10 и SIP-9.
- Информация о сети и здоровье/статус.

**Свопы, DeFi и мост:**

- Поддерживаемые пары и протоколы ([ALEX](https://alexlab.co/), [Bitflow](https://www.bitflow.finance), [Velar](https://www.velar.co)).
- Своп-котировка (расчетный объем производства, ставка, комиссия) для всех трех; выполнить обмен через ALEX DEX. Bitflow и Velar поддерживают котировки и обнаружение пар; вы можете добавить выполнение через SDK протокола (например, Velar SDK возвращает параметры вызова контракта).
- История обмена из активности в сети.
- Баланс sBTC и информация о пополнении/выводе бриджей.
- Стекирование: текущий статус PoX, информация о цикле (оставшиеся блоки, процент выполнения, расчетное оставшееся время, уровень участия), инициирование индивидуального стека, отзыв делегирования.

**BNS и рыночные данные:**

- Поиск [BNS](https://docs.stacks.co/docs/stacks-blockchain/bns) (имя по адресу), имена, принадлежащие адресу, регистрация имени BNS.
- Цены на несколько активов (например, [CoinGecko](https://www.coingecko.com)); история цен для построения графиков.
- Сводка портфеля (BTC + STX в долларах США); все активы и предметы коллекционирования (надписи, стеки NFT).

**Ledger (приложение Stacks):**

- Получите адреса стеков из Ledger.
- Подпишите транзакцию Stacks с помощью приложения Ledger Stacks.

## Безопасность и дизайн

⚠️ Этот сервер MCP является экспериментальным и небезопасен для значимых средств. Используйте только с кошельками, которые вы готовы потерять. Никто не тестировал и не проверял код. Я рассматриваю это как исследовательский артефакт для изучения поверхностей кошельков, присущих агентам.

Деструктивные операции по умолчанию имеют значение `dry_run: true`. Инструменты предварительного просмотра и оценки существуют для каждого пути отправки. Ключи остаются вне контроля версий и ответов инструментов. Сценарий запуска загружает `.env` из корня репо.

**Ключевые переменные кошелька (держать в секрете, никогда не совершать):**

- **`BTC_PRIVATE_KEY`** — закрытый ключ Биткойна в WIF-кодировке; если установлено, имеет приоритет над мнемоникой.
- **`BTC_MNEMONIC`** — исходная фраза BIP-39; сервер использует его для получения ключей Bitcoin и Stacks (та же мнемоника, путь `m/44'/5757'/0'/0/0` для Stacks).
- **`BTC_MNEMONIC_PASSPHRASE`** — дополнительная парольная фраза BIP-39 для использования с `BTC_MNEMONIC`.

**Безопасность и ограничения (env или .env):**

- **`BTC_NETWORK`** — `mainnet` или `testnet` (по умолчанию `testnet`).
- **`BTC_MAINNET_ENABLED`** — установите этот параметр, чтобы разрешить отправку по основной сети (флаг безопасности).
- **`BTC_DRY_RUN`** — если установлено (по умолчанию), деструктивные операции (отправка, подписание и широковещательная рассылка, развертывание) не транслируются; установите для него значение false, чтобы разрешить реальные транзакции.
- **`BTC_MAX_SEND_BTC`** — дополнительное ограничение на сумму отправки в BTC; сервер отклоняет запросы выше этого значения.
- **`BTC_MAX_FEE_SATS`** — дополнительный лимит комиссии в сатоши за транзакцию.
- **`STX_ACCOUNT_INDEX`** — индекс счета деривации стеков (по умолчанию `0`).
- В противном случае конфигурация определяет уровень оплаты (фиксированная ставка или уровень mempool.space: час, полчаса, самый быстрый).

## Как это подходит для моего стека агентов

Я запускаю агентов на трехуровневой архитектуре. Слои четко разделены, поэтому память, рассуждения и действия остаются на своих местах.

**Слой истины:** Это основа памяти. Он хранит типизированные структурированные данные: активы, потоки, транзакции, контакты, задачи и все остальное. В моей настройке каноническим хранилищем является [Neotoma](/posts/truth-layer-agent-memory). Он использует источники событий и редукторы с полным происхождением и разрешением сущностей. Агенты читают оттуда. Они никогда не пишут правду напрямую. Все обновления передаются через события предметной области, создаваемые уровнем выполнения.

**Стратегический уровень.** Здесь находятся цели, ограничения и тактика. Здесь хранятся стратегические документы, тактические руководства и оперативные руководства. Агенты используют этот уровень для рассуждений: они считывают состояние мира, оценивают приоритеты и риски, а также принимают решения и команды. Стратегия – это чистое познание. Никаких побочных эффектов. Государство внутри, решения снаружи.

**Уровень выполнения.** Здесь происходят внешние действия. Он принимает команды от уровня стратегии и выполняет побочные эффекты через адаптеры: электронную почту, календарь, DNS и, в данном случае, MCP кошелька Bitcoin и Stacks. Сервер кошелька — это один из многих адаптеров исполнения. Он никогда не изменяет слой истины. Он делает свое дело (отправляет, подписывает, меняет), а остальная часть стека записывает, что произошло через события домена. Команды на входе, события на исходе.

Я определяю и поддерживаю стратегию. Агенты читают данные из уровня истины и вызывают инструменты MCP для выполнения. Я не использую криптографические интерфейсы типа «укажи и щелкни» для рутинных операций. Я вмешиваюсь только для того, чтобы одобрить действия, которые превышают мои заранее установленные ограничения.

Краткосрочные варианты использования у меня разовые: оплата услуг, ребалансировка портфелей посредством ручных подсказок. В долгосрочной перспективе я хочу, чтобы эти потоки были автоматизированы. Агенты будут отслеживать, рассуждать и выполнять действия в рамках политики. Я видел объяснения и одобрял их, когда это было необходимо.

## Как я подхожу к сборке

Сначала я тестирую сервер в своих рабочих процессах. Я тестирую каждую поверхность (отправки, PSBT, порядковые номера, переводы стеков, свопы) постепенно с небольшими суммами и пробными прогонами.

Я подключил его к тому же стеку, где уже использую [уровни истины и стратегии](/posts/agentic-search-and-the-truth-layer#where-ive-hit-limits). Агенты могут комбинировать действия кошелька с календарем, электронной почтой и данными. Внешние пользователи пока не включены.

Моя цель — проверить форму поверхности агентного кошелька и сделать мои собственные операции с биткойнами и стеками управляемыми агентом, а не вручную.

Чтобы запустить его: клонируйте [mcp-server-bitcoin](https://github.com/markmhendrickson/mcp-server-bitcoin) (или добавьте как подмодуль в `mcp/btc_wallet/`), добавьте сервер в конфигурацию MCP (используйте путь к скрипту `run_btc_wallet_mcp.sh`) и используйте тестовый кошелек с включенным пробным запуском.