Skip to main content
Glama

VyOS MCP Server

by danielbodnar
README.md7.55 kB
# VyOS MCP Server ![VyOS Logo](https://docs.vyos.io/en/latest/_static/vyos-logo.png) A comprehensive **Model Context Provider (MCP)** server for **VyOS** network operating system automation. This server provides complete access to VyOS functionality through 25+ tools covering configuration management, operational commands, system administration, network diagnostics, and monitoring. ## 🚀 Features - **Complete VyOS API Coverage**: All endpoints from VyOS HTTPS API - **Type Safety**: Full TypeScript with Zod schema validation - **MCP Compatible**: Works with Claude Desktop and other MCP clients - **Streaming Support**: SSE transport for real-time communication - **OpenAPI v3.1**: Auto-generated API documentation - **Error Handling**: Robust error management with proper HTTP status codes ## 📋 Requirements - **Bun** v1.0+ (JavaScript runtime and package manager) - **TypeScript** v5.6+ with strict configuration - **VyOS** system with HTTPS API enabled - **MCP Client** (Claude Desktop, etc.) ## 🛠️ Installation ### From JSR (Recommended) ```bash # Install from JSR bunx jsr add @danielbodnar/vyos-mcp # Or with other package managers npx jsr add @danielbodnar/vyos-mcp pnpm dlx jsr add @danielbodnar/vyos-mcp yarn dlx jsr add @danielbodnar/vyos-mcp ``` ### From Source ```bash # Clone or navigate to project directory cd vyos-mcp # Install dependencies bun install # Generate OpenAPI specification bun run openapi # Generate documentation bun run docs # Start development server bun run dev ``` ### Using as a Library (JSR) ```typescript import { VyOSClient } from "@danielbodnar/vyos-mcp"; // Create client instance const client = new VyOSClient({ host: "https://vyos.example.com", apiKey: "your-api-key", timeout: 30000, verifySSL: false }); // Configure interface await client.setConfig(["interfaces", "ethernet", "eth0", "address"], "192.168.1.1/24"); await client.commit("Configure LAN interface"); await client.save(); ``` ## 🔧 Configuration ### VyOS System Setup Enable the HTTPS API on your VyOS system: ```bash # Enter configuration mode configure # Enable HTTPS API set service https api keys id my-api-key key 'your-secure-api-key-here' # Configure HTTPS certificates (optional, for production) set service https certificates system-generated-certificate # Commit and save commit save exit ``` ### MCP Client Configuration Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS): ```json { "mcpServers": { "vyos": { "command": "bun", "args": ["run", "/path/to/vyos-mcp/src/index.ts"], "env": {} } } } ``` ## 🎯 Usage ### 1. Connect to VyOS System ```typescript // Use the vyos-connect tool const connection = await vyosConnect({ host: "https://192.168.1.1", apiKey: "your-api-key", timeout: 30000, verifySSL: false // For self-signed certificates }); ``` ### 2. Configuration Management ```typescript // Show configuration await vyosShowConfig({ path: ["interfaces", "ethernet"], format: "json" }); // Set configuration values await vyosSetConfig({ path: ["interfaces", "ethernet", "eth0", "address"], value: "192.168.1.1/24", comment: "LAN interface configuration" }); // Commit changes await vyosCommit({ comment: "Updated interface configuration", confirmTimeout: 10 // Auto-rollback in 10 minutes if not confirmed }); // Save to startup config await vyosSaveConfig(); ``` ### 3. Network Diagnostics ```typescript // Ping connectivity test await vyosPing({ host: "8.8.8.8", count: 5, timeout: 3 }); // Traceroute analysis await vyosTraceroute({ host: "google.com", maxHops: 30 }); ``` ### 4. System Monitoring ```typescript // Comprehensive health check await vyosHealthCheck({ includeInterfaces: true, includeRouting: true, includeServices: true, includeResources: true }); // Interface statistics await vyosInterfaceStats(); // BGP status await vyosBgpStatus(); ``` ## 🔍 Available Tools ### Authentication - `vyos-connect` - Connect to VyOS system ### Configuration Management - `vyos-show-config` - Retrieve configuration - `vyos-set-config` - Set configuration values - `vyos-delete-config` - Delete configuration nodes - `vyos-config-exists` - Check configuration existence - `vyos-return-values` - Get configuration values - `vyos-commit` - Commit pending changes - `vyos-save-config` - Save to startup config ### Operational Commands - `vyos-show-operational` - Execute show commands - `vyos-reset` - Execute reset commands - `vyos-generate` - Execute generate commands ### System Management - `vyos-system-info` - Get system information - `vyos-reboot` - Reboot system - `vyos-poweroff` - Power off system - `vyos-health-check` - Comprehensive health assessment ### Network Interface Management - `vyos-configure-interface` - Configure interface settings - `vyos-interface-stats` - Get interface statistics ### Routing - `vyos-configure-static-route` - Configure static routes - `vyos-routing-table` - Display routing table - `vyos-bgp-status` - Get BGP status ### Network Diagnostic Tools - `vyos-ping` - Ping connectivity test - `vyos-traceroute` - Traceroute network analysis ## 📖 Documentation - **[API Documentation](./docs/index.html)** - Complete TypeDoc-generated documentation - **[OpenAPI Specification](./openapi.json)** - REST API specification - **[VyOS Official Docs](https://docs.vyos.io/)** - VyOS documentation ### Scripts ```bash # Development bun run dev # Start with hot reloading bun run build # Build for production bun run start # Start production server # Documentation (Pure Bun/TypeScript) bun run docs # Generate TypeDoc documentation bun run docs:serve # Generate and serve docs on :8080 bun run docs:dev # Serve existing docs (no rebuild) bun run docs:watch # Watch source files and rebuild docs bun run docs:open # Generate, serve, and open in browser bun run docs:clean # Clean generated documentation bun run openapi # Generate OpenAPI specification # Quality bun run typecheck # TypeScript type checking bun run lint # ESLint code quality ``` ## 🏗️ Architecture ### Type Safety - **Zod Schemas**: All API operations use Zod for runtime validation - **TypeScript**: Strict typing throughout the codebase - **Generated Types**: Type definitions derived from schemas ### Error Handling - **HTTP Status Codes**: Proper 200/400/500 responses - **VyOS API Errors**: Translated to meaningful messages - **Network Timeouts**: Configurable timeout handling - **Connection Management**: Automatic retry and reconnection ### Streaming - **SSE Transport**: Server-Sent Events for real-time communication - **Bridge Pattern**: Connects MCP server to transport layer - **CORS Support**: Cross-origin requests for web clients ## 🤝 Contributing 1. Fork the repository 2. Create a feature branch 3. Add comprehensive JSDoc documentation 4. Include TypeScript type definitions 5. Add error handling and validation 6. Update tests and documentation 7. Submit a pull request ## 📄 License MIT License - see [LICENSE](LICENSE) file for details. ## 🆘 Support - **Issues**: [GitHub Issues](https://github.com/bitbuilder-io/vyos-mcp/issues) - **VyOS Documentation**: [docs.vyos.io](https://docs.vyos.io/) - **MCP Specification**: [Model Context Protocol](https://modelcontextprotocol.io/) --- Built with ❤️ for network automation and infrastructure management.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielbodnar/vyos-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server