Skip to main content
Glama
kerbart
by kerbart
README.md
# 🌐 MCP Network Tools

> **Serveur MCP (Model Context Protocol) pour outils de diagnostic réseau**

Un serveur MCP complet qui expose des outils de diagnostic réseau sécurisés via Claude Desktop, Claude Code et toute application compatible MCP.

## ✹ FonctionnalitĂ©s

### 🔧 Outils rĂ©seau disponibles

| Outil | Description | ParamĂštres |
|-------|-------------|------------|
| **ping** | Test de connectivité et latence | `host`, `count`, `timeout` |
| **traceroute** | Traçage de route réseau | `host`, `max_hops` |
| **whois** | Informations sur domaines/IP | `target` |
| **nslookup** | Résolution DNS | `domain`, `record_type` |
| **dig** | RequĂȘtes DNS avancĂ©es | `domain`, `record_type` |
| **nmap** | Scan de ports sécurisé | `host`, `ports`, `scan_type` |
| **curl** | RequĂȘtes HTTP/HTTPS | `url`, `method`, `headers` |
| **netstat** | Connexions réseau actives | `protocol`, `state` |

### 🚀 Modes de transport

- **stdio** : Mode par défaut, compatible Claude Desktop/Code
- **http** : Serveur HTTP pour intégrations personnalisées

### 🔒 SĂ©curitĂ©

- Validation stricte des paramÚtres d'entrée
- Protection contre les injections de commandes
- Limitation des privilĂšges et timeouts
- Filtrage des domaines et IP sensibles

## 📋 PrĂ©requis

### SystĂšme

- **Python 3.8+** 
- **Outils réseau systÚme** (ping, traceroute, nmap, etc.)

### Installation des outils systĂšme

```bash
# Vérification automatique
./check_system.sh

# macOS (Homebrew)
brew install nmap whois bind traceroute

# Ubuntu/Debian
sudo apt-get install traceroute nmap whois dnsutils net-tools

# CentOS/RHEL/Fedora
sudo dnf install traceroute nmap whois bind-utils net-tools
```

## 🚀 Installation rapide

### 1. Clone du projet
```bash
git clone https://github.com/kerbart/mcp-network-tool.git
cd mcp-network-tool
```

### 2. Lancement automatique
```bash
# Setup complet + démarrage (stdio mode)
./run.sh

# Mode HTTP
./run.sh --transport http --port 8000
```

Le script `run.sh` se charge automatiquement de :
- ✅ VĂ©rifier Python 3.8+
- ✅ CrĂ©er l'environnement virtuel
- ✅ Installer les dĂ©pendances
- ✅ Lancer le serveur

## 📖 Installation manuelle

### 1. Environnement virtuel
```bash
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# ou venv\Scripts\activate  # Windows
```

### 2. Installation des dépendances
```bash
# Via requirements.txt
pip install -r requirements.txt

# Ou via pyproject.toml
pip install -e .
```

### 3. Vérification systÚme
```bash
./check_system.sh
```

### 4. Lancement du serveur
```bash
# Mode stdio (défaut)
python start.py

# Mode HTTP
python start.py --transport http --port 8000
```

## 🔧 Configuration avec Claude

### Claude Desktop

Ajoutez Ă  votre `claude_desktop_config.json` :

```json
{
  "mcpServers": {
    "network-tools": {
      "command": "python",
      "args": ["/chemin/vers/mcp-network-tools/start.py"],
      "env": {}
    }
  }
}
```

### Claude Code

```bash
# Ajout du serveur MCP
claude mcp add network-tools /chemin/vers/mcp-network-tools/start.py

# Vérification
claude mcp list
```

### Mode HTTP (optionnel)

```json
{
  "mcpServers": {
    "network-tools-http": {
      "transport": {
        "type": "http",
        "url": "http://localhost:8000"
      }
    }
  }
}
```

## 💡 Utilisation

### Exemples avec Claude

```
đŸ§‘â€đŸ’» "Peux-tu vĂ©rifier la connectivitĂ© vers google.com ?"

đŸ€– Je vais utiliser ping pour tester la connectivitĂ©...
[utilise l'outil ping avec host="google.com"]

đŸ§‘â€đŸ’» "Scanne les ports ouverts sur mon serveur 192.168.1.100"

đŸ€– Je vais scanner les ports courants...
[utilise l'outil nmap avec host="192.168.1.100"]

đŸ§‘â€đŸ’» "Trace la route vers cloudflare.com"

đŸ€– Je vais tracer la route rĂ©seau...
[utilise l'outil traceroute avec host="cloudflare.com"]
```

