Skip to main content
Glama

VyOS MCP Server

by danielbodnar
index.html32.3 kB
<!DOCTYPE html><html class="default" lang="en" data-base="."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>VyOS MCP Server - v0.0.1</title><meta name="description" content="Documentation for VyOS MCP Server"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">VyOS MCP Server - v0.0.1</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>VyOS MCP Server - v0.0.1</h1></div><div class="tsd-panel tsd-typography"><a id="vyos-mcp-server" class="tsd-anchor"></a><h1 class="tsd-anchor-link">VyOS MCP Server<a href="#vyos-mcp-server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p><img src="https://docs.vyos.io/en/latest/_static/vyos-logo.png" alt="VyOS Logo"></p> <p>A comprehensive <strong>Model Context Provider (MCP)</strong> server for <strong>VyOS</strong> 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.</p> <a id="🚀-features" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🚀 Features<a href="#🚀-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong>Complete VyOS API Coverage</strong>: All endpoints from VyOS HTTPS API</li> <li><strong>Type Safety</strong>: Full TypeScript with Zod schema validation</li> <li><strong>MCP Compatible</strong>: Works with Claude Desktop and other MCP clients</li> <li><strong>Streaming Support</strong>: SSE transport for real-time communication</li> <li><strong>OpenAPI v3.1</strong>: Auto-generated API documentation</li> <li><strong>Error Handling</strong>: Robust error management with proper HTTP status codes</li> </ul> <a id="📋-requirements" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📋 Requirements<a href="#📋-requirements" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong>Bun</strong> v1.0+ (JavaScript runtime and package manager)</li> <li><strong>TypeScript</strong> v5.6+ with strict configuration</li> <li><strong>VyOS</strong> system with HTTPS API enabled</li> <li><strong>MCP Client</strong> (Claude Desktop, etc.)</li> </ul> <a id="🛠️-installation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🛠️ Installation<a href="#🛠️-installation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><pre><code class="bash"><span class="hl-0"># Clone or navigate to project directory</span><br/><span class="hl-1">cd</span><span class="hl-2"> </span><span class="hl-3">vyos-mcp</span><br/><br/><span class="hl-0"># Install dependencies</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">install</span><br/><br/><span class="hl-0"># Generate OpenAPI specification</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">openapi</span><br/><br/><span class="hl-0"># Generate documentation</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs</span><br/><br/><span class="hl-0"># Start development server</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">dev</span> </code><button type="button">Copy</button></pre> <a id="🔧-configuration" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🔧 Configuration<a href="#🔧-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="vyos-system-setup" class="tsd-anchor"></a><h3 class="tsd-anchor-link">VyOS System Setup<a href="#vyos-system-setup" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Enable the HTTPS API on your VyOS system:</p> <pre><code class="bash"><span class="hl-0"># Enter configuration mode</span><br/><span class="hl-4">configure</span><br/><br/><span class="hl-0"># Enable HTTPS API</span><br/><span class="hl-1">set</span><span class="hl-2"> </span><span class="hl-3">service</span><span class="hl-2"> </span><span class="hl-3">https</span><span class="hl-2"> </span><span class="hl-3">api</span><span class="hl-2"> </span><span class="hl-3">keys</span><span class="hl-2"> </span><span class="hl-3">id</span><span class="hl-2"> </span><span class="hl-3">my-api-key</span><span class="hl-2"> </span><span class="hl-3">key</span><span class="hl-2"> </span><span class="hl-3">&#39;your-secure-api-key-here&#39;</span><br/><br/><span class="hl-0"># Configure HTTPS certificates (optional, for production)</span><br/><span class="hl-1">set</span><span class="hl-2"> </span><span class="hl-3">service</span><span class="hl-2"> </span><span class="hl-3">https</span><span class="hl-2"> </span><span class="hl-3">certificates</span><span class="hl-2"> </span><span class="hl-3">system-generated-certificate</span><br/><br/><span class="hl-0"># Commit and save</span><br/><span class="hl-4">commit</span><br/><span class="hl-4">save</span><br/><span class="hl-1">exit</span> </code><button type="button">Copy</button></pre> <a id="mcp-client-configuration" class="tsd-anchor"></a><h3 class="tsd-anchor-link">MCP Client Configuration<a href="#mcp-client-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Add to your Claude Desktop configuration (<code>~/Library/Application Support/Claude/claude_desktop_config.json</code> on macOS):</p> <pre><code class="json"><span class="hl-2">{</span><br/><span class="hl-2"> </span><span class="hl-1">&quot;mcpServers&quot;</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-1">&quot;vyos&quot;</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-1">&quot;command&quot;</span><span class="hl-2">: </span><span class="hl-3">&quot;bun&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-1">&quot;args&quot;</span><span class="hl-2">: [</span><span class="hl-3">&quot;run&quot;</span><span class="hl-2">, </span><span class="hl-3">&quot;/path/to/vyos-mcp/src/index.ts&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> </span><span class="hl-1">&quot;env&quot;</span><span class="hl-2">: {}</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }</span><br/><span class="hl-2">}</span> </code><button type="button">Copy</button></pre> <a id="🎯-usage" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🎯 Usage<a href="#🎯-usage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="1-connect-to-vyos-system" class="tsd-anchor"></a><h3 class="tsd-anchor-link">1. Connect to VyOS System<a href="#1-connect-to-vyos-system" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-0">// Use the vyos-connect tool</span><br/><span class="hl-5">const</span><span class="hl-2"> </span><span class="hl-1">connection</span><span class="hl-2"> </span><span class="hl-5">=</span><span class="hl-2"> </span><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosConnect</span><span class="hl-2">({</span><br/><span class="hl-2"> host: </span><span class="hl-3">&quot;https://192.168.1.1&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> apiKey: </span><span class="hl-3">&quot;your-api-key&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> timeout: </span><span class="hl-1">30000</span><span class="hl-2">,</span><br/><span class="hl-2"> verifySSL: </span><span class="hl-1">false</span><span class="hl-2"> </span><span class="hl-0">// For self-signed certificates</span><br/><span class="hl-2">});</span> </code><button type="button">Copy</button></pre> <a id="2-configuration-management" class="tsd-anchor"></a><h3 class="tsd-anchor-link">2. Configuration Management<a href="#2-configuration-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-0">// Show configuration</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosShowConfig</span><span class="hl-2">({</span><br/><span class="hl-2"> path: [</span><span class="hl-3">&quot;interfaces&quot;</span><span class="hl-2">, </span><span class="hl-3">&quot;ethernet&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> format: </span><span class="hl-3">&quot;json&quot;</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Set configuration values</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosSetConfig</span><span class="hl-2">({</span><br/><span class="hl-2"> path: [</span><span class="hl-3">&quot;interfaces&quot;</span><span class="hl-2">, </span><span class="hl-3">&quot;ethernet&quot;</span><span class="hl-2">, </span><span class="hl-3">&quot;eth0&quot;</span><span class="hl-2">, </span><span class="hl-3">&quot;address&quot;</span><span class="hl-2">],</span><br/><span class="hl-2"> value: </span><span class="hl-3">&quot;192.168.1.1/24&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> comment: </span><span class="hl-3">&quot;LAN interface configuration&quot;</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Commit changes</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosCommit</span><span class="hl-2">({</span><br/><span class="hl-2"> comment: </span><span class="hl-3">&quot;Updated interface configuration&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> confirmTimeout: </span><span class="hl-1">10</span><span class="hl-2"> </span><span class="hl-0">// Auto-rollback in 10 minutes if not confirmed</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Save to startup config</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosSaveConfig</span><span class="hl-2">();</span> </code><button type="button">Copy</button></pre> <a id="3-network-diagnostics" class="tsd-anchor"></a><h3 class="tsd-anchor-link">3. Network Diagnostics<a href="#3-network-diagnostics" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-0">// Ping connectivity test</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosPing</span><span class="hl-2">({</span><br/><span class="hl-2"> host: </span><span class="hl-3">&quot;8.8.8.8&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> count: </span><span class="hl-1">5</span><span class="hl-2">,</span><br/><span class="hl-2"> timeout: </span><span class="hl-1">3</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Traceroute analysis</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosTraceroute</span><span class="hl-2">({</span><br/><span class="hl-2"> host: </span><span class="hl-3">&quot;google.com&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> maxHops: </span><span class="hl-1">30</span><br/><span class="hl-2">});</span> </code><button type="button">Copy</button></pre> <a id="4-system-monitoring" class="tsd-anchor"></a><h3 class="tsd-anchor-link">4. System Monitoring<a href="#4-system-monitoring" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-0">// Comprehensive health check</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosHealthCheck</span><span class="hl-2">({</span><br/><span class="hl-2"> includeInterfaces: </span><span class="hl-1">true</span><span class="hl-2">,</span><br/><span class="hl-2"> includeRouting: </span><span class="hl-1">true</span><span class="hl-2">,</span><br/><span class="hl-2"> includeServices: </span><span class="hl-1">true</span><span class="hl-2">,</span><br/><span class="hl-2"> includeResources: </span><span class="hl-1">true</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-0">// Interface statistics</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosInterfaceStats</span><span class="hl-2">();</span><br/><br/><span class="hl-0">// BGP status</span><br/><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-4">vyosBgpStatus</span><span class="hl-2">();</span> </code><button type="button">Copy</button></pre> <a id="🔍-available-tools" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🔍 Available Tools<a href="#🔍-available-tools" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="authentication" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Authentication<a href="#authentication" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-connect</code> - Connect to VyOS system</li> </ul> <a id="configuration-management" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Configuration Management<a href="#configuration-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-show-config</code> - Retrieve configuration</li> <li><code>vyos-set-config</code> - Set configuration values</li> <li><code>vyos-delete-config</code> - Delete configuration nodes</li> <li><code>vyos-config-exists</code> - Check configuration existence</li> <li><code>vyos-return-values</code> - Get configuration values</li> <li><code>vyos-commit</code> - Commit pending changes</li> <li><code>vyos-save-config</code> - Save to startup config</li> </ul> <a id="operational-commands" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Operational Commands<a href="#operational-commands" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-show-operational</code> - Execute show commands</li> <li><code>vyos-reset</code> - Execute reset commands</li> <li><code>vyos-generate</code> - Execute generate commands</li> </ul> <a id="system-management" class="tsd-anchor"></a><h3 class="tsd-anchor-link">System Management<a href="#system-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-system-info</code> - Get system information</li> <li><code>vyos-reboot</code> - Reboot system</li> <li><code>vyos-poweroff</code> - Power off system</li> <li><code>vyos-health-check</code> - Comprehensive health assessment</li> </ul> <a id="network-interface-management" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Network Interface Management<a href="#network-interface-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-configure-interface</code> - Configure interface settings</li> <li><code>vyos-interface-stats</code> - Get interface statistics</li> </ul> <a id="routing" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Routing<a href="#routing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-configure-static-route</code> - Configure static routes</li> <li><code>vyos-routing-table</code> - Display routing table</li> <li><code>vyos-bgp-status</code> - Get BGP status</li> </ul> <a id="network-diagnostic-tools" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Network Diagnostic Tools<a href="#network-diagnostic-tools" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>vyos-ping</code> - Ping connectivity test</li> <li><code>vyos-traceroute</code> - Traceroute network analysis</li> </ul> <a id="📖-documentation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📖 Documentation<a href="#📖-documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong><a href="media/index.html">API Documentation</a></strong> - Complete TypeDoc-generated documentation</li> <li><strong><a href="media/openapi.json">OpenAPI Specification</a></strong> - REST API specification</li> <li><strong><a href="https://docs.vyos.io/">VyOS Official Docs</a></strong> - VyOS documentation</li> </ul> <a id="scripts" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Scripts<a href="#scripts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-0"># Development</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">dev</span><span class="hl-2"> </span><span class="hl-0"># Start with hot reloading</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">build</span><span class="hl-2"> </span><span class="hl-0"># Build for production </span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">start</span><span class="hl-2"> </span><span class="hl-0"># Start production server</span><br/><br/><span class="hl-0"># Documentation (Pure Bun/TypeScript)</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs</span><span class="hl-2"> </span><span class="hl-0"># Generate TypeDoc documentation</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:serve</span><span class="hl-2"> </span><span class="hl-0"># Generate and serve docs on :8080</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:dev</span><span class="hl-2"> </span><span class="hl-0"># Serve existing docs (no rebuild)</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:watch</span><span class="hl-2"> </span><span class="hl-0"># Watch source files and rebuild docs</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:open</span><span class="hl-2"> </span><span class="hl-0"># Generate, serve, and open in browser</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:clean</span><span class="hl-2"> </span><span class="hl-0"># Clean generated documentation</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">openapi</span><span class="hl-2"> </span><span class="hl-0"># Generate OpenAPI specification</span><br/><br/><span class="hl-0"># Quality</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">typecheck</span><span class="hl-2"> </span><span class="hl-0"># TypeScript type checking</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">lint</span><span class="hl-2"> </span><span class="hl-0"># ESLint code quality</span> </code><button type="button">Copy</button></pre> <a id="🏗️-architecture" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🏗️ Architecture<a href="#🏗️-architecture" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="type-safety" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Type Safety<a href="#type-safety" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>Zod Schemas</strong>: All API operations use Zod for runtime validation</li> <li><strong>TypeScript</strong>: Strict typing throughout the codebase</li> <li><strong>Generated Types</strong>: Type definitions derived from schemas</li> </ul> <a id="error-handling" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Error Handling<a href="#error-handling" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>HTTP Status Codes</strong>: Proper 200/400/500 responses</li> <li><strong>VyOS API Errors</strong>: Translated to meaningful messages</li> <li><strong>Network Timeouts</strong>: Configurable timeout handling</li> <li><strong>Connection Management</strong>: Automatic retry and reconnection</li> </ul> <a id="streaming" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Streaming<a href="#streaming" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>SSE Transport</strong>: Server-Sent Events for real-time communication</li> <li><strong>Bridge Pattern</strong>: Connects MCP server to transport layer</li> <li><strong>CORS Support</strong>: Cross-origin requests for web clients</li> </ul> <a id="🤝-contributing" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🤝 Contributing<a href="#🤝-contributing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ol> <li>Fork the repository</li> <li>Create a feature branch</li> <li>Add comprehensive JSDoc documentation</li> <li>Include TypeScript type definitions</li> <li>Add error handling and validation</li> <li>Update tests and documentation</li> <li>Submit a pull request</li> </ol> <a id="📄-license" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📄 License<a href="#📄-license" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>MIT License - see <a href="LICENSE">LICENSE</a> file for details.</p> <a id="🆘-support" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🆘 Support<a href="#🆘-support" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong>Issues</strong>: <a href="https://github.com/bitbuilder-io/vyos-mcp/issues">GitHub Issues</a></li> <li><strong>VyOS Documentation</strong>: <a href="https://docs.vyos.io/">docs.vyos.io</a></li> <li><strong>MCP Specification</strong>: <a href="https://modelcontextprotocol.io/">Model Context Protocol</a></li> </ul> <hr> <p>Built with ❤️ for network automation and infrastructure management.</p> </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-private" name="private"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Private</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#vyos-mcp-server"><span>VyOS MCP <wbr/>Server</span></a><ul><li><a href="#🚀-features"><span>🚀 <wbr/>Features</span></a></li><li><a href="#📋-requirements"><span>📋 <wbr/>Requirements</span></a></li><li><a href="#🛠️-installation"><span>🛠️ <wbr/>Installation</span></a></li><li><a href="#🔧-configuration"><span>🔧 <wbr/>Configuration</span></a></li><li><ul><li><a href="#vyos-system-setup"><span>VyOS <wbr/>System <wbr/>Setup</span></a></li><li><a href="#mcp-client-configuration"><span>MCP <wbr/>Client <wbr/>Configuration</span></a></li></ul></li><li><a href="#🎯-usage"><span>🎯 <wbr/>Usage</span></a></li><li><ul><li><a href="#1-connect-to-vyos-system"><span>1. <wbr/>Connect to <wbr/>VyOS <wbr/>System</span></a></li><li><a href="#2-configuration-management"><span>2. <wbr/>Configuration <wbr/>Management</span></a></li><li><a href="#3-network-diagnostics"><span>3. <wbr/>Network <wbr/>Diagnostics</span></a></li><li><a href="#4-system-monitoring"><span>4. <wbr/>System <wbr/>Monitoring</span></a></li></ul></li><li><a href="#🔍-available-tools"><span>🔍 <wbr/>Available <wbr/>Tools</span></a></li><li><ul><li><a href="#authentication"><span>Authentication</span></a></li><li><a href="#configuration-management"><span>Configuration <wbr/>Management</span></a></li><li><a href="#operational-commands"><span>Operational <wbr/>Commands</span></a></li><li><a href="#system-management"><span>System <wbr/>Management</span></a></li><li><a href="#network-interface-management"><span>Network <wbr/>Interface <wbr/>Management</span></a></li><li><a href="#routing"><span>Routing</span></a></li><li><a href="#network-diagnostic-tools"><span>Network <wbr/>Diagnostic <wbr/>Tools</span></a></li></ul></li><li><a href="#📖-documentation"><span>📖 <wbr/>Documentation</span></a></li><li><ul><li><a href="#scripts"><span>Scripts</span></a></li></ul></li><li><a href="#🏗️-architecture"><span>🏗️ <wbr/>Architecture</span></a></li><li><ul><li><a href="#type-safety"><span>Type <wbr/>Safety</span></a></li><li><a href="#error-handling"><span>Error <wbr/>Handling</span></a></li><li><a href="#streaming"><span>Streaming</span></a></li></ul></li><li><a href="#🤝-contributing"><span>🤝 <wbr/>Contributing</span></a></li><li><a href="#📄-license"><span>📄 <wbr/>License</span></a></li><li><a href="#🆘-support"><span>🆘 <wbr/>Support</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">VyOS MCP Server - v0.0.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

Latest Blog Posts

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