mcpField
M
Monero

Monero

ローカル
github.com/psyb0t金融データ02 週間前に更新

Monero について

Monero は公式 Monero ノードとプログラム操作可能なウォレットを一つのコンテナにまとめ、運用者、スクリプト、AI エージェント向けに提供します。HTTP と MCP でノード状態やウォレット操作にアクセスでき、読み取り専用や送金を個別に制御できます。

主な機能

  1. 01monerod とウォレットプロセスを実行
  2. 02HTTP API によるノード・ウォレット操作
  3. 03残高、アドレス、送金の確認
  4. 04リモートウォレット向け制限付き RPC
  5. 05書き込みと送金の権限制御

活用シーン

  1. 01プライベートな Monero ノードとウォレットの運用
  2. 02ウォレット状態と取引履歴の確認
  3. 03送信前の送金手数料の見積もり
  4. 04MCP クライアントからウォレットツールを利用

MCP 対応

MCP サーバーは HTTP API と同じポートの `/mcp` で利用でき、同じ操作をツールとして公開します。MCP クライアントは Bearer トークンで接続します。MCP 経由の送金は既定で無効で、明示的な設定が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"psyb0t-monero": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/monero:v0.2.1"
]
}
}
}
起動コマンドdocker run -i --rm docker.io/psyb0t/monero:v0.2.1

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocidocker.io/psyb0t/monero:v0.2.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

docker-monero

CI coverage version license Docker Pulls

プログラムから操作できるウォレットを備えた、自分専用の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 が設定されています。

ドキュメント

開発

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 ライセンスが適用されます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。