使用说明
MCP路由器-MCP路由器
🚀 现代MCP协议路由器 -通过企业级权限管理和智能路由无缝连接stdio和HTTP
✨ 核心亮点
🔄 MCP协议转换
- stdio到HTTP转换:通过HTTP接口公开标准MCP服务器
- 多传输协议支持:stdio和HTTP传输方法
- 透明协议适配:无需对现有MCP服务器进行修改
🔐 细粒度权限管理
- 基于令牌的访问控制:每个令牌的独立权限配置
- 工具级授权:对单个工具访问权限进行精细控制
- 安全令牌验证:持续时间比较,增强安全性
⚡ 高性能路由聚合
- 智能请求路由:自动分发到相应的MCP服务器
- 异步并发处理:支持高并发请求
- 自动故障恢复:服务异常时自动重新连接
- 实时监控仪表板:可视化系统状态显示
🖥️ 界面预览
实时监控仪表板
实时系统状态、活动连接监控和性能指标显示
服务器管理界面
MCP服务器生命周期管理、批处理操作和状态监控
令牌权限管理
创建和管理令牌,配置细粒度权限,查看使用统计数据
系统设置页面
网络配置、主题设置和系统首选项
🚀 特性
🔄 协议转换和路由
- 多传输协议支持:stdio和HTTP
- 协议转换:MCP stdio到HTTP接口
- 智能请求路由:自动识别并路由到相应的服务器
- 聚合服务:将多个MCP服务器合并到一个统一的接口中
🔐 权限管理系统
- 许可证管理:令牌的动态创建、删除和更新
- 工具级授权:对单个工具访问权限进行精细控制
- 访问控制:
allowed_tools:精确控制可以访问哪些工具allowed_resources:控制资源访问权限allowed_prompts:控制提示模板访问权限
- 安全功能:
- 恒定时间令牌比较以增强安全性
- 详细的审计日志记录
- 向后兼容性(默认情况下禁用身份验证)
🎯 服务管理与监控
- 生命周期管理:启动、停止、重新启动和配置MCP服务器
- 自动发现:自动识别服务器提供的工具、资源和提示
- 健康检查:实时监控服务状态
- 性能指标:请求统计、响应时间、错误率
🛡️ 系统集成
- 本地系统托盘:快速访问菜单
- 自动启动:后台服务支持
- 多主题:自动/亮/暗主题支持
- 平台优化:macOS、Windows、Linux特定的优化
- 灵活的配置:基于JSON的配置,支持导入/导出
- 网络管理:本地IP地址发现和网络接口配置
🚀 快速开始
- 安装依赖项:
pnpm install - 发展模式:
pnpm tauri dev - 构建生产:
pnpm tauri build
启动后,通过直观的web界面配置MCP服务器并管理权限。
推荐的 IDE 设置
建筑
后端(Rust/Tauri)
src-tauri/src/
├── main.rs # Application entry point
├── lib.rs # Tauri command registry and global state
├── commands/ # Tauri command handlers
│ ├── mod.rs
│ ├── config.rs # Configuration management
│ ├── dashboard.rs # Dashboard statistics
│ ├── mcp_server.rs # MCP server operations
│ ├── settings.rs # System settings
│ ├── token_management.rs # Token management commands
│ └── tool.rs # Tool management
├── config/ # Configuration layer
│ ├── mod.rs
│ ├── file_manager.rs # Config file I/O
│ └── mcp_server_config.rs # Server configuration models
├── mcp_manager.rs # MCP server lifecycle management
├── mcp_client.rs # MCP client connection handling
├── aggregator.rs # Request routing and aggregation
├── token_manager.rs # Token management system
├── session_manager.rs # Session-level permission caching
├── auth_context.rs # Authentication context and permission validation
├── connection_mapper.rs # HTTP to MCP connection mapping
├── types.rs # Shared type definitions
└── error.rs # Error handling
前端(React/TypeScript)
src/
├── components/ # Reusable UI components
│ ├── ErrorBoundary.tsx # Error boundary wrapper
│ ├── Layout.tsx # Main layout wrapper
│ ├── ServiceDetail.tsx # Server detail view
│ ├── ToolManager.tsx # Tool management interface
│ └── AboutModal.tsx # About dialog
├── pages/ # Main application pages
│ ├── Dashboard.tsx # System dashboard and statistics
│ ├── McpServerManager.tsx # MCP server management
│ ├── Settings.tsx # Application settings
│ └── TokenManagement.tsx # Token management
├── services/ # API service layer
│ ├── api.ts # Tauri API client
│ ├── config-service.ts # Configuration management
│ ├── dashboard-service.ts # Dashboard statistics
│ ├── mcp-server-service.ts # Server management
│ └── tool-service.ts # Tool operations
├── types/ # TypeScript type definitions
│ └── index.ts
├── theme/ # Theme configuration
│ └── antd-config.ts
└── vite-env.d.ts # Vite environment types
核心功能
- 仪表板分析:实时系统统计、活动连接和健康监测
- 服务器管理:全生命周期管理(创建、启动、停止、重新启动、配置)
- 探索与发现:从连接的服务器自动发现工具、资源和提示
- 配置管理:灵活的基于JSON的配置,支持导入/导出
- 系统集成:本机系统托盘、自动启动和多主题支持
- 网络管理:本地IP地址发现和网络接口配置
- 传输协议:支持stdio、服务器发送事件(SSE)和HTTP传输
配置架构
MCPRouter使用灵活的基于JSON的配置系统,存储在 ~/.mcprouter/config.json:
- 服务器配置:主机、端口、超时、连接限制和可选身份验证
- MCP服务器:已配置的服务器列表,包括传输类型、命令和环境
- 设置:主题、自动启动、系统托盘和注册表首选项
- 日志记录:可配置的日志级别和文件输出
验证配置
为聚合器端点启用承载令牌身份验证:
{
"server": {
"host": "127.0.0.1",
"port": 8000,
"max_connections": 100,
"timeout_seconds": 30,
"auth": true,
"bearer_token": "your-secret-token-here"
}
}
安全最佳实践:
- 使用加密随机令牌(建议使用32+个字符)
- 将文件权限设置为
chmod 600 ~/.mcprouter/config.json保护令牌 - 使用HTTPS或仅绑定到本地主机(
127.0.0.1)启用身份验证时 - 令牌区分大小写,并使用恒定时间比较进行验证
- 为了向后兼容,默认情况下禁用身份验证
客户端使用情况:
# Without authentication (default)
curl http://127.0.0.1:8000/mcp
# With authentication enabled
curl -H "Authorization: Bearer your-secret-token-here" \
http://127.0.0.1:8000/mcp
令牌权限管理
MCPRouter支持对令牌进行细粒度的权限控制,允许您限制对特定工具、资源和提示的访问:
{
"tokens": [
{
"name": "read-only-token",
"token": "ro-secret-token-here",
"allowed_tools": ["server/list_tools", "server/read_resource"],
"allowed_resources": ["server/data/*"],
"allowed_prompts": ["server/summary"]
},
{
"name": "admin-token",
"token": "admin-secret-token-here",
"allowed_tools": ["*"],
"allowed_resources": ["*"],
"allowed_prompts": ["*"]
}
]
}
权限模式:
*-允许访问所有工具/资源/提示server/*-允许访问下的所有工具server命名空间server/tool-仅允许访问特定工具server/path/*-允许访问特定路径下的所有资源
权限验证:
- 在HTTP和MCP协议层验证权限
- 会话级缓存提供高性能验证
- 用于安全监控的详细审计日志记录
- 自动回退以拒绝未指定的权限
发展
先决条件
设置
# Clone the repository
git clone https://github.com/your-org/mcprouter.git
cd mcprouter
# Install dependencies
pnpm install
# Development mode (runs both Rust and web dev server)
pnpm tauri dev
# Build for production
pnpm tauri build
# Preview production build
pnpm tauri build && pnpm tauri build --debug
可用脚本
# Start development server
pnpm dev # Start Vite dev server only
pnpm tauri dev # Start full Tauri app with dev server
# Build commands
pnpm build # TypeScript build + Vite build
pnpm tauri build # Full production build (creates installers)
# Utility commands
pnpm preview # Preview Vite build
项目结构
该项目采用模块化架构:
src-tauri/:使用Tauri框架的Rust后端src/:React+TypeScript前端src/components/:可重复使用的UI组件src/pages/:主要应用程序视图src/services/:用于后端通信的API服务层src/types/:TypeScript类型定义
调试
# Enable debug logging
# Edit src-tauri/tauri.conf.json and set:
# "logging": { "level": "debug" }
# View logs (macOS/Linux)
tail -f ~/.local/share/mcprouter/logs/mcprouter.log
# View logs (Windows)
type %LOCALAPPDATA%\mcprouter\logs\mcprouter.log
贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature-name - 进行更改并彻底测试
- 以明确的信息承诺:
git commit -m "feat: add new feature" - 推叉并提交拉叉请求
技术栈
- 后端:铁锈1.70+,牛磺酸2.x
- 前端:React 19,TypeScript 5,Vite 7
- 用户界面:蚂蚁设计5,顺风CSS 3
- 图标:Lucide React
- 平台:macOS、Windows、Linux