### API HTTP (mode HTTP)

```bash
# Liste des outils
curl http://localhost:8000/tools

# Exécution d'un ping
curl -X POST http://localhost:8000/tools/ping \
  -H "Content-Type: application/json" \
  -d '{"arguments": {"host": "google.com", "count": 3}}'

# Health check
curl http://localhost:8000/health
```

## 📁 Structure du projet

```
mcp-network-tools/
├── src/                    # Code source principal
│   ├── tools/             # ImplĂ©mentations des outils
│   │   ├── ping.py
│   │   ├── traceroute.py
│   │   ├── nmap.py
│   │   └── ...
│   └── utils/             # Utilitaires
│       ├── security.py    # Validation sĂ©curisĂ©e
│       └── parsers.py     # Parseurs de sortie
├── start.py               # Point d'entrĂ©e principal
├── run.sh                 # Script de lancement automatique
├── check_system.sh        # VĂ©rification des prĂ©requis
├── requirements.txt       # DĂ©pendances Python
├── pyproject.toml         # Configuration du projet
└── README.md              # Cette documentation
```

## 🔧 DĂ©veloppement

### Tests locaux

```bash
# Vérification des outils systÚme
./check_system.sh

# Test du serveur stdio
python start.py

# Test du serveur HTTP
python start.py --transport http
curl http://localhost:8000/
```

### Ajout d'un nouvel outil

1. Créer `src/tools/mon_outil.py`
2. Implémenter la classe héritant de `BaseTool`
3. Ajouter l'outil dans `start.py`
4. Mettre Ă  jour la documentation

### Variables d'environnement

```bash
# Logging
export MCP_LOG_LEVEL=DEBUG

# HTTP mode
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
```

## đŸ›Ąïž SĂ©curitĂ©

### Mesures implémentées

- ✅ **Validation d'entrĂ©e** : Tous les paramĂštres sont validĂ©s
- ✅ **Échappement de commandes** : Protection contre l'injection
- ✅ **Limitation de privilùges** : Pas de commandes sudo
- ✅ **Timeouts** : PrĂ©vention des blocages
- ✅ **Filtrage rĂ©seau** : Blocage des adresses sensibles

### Recommandations

- Exécutez avec un utilisateur non-privilégié
- Utilisez un firewall pour limiter l'accÚs réseau
- Surveillez les logs pour détecter les abus
- Mettez à jour réguliÚrement les dépendances

## 🐛 DĂ©pannage

### ProblĂšmes courants

**Erreur "command not found"**
```bash
# Vérifiez les outils systÚme
./check_system.sh

# Installez les outils manquants
brew install nmap  # macOS
sudo apt install nmap  # Ubuntu
```

**Erreur "Permission denied" pour nmap**
```bash
# Les scans SYN nécessitent sudo
sudo nmap -sS target.com

# Utilisez les scans connect (sans sudo)
nmap -sT target.com
```

**Erreur de dépendances Python**
```bash
# Réinstallation complÚte
rm -rf venv/
./run.sh
```

### Logs de débogage

```bash
# Mode verbose
python start.py --transport stdio --verbose

# Logs HTTP
python start.py --transport http --log-level debug
```

## 📚 Ressources

- [Documentation MCP](https://modelcontextprotocol.io/)
- [Claude Desktop Configuration](https://docs.anthropic.com/en/docs/build-with-claude/computer-use)
- [Sécurité des outils réseau](https://nmap.org/book/man-legal.html)

## đŸ€ Contribution

1. Fork le projet
2. Créez une branche (`git checkout -b feature/nouvelle-fonctionnalite`)
3. Committez vos changements (`git commit -m 'Ajout nouvelle fonctionnalité'`)
4. Poussez la branche (`git push origin feature/nouvelle-fonctionnalite`)
5. Ouvrez une Pull Request

## 📄 Licence

Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.

## đŸ‘„ Auteurs

- **Network Tools Team** - *Développement initial*

---

**⚠ Avertissement**: Ces outils peuvent ĂȘtre utilisĂ©s Ă  des fins de diagnostic rĂ©seau lĂ©gitime uniquement. L'utilisation malveillante est interdite et peut ĂȘtre illĂ©gale dans votre juridiction.

---

🌟 **Star ce repo si il vous a Ă©tĂ© utile !**

Maintenance

ActivityInactive
ResponsivenessNo issues