Skip to main content
Glama
Nino6689
by Nino6689
README.md
# 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 documentation

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues