Skip to main content
Glama

Agent Node

LAN内の複数マシン間で動作するインテリジェントエージェント連携ノード。各PCに1つデプロイするだけで、「複数マシン・複数エージェントの協働チーム」を構築可能:LAN内の自動相互検出、対称的な被制御/遠隔コマンド実行、システムトレイでの状態可視化、ノード間ファイル送受信、AIクライアントが呼び出せるMCP Server内蔵。

agent-bus リポジトリから切り出した最小構成の独立プロジェクト。ソースコードで実行し、パッケージ配布は行わない。


一、機能設計

機能

説明

対称制御ノード

各PCで同一プログラムを実行、機能は同等で、相互に遠隔コマンド実行が可能

LAN自動相互検出

UDPブロードキャストbeacon(LocalSendと同様)。ノード起動後に同一セグメントの他ノードを自動検出

被制御機能

任意ノードからの shell_exec 命令を受信し、自機でコマンド実行して応答を返す。トレイからワンクリックで無効化(サーキットブレーカー)可能

遠隔制御機能

検出した任意ノードに対して「このPCでコマンド実行」を指示し、実行結果を取得

状態可視性

トレイアイコンの色が変化(ノードオンライン=緑、なし=灰)、タイトルに検出ノード数をリアルタイム表示

ノード命名

デフォルトはhostname。Webパネルでいつでも改名可能、人間が覚えやすいように

ノード間ファイル送受信

fetch_file(能動的取得)/ post_file(ファイル/ディレクトリ送信、相手の受信箱に保存)

内蔵MCP Server

標準MCPツール10個。Claude Desktop / Cursor などのAIクライアントが接続可能

中心役割(hub)

追加でMQTT broker + Webパネル + ファイルサービスを起動し、チームの中心となる

ポートフォールバック

MQTT / HTTP / 検出ポートにそれぞれ予備ポートプールを用意。占有時は自動的にフォールバック

Related MCP server: R-Shell

二、利用シーン

  • 複数マシン・複数エージェント協働:1つのAIクライアントがMCP経由で複数PCの機能をツールとしてカプセル化し、マシンを跨いでスケジューリング。

  • LAN内リモート運用 / デバッグ:任意ノードから他ノードへコマンドを送信し、結果を取得。

  • マシン間ファイル転送:単一ファイル / ディレクトリ(自動zip圧縮)の双方向送受信。

  • AIクライアント接続:「タスク送信 / 受信箱確認 / コマンド実行 / ファイル読み書き / アップロード・ダウンロード」を標準ツールとしてカプセル化し、Claude / Cursor から呼び出し。

三、技術アーキテクチャ

┌──────────── 中心节点 (一台, --role hub) ────────────┐
│  mosquitto (MQTT broker)                           │
│  bus_server (FastAPI + SQLite, Web 面板 + 文件服务) │
│  自身控制节点 (带全部功能)                            │
└────────────────────────────────────────────────────┘
          ▲ MQTT / HTTP               ▲ UDP beacon 发现
          │                           │
┌─────────┴─────────┐       ┌─────────┴─────────┐
│ worker (对称控制节点) │  ...  │ worker (对称控制节点) │
│ 连总线 + 受控/遥控    │       │ 连总线 + 受控/遥控    │
└───────────────────┘       └───────────────────┘
  • 通信層:MQTT(mosquitto)。メッセージはtopicでルーティング(agent/<id>/inbox、bus/register、bus/heartbeat/)、QoS 1、retain登録 + 遺言によるオフライン通知。

  • 検出層:UDPブロードキャストbeacon(255.255.255.255:41830)、対称で主従なし。worker起動時に自動で is_master ノードをスキャンし、実際のbrokerアドレスを取得(手動設定不要)。

  • ファイル層:HTTP(bus_server、FastAPI)。Claim-Check方式のアップロード/ダウンロード、ディレクトリ自動zip / 安全な解凍(パストラバーサル + zip-slip対策)。

  • 中心:hubロールはmosquitto(本機にインストール済みなら再利用、なければ初回起動時に build/mosquitto.zip から解凍)+ bus_server + Webパネルをインライン起動。

  • MCP:FastMCPはstdioトランスポートを使用。GUIモードと分離され、単独起動可能。

MCPツール(10個):list_online_agents · send_task · check_inbox · run_command · read_file · upload_file · download_file · fetch_file · post_file · reply_task


四、インストール

4.1 前提条件

  • Python 3.10+(全マシン)

  • LAN内の通信が可能 + ファイアウォールで許可(hub側の受信):

    • TCP 1883(MQTT、ポートプールで 1884/1885/8883/18830 にフォールバックする場合あり)

    • TCP 8000(HTTPパネル/ファイル、プールで 8001/8002/8010/8088 にフォールバック)

    • UDP 41830(検出ブロードキャスト)

4.2 hub マスター機(1台)

完全なプロジェクトディレクトリ + mosquittoが必要。

# 1. 获取代码(git clone 或拷贝整个 agent-node 文件夹)
git clone <本仓库地址>

# 2. 安装依赖
cd agent-node
pip install -r requirements.txt

# 3. 启动中心节点(起 broker + Web 面板 + 自身控制节点 + 托盘)
python executor/control_app.py --role hub
  • mosquitto:本機にインストール済みなら自動再利用(shutil.which("mosquitto") または C:\Program Files\mosquitto)。未インストールなら初回起動時に自動で build/mosquitto.zip から data/runtime/mosquitto へ解凍。そのため build/ は必ず保持すること。

  • Webパネル:起動後、ブラウザで http://127.0.0.1:8000/ を開く(ポートプールでフォールバックした場合は起動ログで実際のポートを確認)。

  • hub初回起動時に data/(bus.db、files、broker.log、node_config.json)が自動作成される。事前準備は不要。

4.3 worker その他のマシン(複数台)

最小限のサブセットのみでOK:agent_bus/ パッケージ + executor/control_app.py + requirements.txt(server/、build/、scripts/ は不要)。

# 1. 拷贝精简子集到目标机器(或 git clone 后仅运行,多余的目录会被自动忽略)
#    agent_bus/  executor/control_app.py  requirements.txt

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动 worker(无参数,自动扫描局域网中心)
python executor/control_app.py
  • brokerアドレスの設定不要:workerは --broker-host 指定なしの場合、LAN内の is_master ノードを自動スキャンして実際のアドレスを取得(host / MQTTポート / HTTPポートの3点すべて)。

  • 中心を手動指定(異なるセグメント / 自動検出失敗時):python executor/control_app.py --broker-host 192.168.1.10

  • 受信箱は自動的に Downloads/agent-node/inbox に配置。data/ 設定ディレクトリも自動生成。いずれも事前準備は不要。

4.4 最小ファイル構成

ファイル/ディレクトリ

hub

worker

説明

agent_bus/

✅

✅

通信SDK

executor/control_app.py

✅

✅

唯一のエントリポイント

requirements.txt

✅

✅

依存関係のインストール

server/(static/index.html 含む)

✅

❌

Webパネル、hubのみ使用

build/mosquitto.zip

✅

❌

brokerポータブルパッケージ、hubのみ使用

scripts/

任意

❌

パッケージングツール、実行時は不要

data/

自動生成

自動生成

実行時生成物


五、コマンドパラメータ

パラメータ

説明

デフォルト

--role {worker,hub}

ノードの役割

worker

--agent-id

ノードID(アドレス指定の識別子)

ctl-<hostname>

--name

表示名

agent-idと同じ

--broker-host

外部中心brokerのアドレスに接続(worker用。省略時は自動検出)

空

--broker-port

MQTTポート

プール内で自動選択

--http-port

HTTPポート

プール内で自動選択

--discovery-port

検出ポート

プール内で自動選択

--no-control

起動時に被制御機能を無効化

false

--headless

トレイを起動しない(バックグラウンド/テスト用)

false

--mcp

MCP Serverモード(stdio)

false

ポートプール

  • MQTT:1883 → 1884 → 1885 → 8883 → 18830

  • HTTP:8000 → 8001 → 8002 → 8010 → 8088

  • 検出:41830 → 41831 → 41832 → 41840 → 41850


六、MCP設定(AIクライアント向け)

--mcp はstdin/stdoutを使用。Claude Desktop / Cursor などがMCP ClientとしてJSON設定で起動する。

{
  "mcpServers": {
    "agent-node": {
      "command": "python",
      "args": [
        "C:/path/to/agent-node/executor/control_app.py",
        "--mcp", "--role", "worker", "--agent-id", "my-agent"
      ],
      "env": { "BUS_BROKER_HOST": "192.168.1.10" }
    }
  }
}

BUS_BROKER_HOST は省略可能——workerは自動的に中心を検出。異なるセグメントや検出失敗時は明示的に指定。

七、ディレクトリ構造

agent-node/
├── executor/
│   └── control_app.py          # 节点主入口(对称 + 托盘 + MCP + 中心角色)
├── agent_bus/                  # 通信 SDK(client/config/discovery/provision/files/schema...)
├── server/
│   ├── bus_server.py           # 中心 HTTP + 消息服务(可编程 serve_bus_server 内联启动)
│   └── static/index.html       # Web 面板
├── scripts/
│   └── build_mosquitto_zip.py  # 重建 mosquitto 便携包
├── build/
│   └── mosquitto.zip           # 便携 mosquitto(hub 首启自解压)
├── docs/
│   ├── 需求与设计.md
│   └── BUGFIX_LOG_20260819.md
└── requirements.txt

八、セキュリティモデル

本プロジェクトは信頼できるLANを前提としている:brokerは allow_anonymous、制御メッセージは平文でMQTTを経由、sender_id プレフィックスによるホワイトリストのみ実施(制御面は hub-* 識別子のみ受け入れ)。HMAC署名検証 / 暗号化 / ノードホワイトリストは行わない——信頼できないネットワークを跨ぐ場合は自己責任でセキュリティ強化が必要。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for multi-agent collaboration enabling AI agents to communicate, delegate tasks, and share artifacts across clients and machines with federation support.
    28 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server enabling AI assistants to securely operate remote servers via persistent SSH sessions, with tools for command execution, file transfer, directory listing, and system monitoring.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables AI agents on different machines to communicate and collaborate directly through relay channels, supporting structured agent contracts, real-time messaging, and human-in-the-loop approval workflows.
    9,753 npm
    MIT