Skip to content

SegfaultSorcerer/conduit

Conduit

Native macOS developer tools for the Model Context Protocol.

License: MIT License: Apache 2.0 Rust Tauri React

Chrome DevTools for MCP. Intercept, inspect, and debug every JSON-RPC message between your AI client and MCP servers.

Features · Getting Started · How It Works · Documentation · Contributing · License


What is Conduit?

The official MCP Inspector can't observe real traffic between Claude/Cursor and your servers — it acts as its own synthetic client. This is the #1 developer pain point when building MCP servers.

Conduit fixes this. It sits as a transparent proxy in the actual data path between AI clients (Claude Desktop, Claude Code, Cursor, Windsurf) and MCP servers, capturing every JSON-RPC message — requests, responses, notifications, errors — and gives you a real-time timeline, performance charts, breakpoints, and a playground to drive any server by hand.

Features

Servers

  • Auto-discovery of MCP servers from Claude Desktop, Claude Code, Cursor, and Windsurf configs
  • Start / Stop / Restart stdio servers with live stderr streaming
  • Toggle proxy per server — rewrites the client config, keeps a backup in ~/.conduit/backups/
  • Config editor with Monaco, live validation, and profiles for switching between server sets

Traffic

  • Live timeline of intercepted JSON-RPC traffic with virtualized scrolling
  • Session management — pin, rename, export/import (.conduit files), and diff sessions side-by-side
  • Filters — by session, server, method, direction, full-text search, errors-only
  • Method color codingtools/*, resources/*, prompts/*, notifications/*, initialize, …
  • Detail pane with Monaco-rendered JSON and request/response duration for matched pairs
  • Performance charts — per-tool latency with p50/p95/p99 markers (session-scoped or global)

Intercept

  • Breakpoints — pause any matching JSON-RPC frame, inspect and edit the payload, then forward, modify, or drop
  • Map Local — automatically replace matching responses with canned payloads from disk
  • Graceful degradation — if Conduit is closed, the shim falls back to transparent passthrough

Playground

  • Browse tools, resources, and prompts from any discovered server
  • Invoke tools with an auto-generated form derived from the inputSchema
  • Read resources and run prompts with their declared arguments
  • Supports both stdio and HTTP/SSE transports

System

  • Menu bar tray icon with Show / Traffic / Servers / Playground / Quit
  • Command palette (⌘K) with fuzzy-filtered actions
  • Section shortcuts ⌘1 / ⌘2 / ⌘3, refresh all queries with ⌘R

Getting Started

Download

Grab the latest .dmg from the Releases page.

Note: The app is not yet code-signed. macOS will show a "damaged" or "unidentified developer" warning. To fix this, run after mounting the DMG:

xattr -cr /Applications/Conduit.app

Build from source

Prerequisites: macOS 13+, Rust 1.80+, Node 20+

# Clone the repository
git clone https://github.com/SegfaultSorcerer/conduit.git
cd conduit

# Install frontend dependencies
npm install

# Build the shim binary (required before enabling proxy)
cargo build -p conduit-shim

# Launch the app in development mode
cargo tauri dev

The first build compiles the full Rust dependency tree (tokio, rusqlite, tauri, etc.) and takes a few minutes. Subsequent builds are incremental.

Quick start

  1. Launch Conduit
  2. Open the Servers tab — your MCP servers are auto-discovered within seconds
  3. Click Proxy off on any server to enable interception
  4. Restart the AI client so it picks up the rewritten config
  5. Use the AI client normally — switch to the Traffic tab to see the live JSON-RPC stream
  6. Click Proxy on to restore the original config when you're done

How It Works

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   AI Client  │────▶│ conduit-shim │────▶│  MCP Server  │
│ (Claude, etc)│◀────│  (stdio)     │◀────│              │
└──────────────┘     └──────┬───────┘     └──────────────┘
                            │ IPC
                     ┌──────▼───────┐
                     │   Conduit    │
                     │  (inspect,   │
                     │   breakpoint,│
                     │   record)    │
                     └──────────────┘

Stdio servers: enable_proxy rewrites the client config to launch conduit-shim instead of the real server binary. The shim spawns the real server, pipes stdin/stdout through, and sends a copy of every frame to Conduit over a Unix socket (/tmp/conduit.sock). If Conduit isn't running, the shim works as a transparent passthrough — the MCP connection is never broken.

HTTP/SSE servers: An axum reverse proxy intercepts requests and SSE streams, applying the same inspection and breakpoint logic.


Development

cargo tauri dev              # Run the app (Rust backend + Vite dev server)
cargo test -p conduit -- --test-threads=1   # Run Rust tests
npm run lint                 # Lint frontend (Biome)
npm run format               # Format frontend (Biome)
cargo check --workspace      # Check all Rust crates

Tech stack

Layer Choice
Desktop framework Tauri 2.10+
Backend Rust 1.80+ with tokio
Frontend React 19 + TypeScript 5 + Vite
Styling Tailwind CSS 4
State management zustand
Data fetching @tanstack/react-query
Virtualized lists react-virtuoso
Code/JSON editor @monaco-editor/react
Database SQLite via rusqlite (bundled)
Linting/formatting Biome

See CLAUDE.md for architecture details and coding conventions, and docs/PROJECT_PLAN.md for the full roadmap.


Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

License

This project is dual-licensed under either of

at your option.

About

Chrome DevTools for MCP. Intercept and debug traffic between AI clients and MCP servers.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors