Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Routerlist all connected MCP servers and their current health status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Router
A secure, enterprise-grade Model Context Protocol (MCP) server aggregation platform built with Electron.
Overview
MCP Router acts as a centralized gateway for managing multiple MCP servers, providing:
Server Aggregation: Connect and manage multiple MCP servers from a single interface
Policy-Based Access Control: Fine-grained control over tool and resource access
Token Authentication: Secure API token management with scoping and expiration
Approval Workflows: Human-in-the-loop approval for sensitive operations
Rate Limiting: Protect against abuse with configurable rate limits
Audit Logging: Complete audit trail of all operations
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ MCP Router │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Clients │ │ Policy │ │ Approval │ │
│ │ (Claude, │──│ Engine │──│ Queue │ │
│ │ etc.) │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ MCP Aggregator │ │
│ │ - Tool routing - Resource proxying - Audit log │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ MCP Server│ │ MCP Server│ │ MCP Server│ │
│ │ A │ │ B │ │ C │ │
│ └───────────┘ └───────────┘ └───────────┘ │
└─────────────────────────────────────────────────────────────────┘Features
Server Management
Support for stdio and HTTP transport protocols
Automatic server health monitoring
Tool and resource discovery
Per-server configuration
Security
Token-based authentication with scopes
Policy rules with glob pattern matching
Rate limiting per client/token
Secure credential storage via system keychain
Policy Engine
Global, client-specific, and server-specific policies
Allow, deny, and require_approval actions
Priority-based rule evaluation
Wildcard pattern matching
Approval System
Real-time approval notifications
Configurable timeout and expiration
Audit trail for all decisions
Quick Start
Prerequisites
Node.js 20+
pnpm 9+
Installation
# Clone the repository
git clone https://github.com/your-org/mcp-router.git
cd mcp-router
# Install dependencies
pnpm install
# Start development server
pnpm devBuilding
# Build for production
pnpm build
# Package for distribution
pnpm packageProject Structure
mcp-router/
├── apps/
│ └── desktop/ # Electron desktop application
│ ├── src/
│ │ ├── main/ # Main process (Node.js)
│ │ │ ├── core/ # DI container, types, interfaces
│ │ │ ├── services/ # Business logic services
│ │ │ ├── repositories/ # Data access layer
│ │ │ └── ipc/ # IPC handlers
│ │ ├── preload/ # Preload scripts (context bridge)
│ │ └── renderer/ # React UI
│ │ ├── components/ # Reusable UI components
│ │ ├── features/ # Feature modules
│ │ ├── hooks/ # Custom React hooks
│ │ └── stores/ # Zustand state stores
│ └── tests/ # Test files
├── docs/ # Documentation
│ ├── adr/ # Architecture Decision Records
│ ├── api/ # API documentation
│ └── guides/ # User and developer guides
└── packages/ # Shared packages (future)Technology Stack
Layer | Technology |
Framework | Electron 28 |
UI | React 18 + TypeScript |
Styling | Tailwind CSS + shadcn/ui |
State | Zustand |
DI | InversifyJS |
Database | SQLite (better-sqlite3) |
Build | electron-vite + Vite |
Testing | Vitest + Playwright |
Documentation
Scripts
Command | Description |
| Start development server |
| Build for production |
| Run unit tests |
| Run tests in watch mode |
| Run ESLint |
| Fix linting issues |
| Run TypeScript type checking |
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
MIT License - see LICENSE for details.