🦊 v0.1.0 — MIT License

Ears everywhere
in your stack.

Fennec is an AI-native developer observability MCP server that gives AI agents full-stack visibility into your development environment — browser, terminal, and processes — all in one unified interface.

90+
MCP Tools
12
Tool Groups
200+
Tests
MIT
License

AI agents are blind without context

When a developer asks an AI agent "why is my login broken?", the agent has no access to the browser console, network tab, or server terminal. The developer becomes a copy-paste bridge.

# What the AI agent sees without Fennec:
"I can't access your terminal"
"Please paste the error message"
"I don't have browser access"

# What the developer sees:
 TypeError: jwt.sign is undefined          // Browser Console
 Error: JWT_SECRET not set in env          // Terminal
 POST /api/login -> 500                 // Network Tab

Installation & Configuration

Get Fennec running in under 2 minutes. No external services, no cloud accounts — everything runs locally.

Prerequisites

RequirementVersion
Node.js> = 20.0.0
npm / pnpm / yarnLatest stable
OSmacOS, Linux, Windows (WSL2 recommended)

Quick Install

# 1. Install globally
npm install -g @plumpslabs/fennec-cli

# 2. Install browser engines (Chromium)
fennec install-browsers

# 3. Generate config (optional)
fennec init

# 4. Start the MCP server
fennec start

From Source

git clone https://github.com/plumpslabs/fennec.git
cd fennec
pnpm install
pnpm build
npx playwright install chromium --with-deps
node packages/cli/dist/index.js start

Configure MCP Client

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "fennec": {
      "command": "fennec",
      "args": ["start"]
    }
  }
}

Quick Start

Once Fennec is running and connected to your AI agent, pipe your server output and let the AI investigate.

# Terminal: Start your app with Fennec watching
npm run dev 2>&1 | fennec pipe --name "my-app"

Then ask your AI agent: "Check why my app is broken"

The AI will automatically use Fennec tools to open the browser, check console errors, inspect network requests, correlate with server logs, and report the root cause.

Core Features

Fennec packs 90+ MCP tools across 12 groups, covering everything from browser automation to full-stack diagnosis.

🌐

Browser Automation

Navigate, click, type, scroll, drag-drop, screenshot. Full DOM and accessibility tree access.

📋

Console Monitoring

Real-time console log collection, filtering by level, JS error tracking with stack traces.

🌍

Network Intelligence

Monitor all requests/responses, intercept and mock, detect CORS issues and slow requests.

Performance Metrics

Core Web Vitals (FCP, LCP, CLS), memory profiling, DOM counters, network simulation.

🔐

Auth & Sessions

Auto-fill login forms, save/load authenticated sessions, multi-user parallel testing.

🖥️

Process Management

Spawn, monitor, and interact with processes. Attach by PID or port. Auto-detect log levels.

📡

Log Watching

Watch log files, pipe streams, named pipes (FIFO). Level-aware filtering and error extraction.

🔗

Full-Stack Correlation

Correlate browser errors with server logs. Automatic root cause inference with confidence scoring.

📁

Storage Access

Read/write localStorage, sessionStorage, cookies, IndexedDB. Export and import full state.

🔄

Multi-Tab & Context

Multiple isolated browser sessions with independent cookies, storage, and auth state.

🔍

Diagnostic Tools

Page diagnostics, element debugging, network health, auth checks, performance analysis.

🛡️

Security First

Sandbox mode, process allowlists, domain restrictions. Secure defaults with opt-in permissions.

Full-Stack Correlation

The crown jewel of Fennec. A single command correlates browser errors with server logs and process state to identify root causes automatically.

// diagnose_fullstack({ processId: "dev-server" })
{
  "correlation": {
    "rootCause": "JWT_SECRET environment variable missing on server",
    "confidence": 0.94,
    "fix": "Add JWT_SECRET to your .env file",
    "timeline": [
      { "t": "+0ms",  "layer": "browser", "event": "POST /api/auth/login initiated" },
      { "t": "+12ms", "layer": "server",  "event": "ERROR: JWT_SECRET not set" },
      { "t": "+16ms", "layer": "browser", "event": "TypeError thrown in auth.js:67" }
    ]
  }
}

Fennec automatically constructs a timeline across layers, infers the root cause with confidence scoring, and suggests a fix — all from a single MCP tool call.

Modes of Operation

Fennec adapts to your workflow. Choose the mode that fits, or combine them.

👀

Observe (Passive)

Run your server normally, Fennec listens passively via piped output or file watching.

npm run dev 2>&1 | fennec pipe --name my-app
🎮

Control (Active)

AI spawns and manages processes directly — start servers, run builds, execute tests.

process_spawn({
  command: "npm run dev"
})
🔀

Hybrid (Recommended)

Developer spawns the server, AI controls the browser and observes logs simultaneously.

# Terminal: pipe server output
npm run dev | fennec pipe --name dev-server

# AI has full visibility

Tool Reference

90+ tools organized into 12 groups. Every tool follows MCP conventions with structured Zod schemas, descriptive error messages, and consistent response formats.

🧭 Navigation
6 tools
  • browser_navigate
  • browser_go_back
  • browser_go_forward
  • browser_reload
  • browser_get_current_url
  • browser_wait_for_navigation
🖱️ Interaction
10 tools
  • browser_click
  • browser_type
  • browser_select
  • browser_hover
  • browser_scroll
  • browser_press_key
  • browser_upload_file
  • browser_focus
  • browser_clear
  • browser_drag_drop
📄 DOM & Page
9 tools
  • browser_screenshot
  • browser_get_dom_snapshot
  • browser_get_accessibility_tree
  • browser_find_elements
  • browser_get_element_info
  • browser_wait_for_element
  • browser_get_page_text
  • browser_get_page_title
  • browser_get_meta
📋 Console
5 tools
  • devtools_get_console_logs
  • devtools_clear_console
  • devtools_evaluate
  • devtools_get_js_errors
  • devtools_watch_console
🌍 Network
9 tools
  • network_get_logs
  • network_get_failed_requests
  • network_get_cors_issues
  • network_clear_logs
  • network_intercept
  • network_remove_intercept
  • network_mock_response
  • network_wait_for_request
  • network_get_request_detail
⚡ Performance
6 tools
  • devtools_get_performance_metrics
  • devtools_get_memory_usage
  • devtools_get_dom_counters
  • devtools_simulate_network
  • devtools_start_profiling
  • devtools_stop_profiling
📦 Storage
12 tools
  • storage_get_local
  • storage_set_local
  • storage_remove_local
  • storage_clear_local
  • storage_get_session
  • storage_set_session
  • storage_get_cookies
  • storage_set_cookie
  • storage_delete_cookie
  • storage_get_indexeddb
  • storage_export_state
  • storage_import_state
🔐 Auth
6 tools
  • auth_fill_login_form
  • auth_save_session
  • auth_load_session
  • auth_list_sessions
  • auth_delete_session
  • auth_check_logged_in
📑 Tabs & Contexts
7 tools
  • tab_new
  • tab_close
  • tab_list
  • tab_switch
  • tab_get_current
  • context_new
  • context_close
⚙️ Process
10 tools
  • process_spawn
  • process_list
  • process_get_logs
  • process_get_status
  • process_send_input
  • process_kill
  • process_restart
  • process_wait_for_ready
  • process_attach_pid
  • process_attach_port
🖥️ Terminal
7 tools
  • terminal_watch_file
  • terminal_watch_pipe
  • terminal_get_logs
  • terminal_get_errors
  • terminal_list_watchers
  • terminal_clear_buffer
  • terminal_stop_watcher
🔍 Diagnostic
6 tools
  • diagnose_page
  • diagnose_element
  • diagnose_network
  • diagnose_auth
  • diagnose_fullstack
  • diagnose_performance

See the full tool reference for detailed schemas and examples.