Skip to main content
Glama

Pingo - ローカルLANデバッグ用MCPサーバー

ローカルネットワークをデバッグするためのツールキット一式を公開するMCPサーバーです。関心事ごとに1つのサービスを持つクリーンなアーキテクチャで構成されており、簡単に拡張できます。

ツール一覧

ツール

説明

get_network_interfaces

ローカルのIPv4インターフェースを一覧表示します(名前、IP、ネットマスク、MAC)

ping_device

単一のIPv4アドレスにpingを送信し、応答の有無と遅延を報告します

ping_sweep

/24~/32のCIDRをスイープして、生存ホストを発見します(同時実行数制限付き)

traceroute

ホストまたはIPアドレスに対して、OSネイティブのtraceroute/tracertを実行します

dns_lookup

ホスト名をIPv4/IPv6アドレスに解決します

reverse_dns_lookup

IPアドレスをホスト名に逆解決します

check_port

単一のTCPポートが開いているかを確認します

scan_port_range

rawソケットを使用してTCPポートの範囲(最大1024ポート)をスキャンします

get_arp_table

OSのARPキャッシュを読み取って、LAN上のIP-MACマッピングを取得します

get_active_connections

netstatでアクティブな接続を一覧表示します(ポートによる絞り込み指定可)

check_http_reachability

HTTP(S)エンドポイントが応答するかを、ステータスとレイテンシ付きで確認します

Related MCP server: Network Ops MCP

設計ノート

  • 関心事ごとに1つのサービス(src/services/*)- 各サービスは1つの仕事だけを担当し、コントローラに注入されます。新しい診断機能(例: MTU検出、帯域測定)を追加するには、新しいサービスとregisterTool呼び出しをそれぞれ1つ追加するだけで、他に変更は必要ありません。

  • シェルインジェクションの攻撃面なし。 すべてのOSコマンドはexecFile(argv配列、シェル文字列は不使用)経由で実行され、すべての入力はコマンドやソケットに渡る前に厳格な許可リスト(src/utils/validators.ts)で検証されます。

  • デフォルトで上限あり。 ポートスキャンは1024ポートの範囲が上限、スイープは/24が上限、すべての操作にタイムアウトがあります。不正な入力でプロセスがハングしたり、無制限のネットワークスキャンになったりすることはありません。

  • **DNSはNode.jsネイティブのdns/promises**を使用しており、シェルコマンドは一切使いません。最も危険そうに聞こえるこのツールで、exec実行の対象面が1つ減ります。

実行方法

pnpm install
pnpm dev        # tsx src/index.ts, hot-reload dev mode
pnpm build && pnpm start   # compiled prod run

サーバーはhttp://localhost:3000/mcpで待ち受けます。

拡張方法

  1. IYourServiceインターフェースを実装したsrc/services/YourService.tsを追加します(既存のサービスに倣い、コンストラクタ不要、1〜2つの目的に特化したメソッドを持たせます)。

  2. PingoMcpController.tsのPingoServicesに追加し、src/index.tsでインスタンス化します。

  3. registerTools()にserver.registerTool(...)ブロックを1つ追加します。

拡張に必要な箇所はこれだけです。変更が必要なファイルは他にはありません。

Related MCP Connectors

Related MCP Servers