NetMCP
by SurriyaGokul
README.md
<div align="center">
# 🌐 NetMCP
### AI-Powered Linux Network Optimization via Model Context Protocol
[](https://www.python.org/)
[](https://modelcontextprotocol.io/)
[](https://www.linux.org/)
[](LICENSE)
[](https://netmcp.fastmcp.app/mcp)
**Transform natural language into optimized network configurations**
[🔴 Live Server](#-live-server) · [Getting Started](#-getting-started) · [Features](#-features) · [Profiles](#-optimization-profiles) · [Architecture](#-architecture) · [Tools](#-mcp-tools)
</div>
---
## 🔴 Live Server
NetMCP is **live in production** on FastMCP Cloud! Connect your MCP client to:
```
https://netmcp.fastmcp.app/mcp
```
No installation required—just point your AI assistant to the hosted server and start optimizing.
---
## 🎯 Overview
NetMCP is an **MCP server** that enables AI assistants like Claude to intelligently optimize Linux network performance. It bridges the gap between high-level optimization goals (*"optimize my network for gaming"*) and low-level Linux commands (`sysctl`, `tc`, `nft`).
```
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ AI Assistant │ MCP │ NetMCP │ │ Linux Kernel │
│ (Claude, etc) │◄────►│ Server │─────►│ Network Stack │
└──────────────────┘ └──────────────────┘ └──────────────────┘
▲ │
│ ▼
Natural Language 29 Config Cards
"Reduce my latency" 5 Profiles
40+ Tools
```
### ✨ Why NetMCP?
| Traditional Approach | With NetMCP |
|---------------------|-------------|
| Manual `sysctl` tuning | Declarative optimization plans |
| Copy-paste commands from forums | Research-backed profiles |
| No rollback on failure | Automatic checkpoints & rollback |
| Trial and error | Validated against safety policies |
| Root access chaos | Controlled privileged execution |
---
## 🚀 Getting Started
### Prerequisites
- **Linux** (Ubuntu 20.04+, Debian 11+, or similar)
- **Python 3.10+**
- Network tools: `ip`, `sysctl`, `tc`, `nft`
### Installation
```bash
git clone https://github.com/SurriyaGokul/mcp-net-optimizer.git
cd mcp-net-optimizer
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Enable privileged commands (one-time setup)
./setup_sudo.sh
```
### Configure with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"netmcp": {
"command": "python",
"args": ["-m", "server.main"],
"cwd": "/path/to/mcp-net-optimizer"
}
}
}
```
### Run Standalone
```bash
python -m server.main
```
---
## ⚡ Features
<table>
<tr>
<td width="50%">
### 🎴 29 Configuration Cards
Full coverage of the Linux networking stack:
- **16 Sysctl cards** — TCP tuning, buffers, congestion control
- **8 Traffic Control cards** — QoS, shaping, queuing
- **5 Firewall cards** — Rate limiting, connection tracking, NAT
</td>
<td width="50%">
### 🛡️ Enterprise Safety
Production-ready security features:
- **Command allowlisting** — Only approved binaries execute
- **Automatic checkpoints** — Snapshot before every change
- **Instant rollback** — One command to restore state
- **Audit logging** — Complete execution history
</td>
</tr>
<tr>
<td>
### 🔧 40+ MCP Tools
Comprehensive network management:
- **Discovery** — Interfaces, routes, DNS, latency tests
- **Planning** — Type-safe optimization plans
- **Validation** — Policy enforcement before execution
- **Execution** — Atomic apply with rollback
- **Benchmarking** — Before/after performance comparison
</td>
<td>
### 🔐 Sudo Management
Flexible privilege escalation:
- **Passwordless setup** — Run `./setup_sudo.sh` once
- **Cached credentials** — Authenticate once, cached 15 min
- **MCP tools** — `check_sudo_access`, `request_sudo_access`
- **Secure by default** — Only allowlisted commands
</td>
</tr>
</table>
---
## 🎮 Optimization Profiles
Five research-backed profiles optimized for specific workloads:
| Profile | Focus | Key Optimizations | Target Metrics |
|---------|-------|-------------------|----------------|
| 🎮 **Gaming** | Ultra-low latency | BBR, tcp_low_latency, fq qdisc | <20ms p95, <5ms jitter |
| 📺 **Streaming** | Max throughput | Large buffers, BBR, HTB shaping | 90%+ link utilization |
| 📞 **Video Calls** | Balanced | DSCP marking, moderate buffers | <150ms latency (ITU-T) |
| 📦 **Bulk Transfer** | Maximum bandwidth | 128MB buffers, aggressive BBR | >1Gbps sustained |
| 🖥️ **Server** | High concurrency | SYN cookies, conntrack, rate limits | 10K+ connections |
### Example: Gaming Optimization
```python
plan = {
"iface": "eth0",
"profile": "gaming",
"changes": {
"sysctl": {
"net.ipv4.tcp_congestion_control": "bbr",
"net.ipv4.tcp_low_latency": "1",
"net.core.default_qdisc": "fq"
},
"qdisc": {"type": "fq"}
}
}
```
---
## 🏗️ Architecture
### Pipeline Flow
```
DISCOVER PLAN VALIDATE RENDER APPLY
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Inspect │───►│ Declare │─────►│ Check │────►│Generate │────►│ Execute │
│ System │ │ Intent │ │ Policies│ │Commands │ │ Safely │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
│ │ │ │ │
30+ tools Pydantic Policy YAML sysctl/tc/ Checkpoint
No side schemas validation nft scripts + Rollback
effects
```
### Project Structure
```
mcp-net-optimizer/
├── server/
│ ├── main.py # MCP server entry point
│ ├── registry.py # Tool & resource registration
│ ├── schema/models.py # Pydantic data models
│ └── tools/
│ ├── discovery.py # 30+ system inspection tools
│ ├── planner.py # Plan → Commands renderer
│ ├── validator.py # Policy validation
│ ├── validation_engine.py # Before/after comparison
│ ├── validation_metrics.py # Network benchmarks
│ ├── audit_log.py # Execution logging
│ ├── apply/ # Command executors
│ │ ├── apply.py # Orchestration + rollback
│ │ ├── checkpoints.py
│ │ ├── sysctl.py
│ │ ├── tc.py
│ │ └── nft.py
│ └── util/
│ ├── shell.py # Safe command execution
│ └── policy_loader.py
├── policy/
│ ├── config_cards/ # 29 YAML card definitions
│ ├── profiles.yaml # 5 optimization profiles
│ └── validation_limits.yaml
└── setup_sudo.sh # Passwordless sudo setup
```
---
## 🔧 MCP Tools
### Discovery (No Side Effects)
| Tool | Description |
|------|-------------|
| `ip_info` | Network interfaces and addresses |
| `ip_route` | Routing table |
| `ping_host` | ICMP latency test |
| `traceroute` | Network path analysis |
| `tc_qdisc_show` | Traffic control status |
| `nft_list_ruleset` | Firewall rules |
| `ss_summary` | Socket statistics |
### Planning & Validation
| Tool | Description |
|------|-------------|
| `validate_change_plan_tool` | Validate plan against policies |
| `render_change_plan_tool` | Convert plan to executable commands |
| `test_network_performance_tool` | Run comprehensive benchmarks |
| `validate_configuration_changes_tool` | Compare before/after results |
### Execution & Safety
| Tool | Description |
|------|-------------|
| `apply_rendered_plan_tool` | Execute with checkpoint + rollback |
| `snapshot_checkpoint_tool` | Manual checkpoint creation |
| `rollback_to_checkpoint_tool` | Restore previous state |
| `list_checkpoints_tool` | View available checkpoints |
### Privilege Management
| Tool | Description |
|------|-------------|
| `check_sudo_access_tool` | Check if sudo is available |
| `request_sudo_access_tool` | Authenticate for temporary access |
| `get_sudo_setup_instructions_tool` | Setup help |
---
## 📊 Benchmarking & Validation
NetMCP includes a complete validation pipeline to measure optimization impact:
```python
# 1. Run baseline benchmark
before = test_network_performance_tool(profile="gaming")
# 2. Apply optimizations
apply_rendered_plan_tool(rendered_plan)
# 3. Run post-optimization benchmark
after = test_network_performance_tool(profile="gaming")
# 4. Compare and validate
result = validate_configuration_changes_tool(before, after, "gaming")
# → {"decision": "KEEP", "score": 75, "summary": "Latency improved 15%"}
```
### Validation Decisions
| Score | Decision | Action |
|-------|----------|--------|
| ≥60 | **KEEP** | Changes improved performance |
| 20-59 | **UNCERTAIN** | Mixed results, review recommended |
| <20 | **ROLLBACK** | Performance degraded, auto-rollback available |
---
## 🔒 Security Model
### Command Allowlisting
Only explicitly approved binaries can execute:
```yaml
# server/config/allowlist.yaml
binaries:
- /usr/sbin/sysctl
- /usr/sbin/tc
- /usr/sbin/nft
- /usr/bin/ping
- /usr/bin/iperf3
# ... etc
```
### Privilege Escalation
Three options for sudo access:
1. **Permanent** (Recommended): Run `./setup_sudo.sh` — configures passwordless sudo for network commands only
2. **Session-based**: Use `request_sudo_access_tool(password="...")` — caches for 15 minutes
3. **Manual**: Run `sudo -v` in terminal before using MCP
---
## 📈 Performance Results
Real-world improvements measured across profiles:
| Profile | Metric | Improvement |
|---------|--------|-------------|
| Gaming | Latency | 10-30% reduction |
| Gaming | Jitter | 20-40% reduction |
| Streaming | Throughput | 2-4× on congested links |
| Video Calls | Connection time | 15-25% faster |
| Server | Connection capacity | 10× increase |
---
## 🤝 Contributing
Contributions are welcome! Areas of interest:
- Additional configuration cards
- New optimization profiles
- Cross-platform support
- Performance benchmarks
- Documentation improvements
---
## 📄 License
MIT License — see [LICENSE](LICENSE) for details.
---
<div align="center">
**Built with ❤️ for the AI-native networking future**
[Report Bug](https://github.com/SurriyaGokul/mcp-net-optimizer/issues) · [Request Feature](https://github.com/SurriyaGokul/mcp-net-optimizer/issues)
</div>
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues