Skip to main content

The first MCP server for network equipment — let AI agents talk to Nokia SR OS, Cisco IOS-XR, and Juniper Junos routers

Project description

MCP-Telecom

Let AI agents talk to your network equipment.

The first MCP server for Nokia SR OS, Cisco IOS-XR, Juniper Junos, Arista EOS, and Cisco NX-OS routers.

"Hey Claude, show me the BGP summary on nokia-pe1 and check if any peers are down."

MCP-Telecom bridges the gap between AI assistants and network infrastructure. It implements the Model Context Protocol (MCP) to give AI agents like Claude and GPT secure, read-only access to your network devices via SSH — no custom scripts, no fragile automation, just natural language.


Why MCP-Telecom?

Problem Solution
Network engineers SSH into devices one-by-one AI queries multiple devices in parallel
Vendor CLI syntax differs across Nokia, Cisco, Juniper Unified interface — one tool works across all vendors
Junior engineers struggle with complex troubleshooting AI-guided workflows with built-in troubleshooting prompts
No audit trail for ad-hoc show commands Every command logged with timestamps
Automation scripts break across vendor upgrades Vendor-abstracted command mappings maintained in one place

Features

  • Multi-Vendor Support — Nokia SR OS, Cisco IOS / IOS-XR / NX-OS, Juniper Junos, Arista EOS
  • 40+ Network Tools — BGP, OSPF, MPLS, interfaces, alarms, NTP, ARP, MAC tables, and more
  • Vendor Abstraction — Say bgp_summary and get the right command for any vendor
  • NETCONF/YANG — Structured data retrieval via NETCONF alongside traditional SSH CLI
  • Streaming Telemetry — gNMI-based telemetry subscriptions with in-memory cache
  • Topology Discovery — Auto-build network maps from LLDP/CDP data with path finding
  • Safety First — Only read-only commands allowed; destructive commands are blocked
  • Audit Logging — Every command execution recorded in structured JSONL format
  • Config Backup & Diff — Backup running configs and compare against previous versions
  • Health Checks — Test device reachability with response time measurement
  • MCP Resources — Device inventory, topology, and telemetry as browseable resources
  • Troubleshooting Prompts — Built-in BGP, interface, and health audit workflows
  • Nokia Service Tools — VPRN, VPLS, and SAP inspection for Nokia SR OS
  • PyPI Readypip install mcp-telecom with optional extras for NETCONF and telemetry
  • Docker Support — Run containerized with docker-compose
  • CI/CD — GitHub Actions with multi-Python-version testing and PyPI publishing

Architecture

┌──────────────────────────────────────────────────────────────┐
│                     AI Agent (Claude/GPT)                    │
│                                                              │
│  "Show me BGP neighbors on nokia-pe1 that are down"         │
│  "Discover the network topology"                             │
│  "Subscribe to interface telemetry on cisco-xr1"             │
└──────────────────────┬───────────────────────────────────────┘
                       │  MCP Protocol (stdio)
                       ▼
┌──────────────────────────────────────────────────────────────┐
│                    MCP-Telecom Server                        │
│                                                              │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────┐  │
│  │ 40+ Tools│ │Resources │ │ Prompts  │ │ Safety/Audit   │  │
│  └────┬─────┘ └──────────┘ └──────────┘ └────────────────┘  │
│       │                                                      │
│  ┌────▼──────────────────────────────────────────────────┐   │
│  │            Vendor Command Mappings (35+ ops)          │   │
│  │   Nokia ── Cisco ── Juniper ── Arista ── NX-OS        │   │
│  └────┬──────────┬──────────┬────────────────────────────┘   │
│       │          │          │                                │
│  ┌────▼────┐ ┌───▼────┐ ┌──▼──────────┐ ┌───────────────┐   │
│  │  SSH    │ │NETCONF │ │  Streaming  │ │   Topology    │   │
│  │(Netmiko)│ │(YANG)  │ │  Telemetry  │ │  Discovery    │   │
│  │         │ │ncclient│ │   (gNMI)    │ │  (LLDP/CDP)   │   │
│  └────┬────┘ └───┬────┘ └──┬──────────┘ └───────────────┘   │
│       │          │         │                                 │
└───────┼──────────┼─────────┼─────────────────────────────────┘
        │          │         │
        ▼          ▼         ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Nokia    │ │ Cisco    │ │ Juniper  │ │ Arista   │
