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.
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
| Requirement | Version |
|---|---|
| Node.js | > = 20.0.0 |
| npm / pnpm / yarn | Latest stable |
| OS | macOS, 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.
- browser_navigate
- browser_go_back
- browser_go_forward
- browser_reload
- browser_get_current_url
- browser_wait_for_navigation
- browser_click
- browser_type
- browser_select
- browser_hover
- browser_scroll
- browser_press_key
- browser_upload_file
- browser_focus
- browser_clear
- browser_drag_drop
- 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
- devtools_get_console_logs
- devtools_clear_console
- devtools_evaluate
- devtools_get_js_errors
- devtools_watch_console
- 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
- devtools_get_performance_metrics
- devtools_get_memory_usage
- devtools_get_dom_counters
- devtools_simulate_network
- devtools_start_profiling
- devtools_stop_profiling
- 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_fill_login_form
- auth_save_session
- auth_load_session
- auth_list_sessions
- auth_delete_session
- auth_check_logged_in
- tab_new
- tab_close
- tab_list
- tab_switch
- tab_get_current
- context_new
- context_close
- 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_watch_file
- terminal_watch_pipe
- terminal_get_logs
- terminal_get_errors
- terminal_list_watchers
- terminal_clear_buffer
- terminal_stop_watcher
- diagnose_page
- diagnose_element
- diagnose_network
- diagnose_auth
- diagnose_fullstack
- diagnose_performance
See the full tool reference for detailed schemas and examples.