Lets an AI agent discover network hosts, scan TCP and UDP ports, and query DNS or mDNS records.
Also known as fstubner/netscli
- Stars
- 19
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.3.4
- Last commit
- Nov 14, 2026
- License
- MIT
What is NetsCLI MCP?
NetsCLI lets an AI agent discover network hosts, scan TCP and UDP ports, and query DNS or mDNS records.
Summary generated from the project's README
About NetsCLI MCP server
NetsCLI provides a suite of network scanning capabilities designed for both human users and AI agents. It allows for host discovery on local subnets, TCP and UDP port scanning, and detailed DNS or mDNS record queries. Developers can integrate this as an MCP server by running the command netscli serve, or use npx to run it without a local installation.
This server exposes nine default tools including discover, scan, ping, DNS, ARP, inspect, sweep, interfaces, and mDNS. It is built in Rust and serves as the foundation for a CLI, a terminal UI, and a desktop application. By using this server, an AI client can interact directly with network data through structured schemas rather than parsing human-readable terminal output. This makes it suitable for agents that need to monitor network changes or verify specific port statuses on a host.
What you can do with it
- 1Identify new network devicesAsk the AI to find which devices have recently joined the local subnet.
- 2Verify specific port availabilityRequest a check to see if a particular service port is open on a target host.
- 3Perform comprehensive host inspectionInstruct the agent to ping, scan, and resolve all information for a specific domain.
- 4Retrieve DNS recordsHave the agent query all available record types for a given domain name.
Written from the project's README. Every use case is checked against a quote from it.
How to install NetsCLI MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall NetsCLI MCP in Claude Code
$ claude mcp add netscli -- npx -y netscliInstall NetsCLI MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"netscli": {
"command": "npx",
"args": [
"-y",
"netscli"
]
}
}
}Install NetsCLI MCP in VS Code
.vscode/mcp.json
{
"servers": {
"netscli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"netscli"
]
}
}
}Install NetsCLI MCP in VS Code CLI
$ code --add-mcp '{"name":"netscli","type":"stdio","command":"npx","args":["-y","netscli"]}'Install NetsCLI MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"netscli": {
"command": "npx",
"args": [
"-y",
"netscli"
]
}
}
}Install NetsCLI MCP in Codex
$ codex mcp add netscli -- npx -y netscliInstall NetsCLI MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.netscli] command = "npx" args = ["-y", "netscli"]
Install NetsCLI MCP in Gemini CLI
$ gemini mcp add -s user netscli npx -- -y netscliInstall NetsCLI MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"netscli": {
"command": "npx",
"args": [
"-y",
"netscli"
]
}
}
}Configuration
NETSCLI_MCP_ALLOW_PUBLIC_TARGETSSet to 1 to allow targets outside your own networks. Off by default.
| Name | Description | |
|---|---|---|
| NETSCLI_MCP_ALLOW_PUBLIC_TARGETS | Set to 1 to allow targets outside your own networks. Off by default. |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubA network scanner written in Rust. CLI, terminal UI, desktop app, and MCP server. One library behind all four.
Documentation · Install · Changelog
Why this exists
The terminal UI came first. I wanted to understand how the newer TUIs work, the ones coding agents like Claude Code have put real effort into. Autocomplete, command history, in-place progress, and a UI that does not take over the terminal, so scrollback and copying text keep working. Building one seemed like the way to learn it, and a network scanner gave it something to do.
The MCP server came next. I thought it would be interesting to let an agent work with a network that way. Ask which device just joined, or whether port 22 is open on some host, instead of shelling out to another tool and parsing output that was written for a person to read.
Then the CLI, for programmatic use. A script or a cron job wants one command and JSON back, not an interactive session.
The desktop app came last. Some people would rather have a GUI than a terminal, and honestly I sometimes prefer it myself over running the commands locally.
Three of them are the same binary. netscli <command> is the CLI, netscli
on its own opens the terminal UI, and netscli serve starts the MCP server.
The desktop app is a separate download over the same core.
Screenshots
Install
# macOS / Linux
brew tap fstubner/tap && brew install netscli
# Windows
winget install netscli # CLI, TUI and MCP server
winget install netscli-gui # desktop app
# Any platform, via cargo
cargo install netscli
Desktop installers for Windows, macOS and Linux are attached to every release.
Scoop, the AUR, the one-line install scripts, packet-capture builds and signature verification are all covered in the install guide.
Usage
netscli discover # find hosts on the local subnet
netscli scan 192.168.1.10 -p 22,80,443
netscli inspect example.com # ping + scan + resolve
netscli dns example.com # all record types
netscli arp # ARP table with vendor lookup
netscli interfaces
Every command that returns a result takes --json or --yaml, so results
pipe straight into jq, and the ones that return a list also take --csv and
--md.
Run netscli with no arguments for the terminal UI: slash commands with
autocomplete, command history, scrollback and /export.
Full command reference: CLI · TUI · desktop app
MCP server
{
"mcpServers": {
"netscli": {
"command": "netscli",
"args": ["serve"]
}
}
}
That form needs netscli installed. To skip the install, use npx as the
command ("command": "npx", "args": ["-y", "netscli", "serve"]), or open an
.mcpb bundle from the
latest release in a
client that supports them.
Nine tools by default: discover, scan, ping, DNS, ARP, inspect, sweep, interfaces and mDNS. Packet-capture builds add four more. Details and the full schemas are in the MCP guide.
Documentation
| Page | Covers |
|---|---|
| Overview | What it does, the interface model, safety limits |
| Installation | Every install route, per platform |
| CLI | Commands, flags, structured output |
| Terminal UI | Slash commands and session behaviour |
| Desktop app | Tabs, filters, exports |
| MCP server | Tools, schemas, agent setup |
| Interface coverage | Which capabilities each interface exposes |
| Operations | What each scan actually does |
| Result model | Shape of the JSON and YAML output |
| Packet capture | Requirements and the pcap builds |
| Core library | Using netscli-core directly |
Contributing
Issues and pull requests are welcome. Building from source, the desktop app dev loop, packet-capture builds and the repository layout are all in CONTRIBUTING.md.
License
MIT. See LICENSE.
NetsCLI MCP questions
How do I add NetsCLI MCP to Claude Code?
Run claude mcp add netscli -- npx -y netscli in your terminal. Add --scope user to make it available in every project.
How do I add NetsCLI MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools are available in the MCP server?
By default, it provides nine tools: discover, scan, ping, DNS, ARP, inspect, sweep, interfaces, and mDNS.
How do I install NetsCLI on Windows?
You can install the CLI, TUI, and MCP server using winget install netscli, or the desktop app using winget install netscli-gui.
Can I use NetsCLI without installing it first?
Yes, you can use npx to run the server by setting the command to npx and the args to -y netscli serve.