by pamosima
Provides a Docker‑based collection of MCP servers covering Meraki, Catalyst Center, IOS XE, ISE, ThousandEyes, Splunk, NetBox, and GitLab, ready for AI‑driven network operations.
The suite bundles ten containerized MCP servers that expose Cisco and third‑party network management capabilities via a uniform HTTP interface. It enables AI assistants (e.g., LibreChat, Cursor) to query and control cloud, on‑prem, and telemetry systems in natural language, supporting AIOps workflows such as automated troubleshooting, performance analysis, and documentation synchronization.
git clone https://github.com/pamosima/network-mcp-docker-suite.git && cd network-mcp-docker-suite. Copy the example environment file (cp .env.example .env) and fill in API keys, credentials, and the ENABLE_*_MCP flags for the servers you need../deploy.sh start all to launch every server, or ./deploy.sh start cisco for the Cisco‑focused subset.curl http://localhost:<port>/mcp for each port (8000‑8009) to confirm the servers respond.all, cisco, monitoring, netops-stack, security, etc., to start only the needed subset.ENABLE_*_MCP flags in a single .env file.Q: Do I need to run all ten servers?
A: No. Use the ENABLE_*_MCP variables or the predefined profiles to start only the services you require, saving resources and reducing attack surface.
Q: How are credentials handled?
A: All API keys, passwords, and tokens are read from the centralized .env file (or Docker secrets in production). No secrets are baked into the containers.
Q: Can I expose the servers securely in production? A: Yes. You can place the containers behind a reverse proxy with TLS, enable firewall rules, and use Docker secrets or a vault to inject credentials.
Q: Is authentication required for the MCP endpoints? A: The default development setup uses open HTTP endpoints. For production, you should add authentication (e.g., API gateway, OAuth) before exposing the ports.
Q: How do I add a new MCP server to the suite?
A: Create a Dockerfile for the new service, add it to docker-compose.yml, and extend the deploy.sh script and .env flags following the existing pattern.
📚 Example Code for Learning & Development
This is a demonstration project showcasing MCP server implementations for network management. Intended for educational purposes, testing, and development environments.
Docker-based MCP server suite for AIOps - enabling AI-driven network operations through Cisco Meraki, Catalyst Center, IOS XE, ISE, ThousandEyes, Splunk, NetBox & GitLab integration. AI-ready with LibreChat, Cursor, and other MCP clients for intelligent network management, automated troubleshooting, CI/CD orchestration, and operational insights.
AI-Powered Network Troubleshooting with LibreChat using Multiple MCP Servers

