brave-mcp
# brave-mcp
Wrapper MCP local pour piloter le navigateur **Brave** (et Chrome/Edge) via
[`chrome-devtools-mcp`](https://github.com/ChromeDevTools/chrome-devtools-mcp),
avec gestion multi-navigateurs, sessions utilisateur réelles et reconnexion automatique.
Ce serveur ne crée **pas** de profil isolé : il se connecte au navigateur natif
avec votre **profil utilisateur** (sessions, cookies, comptes déjà connectés).
## Fonctionnement
`start.js` démarre un serveur MCP qui s'appuie sur la librairie officielle
`chrome-devtools-mcp` (Puppeteer) pour les ~29 outils standards de navigation,
et ajoute des outils de gestion du cycle de vie du navigateur :
| Outil | Rôle |
|-------|------|
| `browser_list` | Liste les navigateurs Chromium installés (Chrome, Brave, Edge) avec leur statut CDP |
| `browser_launch` | Lance un navigateur natif avec CDP et votre profil utilisateur |
| `browser_use` | Bascule la connexion vers un autre navigateur (sans redémarrage du serveur) |
| `browser_status` | Statut détaillé de la connexion CDP et pages ouvertes |
| `browser_restart` | Ferme un navigateur et le relance avec CDP + profil |
Caractéristiques notables :
- **Sessions utilisateur** : le navigateur est lancé avec `--remote-debugging-port`
sur son profil réel — pas de profil jetable.
- **Port CDP dédié par navigateur** : Chrome `9222`, Brave `9223`, Edge `9224`.
- **Reconnexion à chaud** : `browser_use` met à jour la cible sans redémarrer le serveur.
- **Health-check** : toutes les 30 s, reconnexion automatique si le navigateur tombe.
- **Anti-corruption du TUI** : toute sortie `console.log`/`debug` est redirigée vers
`stderr` pour garder `stdout` propre pour le protocole MCP (JSON-RPC).
## Prérequis
- **Node.js >= 20** (vérifié au démarrage par `start.js`)
- Windows (détection des navigateurs via chemins standard, registre et `where`)
- Chrome, Brave ou Edge installé (au moins un)
## Installation
```bash
git clone https://github.com/menoxz/brave-mcp.git
cd brave-mcp
npm install
npm start
```
## Configuration MCP
### opencode
Ajoutez dans votre `opencode.json` (fichier de config utilisateur ou projet) :
```jsonc
{
"mcp": {
"web-browser": {
"type": "local",
"command": [
"node",
"C:\\chemin\\vers\\brave-mcp\\start.js",
"--usageStatistics=false",
"--performanceCrux=false"
],
"environment": {
"DEBUG": ""
},
"enabled": true
}
}
}
```
### Claude Desktop / autres clients MCP
```json
{
"mcpServers": {
"web-browser": {
"command": "node",
"args": ["C:\\chemin\\vers\\brave-mcp\\start.js", "--usageStatistics=false", "--performanceCrux=false"]
}
}
}
```
### Lancement manuel du navigateur
Le serveur peut lancer le navigateur lui-même (`browser_launch`), mais vous pouvez
aussi le démarrer à la main :
```powershell
# Brave sur le port 9222 (profil utilisateur)
.\launch-brave.ps1
# Chrome, Brave ou Edge (détection automatique)
.\launch-browser.ps1 -Browser Brave
```
## Outils exposés
- Les outils standards de `chrome-devtools-mcp` (navigation, onglets, DOM,
captures, etc. — ~29 outils).
- Les outils `browser_*` listés ci-dessus.
## Licence
[MIT](LICENSE) — Jean-Luc KOUMAGLO (menoxz), 2026.
Le serveur s'appuie sur [`chrome-devtools-mcp`](https://github.com/ChromeDevTools/chrome-devtools-mcp)
(Google), distribué sous licence Apache-2.0.
TDQS
Scored across 34 tools
Several tools have overlapping purposes: fill, fill_form, and type_text all handle text input; browser_launch and browser_restart are nearly identical; browser_list and browser_status both report on browser state. While descriptions provide some clarification, an agent could easily misselect between these pairs.
The majority of tools follow a verb_noun pattern (list_pages, close_page, take_screenshot, navigate_page), but several browser management tools reverse this (browser_list, browser_launch, browser_status) and some tools are single verbs (click, hover, fill, drag). The mixed ordering and occasional vague names (emulate) create an inconsistent but still readable pattern.
With 34 tools spanning page interaction, form handling, performance tracing, network/console inspection, and browser management, the server is heavily overloaded. While the domain is broad, the count exceeds the 25+ threshold and many tools could be consolidated (e.g., merging fill and type_text, or combining browser_list/status).
The toolset covers a comprehensive browser automation lifecycle: navigation, page selection, interaction, form filling, file upload, screenshots, snapshots, performance traces, and network/console inspection. Minor gaps include lack of explicit cookie management or request interception, but these can be worked around via evaluate_script.