│ SR OS    │ │ IOS-XR   │ │ Junos    │ │ EOS      │
└──────────┘ └──────────┘ └──────────┘ └──────────┘

Quick Start

Prerequisites

  • Python 3.10+
  • uv package manager
  • SSH access to your network devices

Installation

# Install from PyPI (when published)
pip install mcp-telecom

# With NETCONF support
pip install mcp-telecom[netconf]

# With streaming telemetry support
pip install mcp-telecom[telemetry]

# With everything
pip install mcp-telecom[all]

# Or from source
git clone https://github.com/Avinash-Amudala/MCP-Telecom.git
cd MCP-Telecom
uv sync       # or: pip install -e .

Configure Your Devices

# Copy the example config and edit with your device details
cp devices.yaml.example devices.yaml

Edit devices.yaml with your actual device credentials:

nokia-pe1:
  device_type: nokia_sros
  host: 192.168.1.1
  username: your_username
  password: "${NOKIA_PASSWORD}"   # replace with real creds
  port: 22

cisco-xr1:
  device_type: cisco_xr
  host: 192.168.2.1
  username: your_username
  password: "${CISCO_PASSWORD}"

juniper-mx1:
  device_type: juniper_junos
  host: 192.168.3.1
  username: your_username
  password: "${JUNIPER_PASSWORD}"

Test with MCP Inspector

npx @modelcontextprotocol/inspector uv run mcp-telecom

Use with Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-telecom": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/MCP-Telecom",
        "mcp-telecom"
      ],
      "env": {
        "MCP_TELECOM_DEVICES_FILE": "/path/to/MCP-Telecom/devices.yaml"
      }
    }
  }
}

Available Tools

Routing & Protocols

Tool Description
show_bgp_summary BGP neighbor summary with peer states
show_bgp_neighbors Detailed BGP neighbor information
show_routing_table Full IP routing table
show_ospf_neighbors OSPF neighbor adjacencies
show_mpls_lsp MPLS Label Switched Paths

Interfaces & Layer 2

Tool Description
show_interfaces Interface status summary
show_interface_detail Detailed per-interface statistics
show_lldp_neighbors LLDP neighbor discovery
show_lag_status LAG/Port-Channel/Bundle status
show_arp_table IP-to-MAC ARP cache
show_mac_table MAC address table

System Monitoring

Tool Description
show_system_info Version, uptime, hardware
show_alarms Active alarms and alerts
show_ntp_status NTP synchronization state
show_cpu CPU utilization
show_memory Memory utilization
show_environment Power, fans, temperature
show_log_events Recent syslog messages

Configuration & Operations

Tool Description
backup_config Backup running config with timestamp
compare_configs Diff live config against a backup
run_command Execute any safe read-only command
run_vendor_operation Run named operation with auto vendor translation
list_devices List all configured devices
list_device_capabilities Show supported operations per device
health_check Test device reachability
get_audit_log View command execution history
show_nokia_services Nokia VPRN/VPLS/SAP services

NETCONF / YANG

Tool Description
netconf_get_config Retrieve config via NETCONF (structured XML)
netconf_get_operational Get operational state via YANG models
netconf_capabilities List device YANG module support

Streaming Telemetry (gNMI)

Tool Description
telemetry_subscribe Start gNMI telemetry subscription
telemetry_query Query latest collected telemetry data
telemetry_history Get time-series telemetry for trend analysis
telemetry_list_subscriptions List active telemetry subscriptions
telemetry_unsubscribe Stop a telemetry subscription
telemetry_list_paths Show available OpenConfig telemetry paths

Topology Discovery

Tool Description
discover_topology Build network map from LLDP/CDP data
show_topology Display ASCII network diagram
show_topology_json Export topology as JSON
show_topology_mermaid Export topology as Mermaid diagram
find_path Shortest path between two devices (BFS)
show_device_neighbors List discovered neighbors for a device

Supported Platforms

Vendor Device Types Netmiko Type
Nokia 7750 SR, 7950 XRS, 7250 IXR nokia_sros
Cisco IOS, IOS-XE cisco_ios
Cisco IOS-XR (NCS, ASR) cisco_xr
Cisco NX-OS (Nexus) cisco_nxos
Juniper MX, QFX, EX, SRX juniper_junos
Arista 7000, 7500 series arista_eos

