Monero について
Monero は公式 Monero ノードとプログラム操作可能なウォレットを一つのコンテナにまとめ、運用者、スクリプト、AI エージェント向けに提供します。HTTP と MCP でノード状態やウォレット操作にアクセスでき、読み取り専用や送金を個別に制御できます。
主な機能
- 01monerod とウォレットプロセスを実行
- 02HTTP API によるノード・ウォレット操作
- 03残高、アドレス、送金の確認
- 04リモートウォレット向け制限付き RPC
- 05書き込みと送金の権限制御
活用シーン
- 01プライベートな Monero ノードとウォレットの運用
- 02ウォレット状態と取引履歴の確認
- 03送信前の送金手数料の見積もり
- 04MCP クライアントからウォレットツールを利用
MCP 対応
MCP サーバーは HTTP API と同じポートの `/mcp` で利用でき、同じ操作をツールとして公開します。MCP クライアントは Bearer トークンで接続します。MCP 経由の送金は既定で無効で、明示的な設定が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
docker-monero
プログラムから操作できるウォレットを備えた、自分専用のMoneroノードを1つのコンテナで利用できます。公式のmonerodとmonero-wallet-rpcのリリースを実行し、その前段にHTTP APIとMCPサーバーを配置するため、スクリプトやAIエージェントはチェーンの読み取り、ウォレットの開閉、残高の確認、XMRの送金を行えます。また、このノードはCake Walletやその他のウォレットが接続する制限付きRPCも提供します。
内容
| 部品 | 役割 |
|---|---|
monerod | ノードです。チェーンを同期します。デフォルトではプルーニングされます。リモートウォレット向けに18089で制限付きRPCを提供します。 |
monero-wallet-rpc | 開いているウォレットごとに1つのプロセスを起動し、API経由で開始・停止します。 |
| HTTP API | ポート8080の/v1です。ノードの状態、ウォレットのライフサイクル、残高、アドレス、送金履歴、送金を扱います。 |
| MCP サーバー | 同じポートの/mcpです。同じ操作をAIエージェント向けのツールとして提供します。 |
| メトリクス | ポート9091でPrometheusを提供します。 |
バイナリはgetmonero.orgから取得し、ビルド時に固定されたSHA-256ハッシュと照合します。イメージは非rootユーザーとして実行され、ルートファイルシステムが読み取り専用でも動作します。
クイックスタート
まずはregtestでお試しください。ブロックを必要に応じてマイニングできるプライベートなオフラインチェーンなので、実際のお金には一切触れません。
TOKEN=$(openssl rand -hex 32)
docker run -d --name monero -p 127.0.0.1:8080:8080 \
-e DOCKER_MONERO_API_TOKEN=$TOKEN -e DOCKER_MONERO_NETWORK=regtest \
psyb0t/monero
until curl -fs localhost:8080/ready >/dev/null; do sleep 1; done
xmr() { curl -s -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' "$@"; }
xmr -X POST localhost:8080/v1/wallets -d '{"name":"alice","password":"pw"}'
ADDR=$(xmr localhost:8080/v1/wallets/alice/addresses | jq -r .primaryAddress)
xmr -X POST localhost:8080/v1/node/regtest/generate-blocks -d "{\"count\":100,\"address\":\"$ADDR\"}"
xmr localhost:8080/v1/wallets/alice/balance
mainnetでは、composeファイルを使用します。
curl -LO https://raw.githubusercontent.com/psyb0t/docker-monero/main/docker-compose.yml
curl -L -o .env https://raw.githubusercontent.com/psyb0t/docker-monero/main/.env.example
# Set DOCKER_MONERO_API_TOKEN in .env. For the default DOCKER_MONERO_DATA_PATH:
mkdir -p ./data
sudo chown 10001:10001 ./data
docker compose up -d
mainnetの最初の同期には数日かかり、プルーニング後のディスク容量は約105 GiB必要です。進捗はGET /v1/node/infoで確認できます。
ウォレットの使用
ウォレットは、読み取りや支払いに使う前に開いておく必要があります。開くとウォレットプロセスが起動し、閉じるとウォレットが保存されてプロセスが停止します。
xmr -X POST localhost:8080/v1/wallets/alice/open -d '{"password":"pw"}'
xmr localhost:8080/v1/wallets/alice/status # syncing? how far behind?
xmr -X POST localhost:8080/v1/wallets/alice/transfers \
-d '{"destinations":[{"address":"4...","amount":"1500000000000"}],"dryRun":true}'
xmr -X POST localhost:8080/v1/wallets/alice/close
金額は最小単位の文字列です(1 XMR = 10^12)。ノードとウォレットの両方の同期が完了するまで送金は拒否されます。また、dryRunではトランザクションをブロードキャストせずに手数料を見積もれます。その他の機能はdocs/api.mdとapi/api.ymlのOpenAPI仕様を参照してください。
書き込みの切り替え
必要なウォレットを作成または復元したら、デプロイ環境を制限してください。
DOCKER_MONERO_READ_ONLY=trueにすると、新規ウォレットや復元ウォレットの作成、新しいサブアドレスの作成、送金など、すべての書き込みが拒否されます。開く、閉じる、読み取る操作は引き続き可能です。DOCKER_MONERO_ALLOW_TRANSFERS=falseにすると、送金のみが拒否されます。- MCPクライアントが送金するには、
DOCKER_MONERO_MCP_ALLOW_TRANSFERS=trueを設定する必要があります。デフォルトでは無効です。
Cake Walletやその他のリモートウォレット
ポート18089を公開し、ウォレットのカスタムノードとしてhttp://<your-host>:18089を指定してください。これはmonerodの制限付きRPCで、ウォレットに必要な機能のみを提供し、ノードを制御するコマンドは提供しません。ネットワーク上でノードを公開する場合は、DOCKER_MONERO_PUBLIC_NODE=trueを設定してください。
ログインを必須にするには、DOCKER_MONERO_RPC_LOGIN=username:passwordを設定し、ウォレットのカスタムノード設定にも同じユーザー名とパスワードを入力してください。ユーザー名は空欄にできず、コロンを含めることもできません。パスワードは16文字以上にしてください。空欄の場合、ログインは無効になります。configuration.mdを参照してください。
MCP
Authorization: Bearer <token>を指定して、MCPクライアントをhttp://localhost:8080/mcpに接続してください。利用できるツールと、各モードで登録されるツールについてはdocs/mcp.mdを参照してください。
エージェントとの連携
エージェントは、スキル(REST ルート、MCP ツール、ウォレットや送金に関するルール)を使って実行中の docker-monero インスタンスを操作できます。また、stdio のみを使う MCP クライアント向けには、ブリッジプラグインも利用できます。インストール後は、エージェントのセッションを再起動してください。
プラグインを有効にすると、Claude Code からインスタンスの URL と API トークンを求められます。
claude plugin marketplace add psyb0t/agents
claude plugin install monero@psyb0t
Codex:
codex plugin marketplace add psyb0t/agents
codex plugin add monero@psyb0t
OpenClaw、スキル、MCP ブリッジプラグイン:
openclaw skills install @psyb0t/monero
openclaw plugins install clawhub:@psyb0t/monero
スキルとブリッジは、たとえば http://localhost:8080 のような MONERO_URL と、DOCKER_MONERO_API_TOKEN の値である MONERO_TOKEN を読み込みます。Streamable HTTP に対応するクライアントは、ブリッジを介さず、Authorization: Bearer <token> ヘッダーを付けて http://localhost:8080/mcp に接続できます。このサーバーは MCP レジストリにも io.github.psyb0t/monero として登録されています。
このセクションでは、エージェントからサービスを利用する方法を説明します。このリポジトリを変更する場合は、AGENTS.md をお読みください。
設定
すべての設定項目は DOCKER_MONERO_* 環境変数で、既定値とともに docs/configuration.md に記載されています。必須なのは DOCKER_MONERO_API_TOKEN のみです。Compose はホストディレクトリ DOCKER_MONERO_DATA_PATH(既定値は ./data)を /data にマウントします。このディレクトリは UID/GID 10001 から書き込み可能である必要があります。また、その wallets サブディレクトリをバックアップしてください。
コンテナが停止するまで十分な時間を確保してください。開いているすべてのウォレットを保存し、monerod がデータベースを書き出せるようにします。docker stop -t 180 を使用してください。compose ファイルでは stop_grace_period が設定されています。
ドキュメント
- docs/api.md:金額、ウォレットのライフサイクル、同期、送金、エラーコード
- docs/configuration.md:すべての変数、ポート、ディスク
- docs/mcp.md:MCP ツール
- docs/security.md:サービスが保護する対象と、利用者が行う必要のあること
- docs/architecture.md:プロセス、起動、シャットダウン、クラッシュ処理
- docs/development.md:ソースからのビルドとテスト
開発
make build # static binary in build/
make test # unit tests
make test-api # the real image on regtest
make lint
詳細は docs/development.md をご覧ください。
ライセンス
WTFPL。Monero 自体には、独自の BSD-3-Clause ライセンスが適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。