zyxel-mcp-server
# Zyxel Switch MCP Server
A comprehensive Model Context Protocol (MCP) server for Zyxel switch CLI commands, enabling AI applications to interact with Zyxel switches for network configuration, monitoring, and management operations.
## ✅ **PRODUCTION READY**: Real Zyxel CLI Commands Integrated
This MCP server now contains **authentic Zyxel CLI commands and response formats** extracted from official Zyxel documentation (407-page CLI Reference Guide). All mock implementations have been replaced with real command syntax.
## Features
- **✅ Real CLI Command Support**: Authentic Zyxel switch CLI commands from official documentation
- **✅ Production-Ready Responses**: Actual command output formats for GS1920/GS1900/XGS series
- **✅ Network Configuration**: Interface configuration, VLAN management, and routing setup
- **✅ Real-time Monitoring**: System status, port statistics, and network diagnostics
- **✅ Secure Operations**: Authenticated command execution with proper error handling
- **✅ MCP Compliance**: Full Model Context Protocol implementation with tools, resources, and prompts
## Supported Zyxel Models
Based on the integrated CLI documentation:
- **GS1920 Series** (24/48 port variants)
- **GS1900 Series**
- **XGS1930 Series**
- **XGS2220 Series**
- Other managed Zyxel switches with CLI access
## MCP Tools (CLI Commands)
### Connection Management
- `zyxel_connect` - Connect to a Zyxel switch
- `zyxel_disconnect` - Disconnect from the switch
- `zyxel_connection_status` - Check connection status
### System Information
- `zyxel_show_version` - Display system version information
- `zyxel_show_system_info` - Show detailed system information
- `zyxel_show_running_config` - Display running configuration
- `zyxel_show_startup_config` - Display startup configuration
### Interface Management
- `zyxel_show_interfaces` - Display interface status and configuration
- `zyxel_configure_interface` - Configure interface settings
- `zyxel_configure_switchport` - Configure switchport settings
### VLAN Management
- `zyxel_show_vlan` - Display VLAN information
- `zyxel_create_vlan` - Create a new VLAN
- `zyxel_delete_vlan` - Delete a VLAN
### Network Monitoring
- `zyxel_show_mac_table` - Display MAC address table
- `zyxel_show_arp_table` - Display ARP table
- `zyxel_show_spanning_tree` - Display spanning tree information
- `zyxel_ping` - Test network connectivity
### Configuration Management
- `zyxel_save_config` - Save running configuration to startup
- `zyxel_execute_cli` - Execute raw CLI commands
## MCP Resources (Read-only Data)
### System Resources
- `zyxel://switch/version` - System version information
- `zyxel://switch/system-info` - Detailed system information
- `zyxel://switch/running-config` - Current running configuration
- `zyxel://switch/startup-config` - Saved startup configuration
### Network Resources
- `zyxel://switch/interfaces` - Interface status and statistics
- `zyxel://switch/vlans` - VLAN configuration and status
- `zyxel://switch/mac-table` - MAC address table entries
- `zyxel://switch/arp-table` - ARP table entries
- `zyxel://switch/spanning-tree` - Spanning tree topology
- `zyxel://switch/port-statistics` - Port traffic statistics
### Documentation
- `zyxel://docs/cli-reference` - Complete CLI command reference
- `zyxel://docs/troubleshooting` - Troubleshooting guide
## MCP Prompts (Guided Workflows)
### Setup and Configuration
- `zyxel_initial_setup` - Guide for initial switch setup
- `zyxel_vlan_setup` - Step-by-step VLAN configuration
- `zyxel_port_configuration` - Port configuration guide
### Maintenance and Operations
- `zyxel_troubleshooting` - Network troubleshooting procedures
- `zyxel_backup_restore` - Configuration backup and restore
- `zyxel_monitoring_setup` - Monitoring and logging setup
### Security and Performance
- `zyxel_security_hardening` - Security configuration best practices
- `zyxel_performance_optimization` - Performance tuning guide
## Installation
1. Clone the repository:
```bash
git clone https://github.com/yourusername/zyxel-mcp-server.git
cd zyxel-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Usage
### Direct Execution
```bash
npm start
```
### As MCP Server
Configure your MCP client to use this server:
```json
{
"mcpServers": {
"zyxel": {
"command": "npx",
"args": ["zyxel-mcp-server"]
}
}
}
```
### Development Mode
```bash
npm run dev
```
## Configuration
The server can be configured through environment variables:
- `ZYXEL_DEFAULT_HOST` - Default switch IP address
- `ZYXEL_DEFAULT_USERNAME` - Default username
- `ZYXEL_DEFAULT_PASSWORD` - Default password
- `ZYXEL_TIMEOUT` - Command timeout in milliseconds (default: 30000)
- `ZYXEL_DEBUG` - Enable debug logging (true/false)
## Examples
### Connecting to a Switch
```typescript
// Use the zyxel_connect tool
{
"host": "192.168.1.100",
"username": "admin",
"password": "admin123",
"port": 22
}
```
### Creating a VLAN
```typescript
// Use the zyxel_create_vlan tool
{
"vlanId": 100,
"name": "Production_VLAN",
"description": "Production network VLAN"
}
```
### Configuring an Interface
```typescript
// Use the zyxel_configure_interface tool
{
"interface": "ethernet 1/5",
"description": "User Workstation",
"shutdown": false,
"speed": "auto",
"duplex": "auto"
}
```
## Project Structure
```
src/
├── cli/
│ ├── handler.ts # CLI command execution
│ └── types.ts # Type definitions
├── tools/
│ └── manager.ts # MCP tools implementation
├── resources/
│ └── manager.ts # MCP resources implementation
├── prompts/
│ └── manager.ts # MCP prompts implementation
└── index.ts # Main server entry point
```
## Development
### Building
```bash
npm run build
```
### Type Checking
```bash
npm run typecheck
```
### Cleaning
```bash
npm run clean
```
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Supported Zyxel Models
This MCP server has been designed to work with various Zyxel switch models, including:
- GS1920 Series
- GS1900 Series
- XGS1930 Series
- XGS2220 Series
- And other Zyxel managed switches with CLI access
## Support
For issues and support:
1. Check the [troubleshooting guide](docs/troubleshooting.md)
2. Search existing [GitHub issues](https://github.com/yourusername/zyxel-mcp-server/issues)
3. Create a new issue with detailed information
## Acknowledgments
- [Model Context Protocol](https://modelcontextprotocol.io/) specification
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- Zyxel for their comprehensive CLI documentationTDQS
Scored across 19 tools
Each tool targets a distinct aspect of switch management: session control, system info, config, interfaces, VLANs, MAC, STP, ARP, ping, and raw CLI. There is no ambiguity between tools like show_running_config vs show_startup_config or configure_interface vs configure_switchport as they have clear different purposes.
All tools follow a consistent 'zyxel_verb_noun' snake_case pattern (e.g., zyxel_show_version, zyxel_create_vlan). The verb list (show, create, configure, clear, ping) is uniform and descriptive.
19 tools is slightly high but appropriate for a comprehensive network switch management server covering session, system, config, interfaces, VLANs, MAC, STP, ARP, ping, and CLI execution. The set feels well-scoped without bloat.
Covers many core operations (show, create, configure, save, clear, ping) but lacks some lifecycle actions like deleting a VLAN or modifying existing VLAN settings. The presence of a raw CLI tool partially mitigates gaps, but the tool surface itself is incomplete for full management.