Zyxel Switch MCP Server
Enables AI applications to interact with Zyxel switches via CLI for network configuration, monitoring, and management, supporting SSH/Telnet sessions and MCP-compliant tools, resources, and prompts.
README
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.
Status
The server opens a real interactive CLI session on the switch over SSH (default) or Telnet, and runs commands against it. Command syntax and the expected output formats come from the official Zyxel CLI Reference Guide (407 pages).
An offline mode (ZYXEL_MOCK=true) replays canned output so the server can be developed
and demoed without hardware. Everything it returns is fabricated.
Features
- Live CLI sessions: SSH (
ssh2) or Telnet with its own option negotiation - Automatic privilege handling: enters
enable/configure terminalon demand, including the enable-password prompt - Pagination handling:
--More--prompts are answered automatically, so long output arrives complete - Clean output: the echoed command and the trailing prompt are stripped before the result is returned
- Serialised commands: overlapping tool calls are queued so they cannot interleave on the shared stream
- Legacy switch support: older KEX/cipher/HMAC algorithms are offered in addition to the modern defaults
- 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 switchzyxel_disconnect- Disconnect from the switchzyxel_connection_status- Check connection status
System Information
zyxel_show_version- Display system version informationzyxel_show_system_info- Show detailed system informationzyxel_show_running_config- Display running configurationzyxel_show_startup_config- Display startup configuration
Interface Management
zyxel_show_interfaces- Display interface status and configurationzyxel_configure_interface- Configure interface settingszyxel_configure_switchport- Configure switchport settings
VLAN Management
zyxel_show_vlan- Display VLAN informationzyxel_create_vlan- Create a new VLANzyxel_delete_vlan- Delete a VLAN
Network Monitoring
zyxel_show_mac_table- Display MAC address tablezyxel_show_arp_table- Display ARP tablezyxel_show_spanning_tree- Display spanning tree informationzyxel_ping- Test network connectivity
Configuration Management
zyxel_save_config- Save running configuration to startupzyxel_execute_cli- Execute raw CLI commands
MCP Resources (Read-only Data)
System Resources
zyxel://switch/version- System version informationzyxel://switch/system-info- Detailed system informationzyxel://switch/running-config- Current running configurationzyxel://switch/startup-config- Saved startup configuration
Network Resources
zyxel://switch/interfaces- Interface status and statisticszyxel://switch/vlans- VLAN configuration and statuszyxel://switch/mac-table- MAC address table entrieszyxel://switch/arp-table- ARP table entrieszyxel://switch/spanning-tree- Spanning tree topologyzyxel://switch/port-statistics- Port traffic statistics
Documentation
zyxel://docs/cli-reference- Complete CLI command referencezyxel://docs/troubleshooting- Troubleshooting guide
MCP Prompts (Guided Workflows)
Setup and Configuration
zyxel_initial_setup- Guide for initial switch setupzyxel_vlan_setup- Step-by-step VLAN configurationzyxel_port_configuration- Port configuration guide
Maintenance and Operations
zyxel_troubleshooting- Network troubleshooting procedureszyxel_backup_restore- Configuration backup and restorezyxel_monitoring_setup- Monitoring and logging setup
Security and Performance
zyxel_security_hardening- Security configuration best practiceszyxel_performance_optimization- Performance tuning guide
Installation
- Clone the repository:
git clone https://github.com/humyai99/mcp-zyxel.git
cd mcp-zyxel
- Install dependencies:
npm install
- Build the project:
npm run build
Usage
Direct Execution
npm start
As MCP Server
Configure your MCP client to use this server:
{
"mcpServers": {
"zyxel": {
"command": "npx",
"args": ["zyxel-mcp-server"]
}
}
}
Development Mode
npm run dev
Configuration
The server can be configured through environment variables. When host, username and
password are all present, the server starts pre-configured and zyxel_connect can be
called with no arguments.
ZYXEL_DEFAULT_HOST- Default switch IP addressZYXEL_DEFAULT_USERNAME- Default usernameZYXEL_DEFAULT_PASSWORD- Default passwordZYXEL_ENABLE_PASSWORD- Password for privileged mode (falls back to the login password)ZYXEL_PROTOCOL-ssh(default) ortelnetZYXEL_PORT- Overrides the protocol default (22 for SSH, 23 for Telnet)ZYXEL_TIMEOUT- Command timeout in milliseconds (default: 30000)ZYXEL_DEBUG- Log every command and response to stderr (true/false)ZYXEL_MOCK-truereplays canned output and never contacts a switch
Passwords are only held in memory for the lifetime of the session, and
zyxel_connection_status redacts them.
Offline mode
ZYXEL_MOCK=true npm start
Examples
Connecting to a Switch
// Use the zyxel_connect tool. protocol defaults to "ssh", and port defaults
// to 22 for SSH / 23 for Telnet, so both can usually be omitted.
{
"host": "192.168.1.100",
"username": "admin",
"password": "admin123",
"enablePassword": "admin123" // optional; only if the switch asks for one
}
Creating a VLAN
// Use the zyxel_create_vlan tool
{
"vlanId": 100,
"name": "Production_VLAN",
"description": "Production network VLAN"
}
Configuring an Interface
// 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 # Session state, privilege modes, command queue
│ ├── transport.ts # SSH + Telnet transports, prompt/pagination handling
│ ├── mock-transport.ts # Offline canned output (ZYXEL_MOCK=true)
│ └── 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
test/
├── fake-switch.mjs # Emulated Zyxel CLI over SSH and Telnet
└── transport.test.mjs # Integration test for both transports
Development
Building
npm run build
Type Checking
npm run typecheck
Testing
The test suite starts an emulated Zyxel switch (login prompts, command echo,
privilege modes, --More-- pagination) on both SSH and Telnet and drives the real
transports against it, so no hardware is required.
npm test
Cleaning
npm run clean
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
This project is licensed under the MIT License - see the 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:
- Check the troubleshooting guide
- Search existing GitHub issues
- Create a new issue with detailed information
Acknowledgments
- Model Context Protocol specification
- MCP TypeScript SDK
- Zyxel for their comprehensive CLI documentation
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.