mcpField
A
AI Assistant Chat with Nmap Tool Integration

AI Assistant Chat with Nmap Tool Integration

ローカル
github.com/jarrodcoulterAI・エージェント781 週間前に更新

AI Assistant Chat with Nmap Tool Integration について

GradioとOpenAI Agents SDKを使い、ローカルファイルへのアクセスとDocker上のNmapスキャナーをAIアシスタントに提供するチャットアプリのサンプルです。対話形式のネットワークスキャンを想定しています。

主な機能

  1. 01Gradioのウェブチャット画面
  2. 02OpenAI Agents SDKのアシスタント
  3. 03アプリのディレクトリに限定したファイルアクセス
  4. 04Nmapによるホスト・ポートスキャン
  5. 05Docker化されたスキャンサーバー

活用シーン

  1. 01チャットでホストへの疎通を確認
  2. 02ネットワークのポートをスキャンしてサービスを検出
  3. 03SMB共有を列挙

MCP 対応

アプリはファイルシステムMCPサーバーとDocker化されたNmap MCPサーバーを管理します。Nmapサーバーは、ホスト確認、ポートスキャン、サービス検出、SMB共有列挙をエージェント向けのツールとして公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"nmap-mcp-server-jarrodcoulter": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

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

パッケージ
ocibuild

ツール

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

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

詳細

Nmap ツール連携機能を備えた AI アシスタントチャット

このプロジェクトでは、Gradio を使用したウェブベースのチャットインターフェースを提供します。ユーザーは OpenAI API を利用する AI アシスタントとやり取りできます。アシスタントには、ローカルファイルシステムを操作し、コンテナ化された Nmap サーバーを使用してネットワークスキャンを実行するツールが備わっています。

概要

このアプリケーションでは、OpenAI Agents SDK フレームワークを使用しています。ユーザーのリクエストは、内容を推論し、利用可能なツールを使用するかどうかを判断できる AI エージェントによって処理されます。主な機能は次のとおりです。

  • 簡単に操作できる Gradio フロントエンド。
  • OpenAI モデルを利用する AI エージェントのバックエンド(API キーが必要です)。
  • ファイルシステムにアクセスする Model Context Protocol(MCP)サーバー(@modelcontextprotocol/server-filesystem を使用)。
  • Nmap スキャン機能(ping、ポートスキャン、サービス検出、SMB 共有の列挙)を提供するコンテナ化された MCP サーバー[cite: 14, 16, 18, 20, 22]。

Nmap サーバーは、依存関係の管理と分離を容易にするため、Docker コンテナ内で実行されます。

機能

  • 会話型 AI アシスタント。
  • ファイルシステムアクセスツール(アプリケーションディレクトリ内に限定)。
  • Nmap によるネットワークスキャンツール:
    • ping_host [cite: 14]
    • scan_network(上位 100 ポート)[cite: 16]
    • all_scan_network(包括的な -A スキャン)[cite: 18]
    • all_ports_scan_network(全 65535 ポート)[cite: 20]
    • smb_share_enum_scan(SMB 共有の列挙)[cite: 22]
  • Gradio を使用したウェブベースの UI[cite: 11, 12]。
  • Docker を使用したコンテナ化 Nmap ツールサーバー。

アーキテクチャ

  1. Gradio UI(app.txt):ユーザー入力を処理し、会話履歴を表示します。
  2. メインアプリケーション(app.txt):
    • Gradio インターフェースを初期化します。
    • 会話状態を管理します。
    • MCP サーバーを設定して管理します。
    • OpenAI エージェントをインスタンス化して実行します。
  3. OpenAI エージェント(agents ライブラリ):ユーザーメッセージを処理し、必要に応じてツールを呼び出して応答を生成します[cite: 1, 3]。
  4. MCP サーバー:
    • ファイルシステムサーバー:npx を使用して実行し、ローカルファイルへのアクセスを提供します[cite: 1]。
    • Nmap ツールキットサーバー(Docker 内の nmap-server.txt):Docker コンテナ内で実行され、MCP 経由で Nmap スキャン機能をツールとして公開します[cite: 2, 14]。app.txt は各リクエストのたびに docker run を使用してこのサーバーを起動します。

前提条件

  • Python:3.9 以降
  • Docker:最新バージョンがインストールされ、実行中であること。
  • Node.js/npm:ファイルシステム MCP サーバーを実行するために npx が必要です。
  • OpenAI API キー:環境変数 OPENAI_API_KEY として設定してください。

インストールとセットアップ

  1. リポジトリをクローンします:

    git clone <your-repository-url>
    cd <your-repository-directory>
    
  2. OpenAI API キーを設定します: API キーを環境変数としてエクスポートします。your_api_key_here を実際のキーに置き換えてください。

    • Linux/macOS:
      export OPENAI_API_KEY='your_api_key_here'
      
    • Windows(コマンドプロンプト):
      set OPENAI_API_KEY=your_api_key_here
      
    • Windows(PowerShell):
      $env:OPENAI_API_KEY='your_api_key_here'
      
  3. Nmap の Docker イメージをビルドします: nmap-server.py と Dockerfile があるディレクトリに移動し、次のコマンドを実行します。

    docker build -t nmap-mcp-server .
    

    (特に、MCP パッケージ名が modelcontextprotocol ではない場合は、Dockerfile の内容が正しいことを確認してください。)

  4. Python の依存関係をインストールします: 仮想環境の使用をおすすめします。

    python -m venv venv
    # 仮想環境を有効化します
    # Linux/macOS:
    source venv/bin/activate
    # Windows:
    .\venv\Scripts\activate
    # 必要なパッケージをインストールします
    pip install -r requirements.txt
    

アプリケーションの実行

OpenAI API キーが設定され、Docker が実行中であり、仮想環境を有効化した状態でプロジェクトのルートディレクトリにいることを確認してください。

python app.py
 An example MCP server with a couple nmap scans as tools.

コメント

MCP は初めてですか?

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

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