网络扫描服务

MCP服务器封装了netscan工具,通过自然语言与Claude连接,实现网络扫描的自动化执行。

  • by elweth-sec
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 elweth-sec/netscan-mcpserver

使用说明

netscan MCP服务器

MCP服务器包装 netscan --将Claude连接到您的网络扫描工具包,并通过自然语言启动扫描。


需求

  • netscan (分支: dev)安装和工作
  • Python 3.12+
  • 克劳德桌面版

安装

1.克隆并设置虚拟环境

git clone https://github.com/elweth-sec/netscan-mcpserver
cd netscan-mcpserver
python3.12 -m venv .venv
.venv/bin/pip install -r requirements.txt

2.运行MCP服务器

运行以下命令以启动MCP服务器

.venv/bin/python server.py

3.配置克劳德桌面

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json :

{
  "mcpServers": {
    "netscan": {
      "command": "/path/to/netscan-mcpserver/.venv/bin/python",
      "args": ["/path/to/netscan-mcpserver/server.py"],
      "env": {
        "NETSCAN_PATH": "/path/to/netscan/netscan",
        "NETSCAN_SCAN_TIMEOUT": "600",
        "NETSCAN_HISTORY_FILE": "/tmp/netscan_history.log"
      }
    }
  }
}
变量 默认值 描述
NETSCAN_PATH netscan netscan二进制文件的路径
NETSCAN_SCAN_TIMEOUT 600 每次扫描的最大秒数
NETSCAN_HISTORY_FILE ~/.netscan_history.log 命令历史记录日志

4.重新启动克劳德桌面

netscan工具出现在“设置”菜单中:


用法

只需描述你想做什么。克劳德会自动选择正确的工具和参数。

Launch a ping scan on 192.168.1.0/24 with 300 workers
Scan ports 22, 80, 443, 8080 on the hosts in /tmp/ips.txt
Enumerate SMB shares on 10.0.0.0/24 with a null session
Run an AD scan on 10.0.0.1, dump users and check for kerberoastable accounts
   domain: corp.local  user: jdoe  password: P@ssw0rd
Scan for unauthenticated Redis and MongoDB instances on 10.0.0.0/16

其他示例:

可用扫描仪

类别 工具
发现 pingscan, portscan
远程访问 sshscan, rdpscan, vncscan, telnetscan, winrmscan
Windows/AD smbscan, adscan
Web httpscan, tlsscan
DNS dnsscan
数据库 mysqlscan, mssqlscan, postgrescan, mongoscan, redisscan
网络服务 snmpscan, ftpscan, rsyncscan, rpcscan, rtspscan, jdwpscan

历史

每个命令及其输出都会自动记录。

show me the last 5 scans
clear the scan history

日志格式:

────────────────────────────────────────────────────────────────────────
[2026-02-25 21:45:12]  exit 0
CMD: netscan pingscan 192.168.1.0/24 -w 300 --nodb
────────────────────────────────────────────────────────────────────────
192.168.1.1 - alive
192.168.1.10 - alive
192.168.1.254 - alive

添加新扫描仪

放入文件 netscan/scanners/ --下次启动时会自动拾取。

# netscan/scanners/myscanner.py
from typing import Optional
from netscan import mcp
from netscan.core import add_common, add_targets, base_cmd, run

@mcp.tool()
async def myscanner(targets: Optional[str] = None, ...) -> str:
    """Description shown to Claude."""
    c = base_cmd("myscanner")
    add_targets(c, targets, target_file)
    add_common(c, workers, timeout, delay, resume, nodb)
    return await run(c)