Watch how natural language queries automatically investigate and resolve network issues using both Catalyst Center MCP Server and IOS XE MCP Server. The AI assistant correlates data from management systems (Catalyst Center) with direct device access (IOS XE SSH) to identify root causes and provide comprehensive solutions.
This AIOps-focused Docker suite contains ten MCP servers enabling AI-driven network operations:
All servers are containerized with flexible deployment profiles, enabling AIOps workflows through natural language queries, automated troubleshooting, and intelligent network analytics via AI assistants.
Network administrators and DevOps teams face significant challenges in managing modern hybrid network infrastructure across cloud and on-premises environments. This solution addresses these challenges by providing:
| Scenario | Description | Servers Used | Benefits |
|---|---|---|---|
| Network Troubleshooting | NOC engineer investigating connectivity issues (as shown in demo) | Catalyst Center + IOS-XE + ThousandEyes | Cross-platform correlation with performance monitoring |
| AI-Driven Troubleshooting | AI assistant diagnosing interface drops or syslog errors | NetBox + Prometheus + ClickHouse | Automated correlation of topology, metrics, and logs |
| Performance Analysis | Network analyst monitoring application performance | ThousandEyes + Catalyst Center | End-to-end performance visibility |
| Infrastructure Documentation | SysAdmin updating network documentation | NetBox + Catalyst Center | Automated documentation synchronization |
| Compliance Reporting | IT Manager generating audit reports | All servers | Consolidated reporting across infrastructure |
| Device Configuration | Network engineer deploying configurations | Catalyst Center + IOS-XE | Standardized configuration management |
| CI/CD Dry-Run | AI assistant updating config and triggering Ansible dry-run | GitLab + NetBox + IOS-XE | Safe config preview before deployment |
For comprehensive use case scenarios and implementation details, see:
This MCP suite integrates with netops-stack - an observability and orchestration platform for network automation featuring:
Use the netops-stack profile to start MCP servers optimized for netops-stack integration:
./deploy.sh start netops-stack # Starts MCP Servers for: ClickHouse, GitLab, IOS-XE, NetBox, Prometheus
| MCP Server | netops-stack Component | Purpose |
|---|---|---|
| Prometheus MCP | Prometheus (9090) | Query interface/device metrics |
| ClickHouse MCP | ClickHouse (8123) | Query syslog messages |
| GitLab MCP | GitLab CI/CD | Trigger Ansible dry-runs |
| NetBox MCP | External SoT | Device inventory and topology |
| IOS-XE MCP | Network devices | Direct show command access |
The suite provides direct access to seven containerized MCP servers, perfect for development, testing, and AI-powered network operations:
┌─────────────────┐ ┌──────────────────────────────────┐
│ │ │ Docker Host │
│ MCP Client │ │ │
│ │ │ ┌─────────────────────────────┐ │
│ • Cursor IDE │────┼─▶│ Meraki MCP :8000 │ │
│ • LibreChat │ │ ├─────────────────────────────┤ │
│ • Claude Desktop│────┼─▶│ NetBox MCP :8001 │ │
│ • Other MCP │ │ ├─────────────────────────────┤ │
│ Clients │────┼─▶│ Catalyst Center :8002 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ IOS XE MCP :8003 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ThousandEyes MCP :8004 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ISE MCP :8005 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ Splunk MCP :8006 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ Prometheus MCP :8007 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ClickHouse MCP :8008 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ GitLab MCP :8009 │ │
│ │ │ └─────────────────────────────┘ │
└─────────────────┘ └──────────────────────────────────┘
Direct HTTP Connections
✅ Simple setup - no authentication required
✅ Individual server access and configuration
✅ Flexible port-based deployment
✅ Perfect for development and testing
# 1. Clone repository
git clone https://github.com/pamosima/network-mcp-docker-suite.git
cd network-mcp-docker-suite
# 2. Configure environment variables (single .env file for all servers)
cp .env.example .env # Copy the environment template
nano .env # Edit and configure:
# - Set ENABLE_*_MCP=false for servers you don't want to use
# - Add API keys and credentials for enabled servers
# See .env.example for detailed configuration instructions
# 3. Deploy servers
./deploy.sh start all # All servers
# OR
./deploy.sh start cisco # Just Cisco platforms
# OR
./deploy.sh start meraki # Just Meraki
# 4. Verify deployment
curl http://localhost:8000/mcp # Test Meraki server
curl http://localhost:8002/mcp # Test Catalyst Center server
💡 Quick Tip: All servers now use a single centralized
.envfile for configuration. UseENABLE_*_MCP=falseto disable servers you don't need, and only add credentials for enabled servers.
🌐 LibreChat Integration: To use with LibreChat on an external network, see the External Network Integration section below.
Control which MCP servers run using environment variables in your .env file:
# Enable/Disable individual servers (edit .env)
ENABLE_MERAKI_MCP=true # Set to false to disable
ENABLE_NETBOX_MCP=true # Set to false to disable
ENABLE_CATC_MCP=true # Set to false to disable
ENABLE_IOS_XE_MCP=false # Disabled - won't start
ENABLE_THOUSANDEYES_MCP=true
ENABLE_ISE_MCP=true
ENABLE_SPLUNK_MCP=false # Disabled - won't start
ENABLE_PROMETHEUS_MCP=true # netops-stack metrics
ENABLE_CLICKHOUSE_MCP=true # netops-stack syslog
ENABLE_GITLAB_MCP=true # CI/CD orchestration
Best Practices:
ENABLE_*_MCP=false for servers you don't use| Profile | Description | Servers Deployed | Use Case |
|---|---|---|---|
all |
Deploy all servers | All 10 servers (8000-8009) | Complete infrastructure visibility |
cisco |
Cisco-focused platforms | Meraki + Catalyst Center + ThousandEyes + ISE + IOS XE | Cisco-centric environments |
monitoring |
Network monitoring | Meraki + Catalyst Center + ThousandEyes + Splunk | Operations teams |
observability |
netops-stack metrics/logs | Prometheus + ClickHouse + NetBox | AI-driven troubleshooting |
netops-stack |
Full netops-stack integration | ClickHouse + GitLab + IOS-XE + NetBox + Prometheus | Complete AI orchestration |
orchestration |
CI/CD automation | GitLab + NetBox + IOS XE | Network automation workflows |
security |
Security-focused | Catalyst Center + ISE | Security operations |
management |
Traditional management | Meraki + Catalyst Center | Network management |
docs |
Documentation-focused | NetBox + Catalyst Center | Infrastructure documentation |
# Flexible deployment using profiles
./deploy.sh start all # Complete suite
./deploy.sh start cisco # Cisco platforms only
./deploy.sh start monitoring # Monitoring focus
./deploy.sh start security # Security focus
# Individual servers
./deploy.sh start meraki # Cloud management
./deploy.sh start catc # Enterprise management
./deploy.sh start ios-xe # Direct device access
# Management operations
./deploy.sh status all # Check status
./deploy.sh logs cisco # View logs
./deploy.sh stop all # Stop services
To integrate with LibreChat or other services on an external Docker network:
# 1. Create the external network
docker network create mcp-server
# 2. Copy and use the override configuration
cp docker-compose.override.yml.example docker-compose.override.yml
# 3. Deploy (automatically uses override file)
./deploy.sh start all
The docker-compose.override.yml configures all MCP servers to join the external mcp-server network, allowing seamless communication with LibreChat and other services on the same network.
Here's a real-world example of how to interact with the MCP servers using natural language:
User Prompt:
Check why wlsn-access-1.dna.its-best.ch is unreachable from Cisco Catalyst Center.
AI Assistant Response: The AI assistant automatically uses both MCP servers working together:
Resolution Identified:
| Scenario | Example Prompt | Servers Used |
|---|---|---|
| Device Configuration | "Configure VLAN 100 on all access switches in Building A" | Catalyst Center + IOS XE |
| Performance Analysis | "Show me network latency for our main website over the last 6 hours" | ThousandEyes |
| Security Compliance | "Show me all non-compliant devices and their authorization profiles" | ISE + Catalyst Center |
| Infrastructure Audit | "Generate a report of devices that don't match between NetBox and reality" | NetBox + Catalyst Center |
| Capacity Planning | "Show me bandwidth utilization trends across all sites" | Meraki + Catalyst Center |
| Server | Port | Endpoint | Purpose |
|---|---|---|---|
| Meraki | 8000 | http://localhost:8000/mcp |
Cloud network management |
| NetBox | 8001 | http://localhost:8001/mcp |
DCIM/IPAM documentation |
| Catalyst Center | 8002 | http://localhost:8002/mcp |
Enterprise management |
| IOS XE | 8003 | http://localhost:8003/mcp |
Direct device access |
| ThousandEyes | 8004 | http://localhost:8004/mcp |
Performance monitoring |
| ISE | 8005 | http://localhost:8005/mcp |
Identity & access control |
| Splunk | 8006 | http://localhost:8006/mcp |
Log analysis |
| Prometheus | 8007 | http://localhost:8007/mcp |
Metrics queries (netops-stack) |
| ClickHouse | 8008 | http://localhost:8008/mcp |
Syslog queries (netops-stack) |
| GitLab | 8009 | http://localhost:8009/mcp |
CI/CD & repository management |
Create or update ~/.cursor/mcp.json:
{
"mcpServers": {
"Meraki-MCP-Server": {
"transport": "http",
"url": "http://localhost:8000/mcp",
"timeout": 60000
},
"NetBox-MCP-Server": {
"transport": "http",
"url": "http://localhost:8001/mcp",
"timeout": 60000
},
"Catalyst-Center-MCP-Server": {
"transport": "http",
"url": "http://localhost:8002/mcp",
"timeout": 60000
},
"IOS-XE-MCP-Server": {
"transport": "http",
"url": "http://localhost:8003/mcp",
"timeout": 60000
},
"ThousandEyes-MCP-Server": {
"transport": "http",
"url": "http://localhost:8004/mcp",
"timeout": 60000
},
"ISE-MCP-Server": {
"transport": "http",
"url": "http://localhost:8005/mcp",
"timeout": 60000
},
"Splunk-MCP-Server": {
"transport": "http",
"url": "http://localhost:8006/mcp",
"timeout": 60000
},
"Prometheus-MCP-Server": {
"transport": "http",
"url": "http://localhost:8007/mcp",
"timeout": 60000
},
"ClickHouse-MCP-Server": {
"transport": "http",
"url": "http://localhost:8008/mcp",
"timeout": 60000
},
"GitLab-MCP-Server": {
"transport": "http",
"url": "http://localhost:8009/mcp",
"timeout": 60000
}
}
}
Add to your librechat.yaml:
mcpServers:
Meraki-MCP-Server:
type: streamable-http
url: http://meraki-mcp-server:8000/mcp
timeout: 60000
Netbox-MCP-Server:
type: streamable-http
url: http://netbox-mcp-server:8001/mcp
timeout: 60000
CatC-MCP-Server:
type: streamable-http
url: http://catc-mcp-server:8002/mcp
timeout: 60000
IOS-XE-MCP-Server:
type: streamable-http
url: http://ios-xe-mcp-server:8003/mcp
timeout: 60000
ThousandEyes-MCP-Server:
type: streamable-http
url: http://thousandeyes-mcp-server:8004/mcp
timeout: 60000
ISE-MCP-Server:
type: streamable-http
url: http://ise-mcp-server:8005/mcp
timeout: 60000
Splunk-MCP-Server:
type: streamable-http
url: http://splunk-mcp-server:8006/mcp
timeout: 60000
Prometheus-MCP-Server:
type: streamable-http
url: http://prometheus-mcp-server:8007/mcp
timeout: 60000
ClickHouse-MCP-Server:
type: streamable-http
url: http://clickhouse-mcp-server:8008/mcp
timeout: 60000
GitLab-MCP-Server:
type: streamable-http
url: http://gitlab-mcp-server:8009/mcp
timeout: 60000
# Deploy services
./deploy.sh start all # All servers
./deploy.sh start cisco # Cisco platforms
./deploy.sh start monitoring # Monitoring focused
# Check status
./deploy.sh status all # All services
docker-compose ps # Docker status
# View logs
./deploy.sh logs all # All services
./deploy.sh logs meraki # Specific server
# Stop services
./deploy.sh stop all # All services
docker-compose down # Docker stop
# Update and rebuild
git pull # Get updates
docker-compose up -d --build # Rebuild and restart
# Test all servers are responding
curl http://localhost:8000/mcp # Meraki
curl http://localhost:8001/mcp # NetBox
curl http://localhost:8002/mcp # Catalyst Center
curl http://localhost:8003/mcp # IOS XE
curl http://localhost:8004/mcp # ThousandEyes
curl http://localhost:8005/mcp # ISE
curl http://localhost:8006/mcp # Splunk
curl http://localhost:8007/mcp # Prometheus
curl http://localhost:8008/mcp # ClickHouse
curl http://localhost:8009/mcp # GitLab
no-new-privileges)For production deployments, consider:
Servers not responding:
# Check if containers are running
./deploy.sh status all
# Check logs for errors
./deploy.sh logs all
# Restart problematic services
./deploy.sh restart <profile>
MCP clients can't connect:
# Verify endpoints are accessible
curl http://localhost:8000/mcp
# Check network connectivity
docker network ls
docker network inspect <network_name>
# Restart MCP client (Cursor, LibreChat, etc.)
Configuration issues:
.env file for correct credentials# Check all services
./deploy.sh status all
# Monitor resource usage
docker stats
# View recent logs
./deploy.sh logs all | tail -100
# Pull latest changes
git pull
# Rebuild and restart
docker-compose up -d --build
# Clean up old images
docker system prune -f
Contributions are welcome! Please read our Contributing Guidelines for details on our code of conduct and the process for submitting pull requests.
git checkout -b feature/amazing-feature)docker-compose up -d --buildgit commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the Cisco Sample Code License, Version 1.1 - see the LICENSE file for details.
Special thanks to:
kiskander for the original Meraki MCP Server implementation that inspired the Meraki component of this comprehensive multi-server suite.
tspuhler for the IOS XE MCP Server implementation, providing direct SSH-based device management capabilities for Cisco IOS XE devices.
Aditya Chellam and Kiran Kabdal for the ThousandEyes MCP Community server implementation. The ThousandEyes MCP Server in this suite is based on their comprehensive ThousandEyes v7 API integration.
automateyournetwork (John Capobianco) and RobertBergman for the ISE MCP Server implementation. The ISE MCP Server in this suite is based on their comprehensive ISE ERS API integration for network access control and security operations.
This project is part of the Cisco DevNet community and is provided as example code for demonstration and learning purposes. It is not officially supported by Cisco Systems and is not intended for production use without proper testing and customization for your specific environment.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by netdata
Delivers real‑time, per‑second infrastructure monitoring with zero‑configuration agents, on‑edge machine‑learning anomaly detection, and built‑in dashboards.
by Arize-ai
Open-source AI observability platform enabling tracing, evaluation, dataset versioning, experiment tracking, prompt management, and interactive playground for LLM applications.
by msgbyte
Provides integrated website traffic analysis, uptime checking, and server health monitoring in a single self‑hosted platform.
by grafana
Provides programmatic access to a Grafana instance and its surrounding ecosystem through the Model Context Protocol, enabling AI assistants and other clients to query and manipulate dashboards, datasources, alerts, incidents, on‑call schedules, and more.
by dynatrace-oss
Provides a local server that enables real‑time interaction with the Dynatrace observability platform, exposing tools for querying data, retrieving problems, sending Slack notifications, and integrating AI assistance.
by pydantic
Provides tools to retrieve and query OpenTelemetry trace and metric data from Pydantic Logfire, allowing LLMs to analyze distributed traces and run arbitrary SQL queries against telemetry records.
by aliyun
Unifies ACK cluster management, native Kubernetes operations, observability, security audit and diagnostic capabilities into a single AI‑native toolset, allowing natural‑language interaction with AI assistants to perform complex container‑oriented AIOps tasks.
by VictoriaMetrics-Community
Provides a Model Context Protocol server exposing read‑only VictoriaMetrics APIs, enabling seamless monitoring, observability, and automation through AI‑driven assistants.
by GeLi2001
Enables interaction with the Datadog API through a Model Context Protocol server, providing access to monitors, dashboards, metrics, logs, events, and incident data.