Safety & Security

MCP-Telecom enforces strict read-only access:

  • Allowed: show, display, ping, traceroute commands
  • Blocked: configure, set, delete, commit, reload, shutdown, write, clear, reset, debug, and 20+ other dangerous patterns
  • Audit Trail: Every command execution is logged with timestamp, device, success/failure, and output length
[2026-04-06T12:00:00Z] OK   nokia-pe1       show router bgp summary
[2026-04-06T12:00:05Z] OK   cisco-xr1       show ip interface brief
[2026-04-06T12:00:10Z] FAIL cisco-xr1       configure terminal  ← BLOCKED

Docker

# Build and run
docker-compose up -d

# Or build manually
docker build -t mcp-telecom .
docker run -v ./devices.yaml:/app/devices.yaml:ro mcp-telecom

Development

# Install dev dependencies
uv sync --all-extras

# Run tests
uv run pytest tests/ -v

# Lint
uv run ruff check src/ tests/

# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run mcp-telecom

Project Structure

MCP-Telecom/
├── src/mcp_telecom/
│   ├── __init__.py          # Package init
│   ├── server.py            # MCP server (40+ tools, resources, prompts)
│   ├── connection.py        # SSH connection manager (Netmiko)
│   ├── models.py            # Pydantic data models
│   ├── safety.py            # Command safety validation
│   ├── audit.py             # Structured JSONL audit logging
│   ├── topology.py          # LLDP/CDP topology discovery & path finding
│   ├── vendors/
│   │   ├── __init__.py
│   │   └── mappings.py      # Vendor-specific command mappings (6 vendors)
│   ├── transports/
│   │   ├── __init__.py
│   │   ├── netconf.py       # NETCONF/YANG transport (ncclient)
│   │   └── telemetry.py     # gNMI streaming telemetry collector
│   └── tools/
│       ├── __init__.py
│       ├── routing.py       # Routing protocol tools
│       ├── interfaces.py    # Interface monitoring tools
│       └── system.py        # System monitoring tools
├── tests/                   # 118 tests
├── examples/                # Usage examples and Claude Desktop config
├── .github/workflows/
│   ├── ci.yml               # CI pipeline (Python 3.10-3.12 + Docker)
│   └── publish.yml          # PyPI publish on GitHub release
├── pyproject.toml           # Project config with optional extras
├── Dockerfile               # Container support
├── docker-compose.yml       # Docker Compose config
├── devices.yaml.example     # Example device config
└── README.md                # This file

Roadmap

  • NETCONF/YANG — Structured data retrieval via NETCONF
  • Streaming telemetry — gNMI-based real-time telemetry collection
  • Topology discovery — Auto-build network maps from LLDP/CDP
  • PyPI publishingpip install mcp-telecom
  • SNMP support — Poll SNMP MIBs alongside SSH
  • Connection pooling — Persistent SSH sessions for faster queries
  • Config compliance — Check configs against golden templates
  • Multi-device queries — Run commands across device groups simultaneously
  • Web dashboard — Real-time device status dashboard
  • Prometheus metrics — Export network metrics for Grafana

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

License

MIT — Avinash Amudala


Built with MCP + Netmiko + FastMCP

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_telecom-0.1.0.tar.gz (126.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_telecom-0.1.0-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file mcp_telecom-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_telecom-0.1.0.tar.gz
  • Upload date:
  • Size: 126.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mcp_telecom-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2428421beb05e546b8361777d5446f0a3aa550d0e8d9b9c7e9fe30c0fc15be4d
MD5 7ce28067502e52e4f2969df7b2846bf8
BLAKE2b-256 5f36fd1a79bdce061029e77c209e4fb963be97aac399249ab5f44ce00a6de466

See more details on using hashes here.

File details

Details for the file mcp_telecom-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_telecom-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mcp_telecom-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 180f6326027f4ca1b56bb41b11288f5a04beebc3c66649a7e918e1f5b397ea07
MD5 748021414f1c56fd6a2cb345d6fee00c
BLAKE2b-256 dc384c9ff7bc10868ef5c6192feec7bbde7ab421e3a36c12065321ac46f9121a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page