Loading repository data…
Loading repository data…
Epistates / repository
A native desktop application for developing, testing, and debugging Model Context Protocol servers.
A native desktop application for developing, testing, and debugging Model Context Protocol servers.
Download • Documentation • Contributing
Download the latest release for your platform from GitHub Releases:
| Platform | Format |
|---|---|
| macOS (Apple Silicon) | .dmg or .app (signed + notarized) |
| macOS (Intel) | .dmg or .app (signed + notarized) |
| Windows | .msi installer |
| Linux | .AppImage or .deb |
npm install -g pnpm
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
xcode-select --install
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
sudo dnf install -y \
webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-devel
git clone https://github.com/Epistates/turbomcpstudio.git
cd turbomcpstudio
# Install frontend dependencies
pnpm install
TurboMCP v3.1.5 is published to crates.io and fetched automatically during the build process. No additional setup required.
# Start development server with hot-reload
pnpm run tauri dev
# This will:
# 1. Start Vite dev server (frontend) on http://localhost:1420
# 2. Compile Rust backend
# 3. Launch desktop app with hot-reload enabled
For local testing without creating installers:
# macOS: Build app bundle only (faster, no DMG)
pnpm run tauri:build
# All platforms: Build executable without installers
pnpm run tauri build -- --no-bundle
# Executable location: src-tauri/target/release/turbomcpstudio(.exe)
# Build for your current architecture
pnpm run tauri build
# Build for specific architecture
pnpm run tauri build -- --target aarch64-apple-darwin # Apple Silicon
pnpm run tauri build -- --target x86_64-apple-darwin # Intel
# Output locations:
# - App Bundle: src-tauri/target/[arch]/release/bundle/macos/TurboMCP Studio.app
# - DMG Installer: src-tauri/target/[arch]/release/bundle/dmg/TurboMCP Studio_*.dmg
Note: Unsigned builds will show a Gatekeeper warning. To bypass:
# Right-click app → "Open" → "Open"
# Or remove quarantine attribute:
xattr -d com.apple.quarantine "TurboMCP Studio.app"
# Build installers (MSI and NSIS)
pnpm run tauri build
# Build MSI only
pnpm run tauri build -- --bundles msi
# Build NSIS installer only
pnpm run tauri build -- --bundles nsis
# Output locations:
# - MSI: src-tauri/target/release/bundle/msi/TurboMCP Studio_*.msi
# - NSIS: src-tauri/target/release/bundle/nsis/TurboMCP Studio_*-setup.exe
# - Executable: src-tauri/target/release/turbomcpstudio.exe
Requirements:
Installation via Package Manager:
# Using Chocolatey
choco install wixtoolset nsis
# Using Scoop
scoop install wixtoolset nsis
# Build all Linux formats (AppImage, DEB, RPM)
pnpm run tauri build
# Build specific format
pnpm run tauri build -- --bundles appimage # Universal format
pnpm run tauri build -- --bundles deb # Debian/Ubuntu
pnpm run tauri build -- --bundles rpm # Fedora/RHEL
# Output locations:
# - AppImage: src-tauri/target/release/bundle/appimage/turbomcp-studio_*.AppImage
# - DEB: src-tauri/target/release/bundle/deb/turbomcp-studio_*.deb
# - RPM: src-tauri/target/release/bundle/rpm/turbomcp-studio-*.rpm
Running AppImage:
chmod +x turbomcp-studio_*.AppImage
./turbomcp-studio_*.AppImage
Installing DEB:
sudo dpkg -i turbomcp-studio_*.deb
# If dependencies missing:
sudo apt-get install -f
Installing RPM:
sudo rpm -i turbomcp-studio-*.rpm
# Or with dnf:
sudo dnf install turbomcp-studio-*.rpm
# Run type checker once
pnpm run check
# Run in watch mode (during development)
pnpm run check:watch
# Run Rust tests
cd src-tauri && cargo test --all-features
# Run with output
cargo test -- --nocapture
# Run specific test
cargo test test_name
# Run integration tests that require external binaries
TURBOMCP_DEMO_PATH=/path/to/binary cargo test --ignored
# Lint and format
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
Note: Some integration tests are
#[ignore]d by default because they require external MCP server binaries. Set theTURBOMCP_DEMO_PATHenvironment variable to run them locally.
turbomcpstudio/
├── src/ # SvelteKit frontend
│ ├── routes/ # Page routes (+layout.svelte, +page.svelte)
│ └── lib/
│ ├── components/ # Svelte 5 components (runes mode)
│ │ ├── layout/ # Shell: Sidebar, MasterLayout, StatusBar
│ │ ├── ui/ # Reusable: Button, JsonViewer, FormField, etc.
│ │ └── sampling/ # Sampling approval UI
│ ├── stores/ # Svelte stores (server, profile, sampling, OAuth, etc.)
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Helpers: logger, schema validation, cost estimation
│ └── constants/ # App-wide constants and timeouts
├── src-tauri/ # Rust backend (Tauri 2.0)
│ ├── src/
│ │ ├── commands/ # Tauri IPC command handlers
│ │ ├── mcp_client/ # MCP client: transport, health, sampling, rate limiting
│ │ ├── oauth/ # OAuth 2.1: flows, tokens, callback server, DPoP
│ │ ├── proxy/ # MCP proxy, benchmarking, metrics
│ │ ├── types/ # Shared Rust type definitions
│ │ ├── database.rs # SQLite via sqlx (migrations, queries)
│ │ ├── hitl_sampling.rs # Human-in-the-loop sampling manager
│ │ ├── workflow_engine.rs # Multi-step workflow execution
│ │ ├── error.rs # Structured error types
│ │ └── lib.rs # App setup, state, plugin registration
│ ├── tests/