SSR/128T MCP Server
by lotsonlu
README.md
# SSR/128T MCP Server
[](LICENSE)
[](https://www.python.org/)
A Model Context Protocol (MCP) server for the **Juniper SSR/128T Networking Platform**, enabling AI-powered AIOps management through LLM clients like **Claude Desktop** and **VSCode**.
This server provides a bridge between MCP-compatible clients and the SSR Conductor REST API, allowing natural language driven monitoring, visualization, and troubleshooting of your SSR network.
## Features
- š **22 MCP Tools** covering router management, alarms, traffic analysis, routing tables, interfaces, metrics, and audit logs
- š **Automatic Authentication** with token management and auto-refresh
- š **Dual Transport** ā stdio (local) and streamable-http (remote/deployment)
- š³ **Docker Support** ā ready for containerized deployment on any Linux platform
- ā” **Async HTTP** client based on `httpx` for high-performance concurrent requests
- š”ļø **Self-Signed Certificate Support** for lab and testing environments
## Quick Start
### Prerequisites
- Python 3.10+ and pip
- Access to an SSR Conductor (v6.x+)
### Installation
```bash
git clone https://github.com/lotsonlu/ssr-mcp-server.git
cd ssr-mcp-server
pip install -r requirements.txt
```
### Configuration
Set environment variables:
```bash
export SSR_BASE_URL="https://<your-conductor-ip>"
export SSR_USERNAME="admin"
export SSR_PASSWORD="your-password"
```
Or create a `config.json` file (copy from `config-template.json`):
```json
{
"conductor": {
"base_url": "https://172.27.69.57",
"username": "admin",
"password": "your-password",
"timeout": 120,
"verify_ssl": false
}
}
```
### Run with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"ssr-mcp": {
"type": "stdio",
"command": "python3",
"args": ["/path/to/ssr_mcp.py", "-f", "/path/to/config.json", "-t", "stdio"]
}
}
}
```
### Run with VSCode
Add to your `.mcp.json`:
```json
{
"mcpServers": {
"ssr-mcp": {
"command": "python3",
"args": ["/path/to/ssr_mcp.py", "-f", "/path/to/config.json", "-t", "stdio"]
}
}
}
```
### Run Standalone (HTTP mode)
```bash
python ssr_mcp.py -H 0.0.0.0 -p 8080 -t streamable-http
```
### Docker
```bash
docker build -t ssr-mcp-server .
docker run --rm -i \
-e SSR_BASE_URL="https://<conductor-ip>" \
-e SSR_USERNAME="admin" \
-e SSR_PASSWORD="your-password" \
ssr-mcp-server -t stdio
```
## Available Tools
### Router & System (4)
| Tool | Description |
|------|-------------|
| `get_router_list` | List all routers, status, and basic info |
| `get_router_info` | Detailed info for a specific router |
| `get_nodes` | List all nodes for a router |
| `get_system_info` | Conductor system info, version, uptime |
### Alarms & Status (4)
| Tool | Description |
|------|-------------|
| `get_alarms` | All current alarms (with filters) |
| `get_router_alarms` | Router-specific alarms |
| `get_node_alarms` | Node-specific alarms |
| `get_node_status` | Node operational status & process health |
### Traffic & Routing (7)
| Tool | Description |
|------|-------------|
| `get_traffic_flows` | Active flow/session table |
| `get_traffic_fib` | Forwarding Information Base (FIB) |
| `get_traffic_rib` | Routing Information Base (RIB) |
| `get_top_sessions` | Top N sessions by bandwidth |
| `get_top_sources` | Top N traffic sources |
| `get_adjacencies` | Network adjacencies/peers |
| `fib_lookup` | FIB lookup by packet headers |
### Interfaces & Services (3)
| Tool | Description |
|------|-------------|
| `get_device_interfaces` | Physical device interfaces |
| `get_network_interfaces` | Logical/L3 network interfaces |
| `get_services` | Configured services & service classes |
### Metrics & Analytics (3)
| Tool | Description |
|------|-------------|
| `get_router_metrics` | Timeseries performance metrics |
| `get_analytics` | Aggregated analytics queries |
| `get_audit_logs` | Historical audit & configuration logs |
### Version (1)
| Tool | Description |
|------|-------------|
| `get_software_version` | SSR software version per node |
## Architecture
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Claude Desktop / VSCode / Other MCP Clients ā
āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā stdio / streamable-http
āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā SSR MCP Server (ssr_mcp_server) ā
ā āāā server.py MCP Server & Tool Defs ā
ā āāā ssr_client.py REST API Client ā
ā āāā tools/ 22 Tool Handlers ā
ā āāā utils/ Config Management ā
āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā REST API (HTTPS)
āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā SSR Conductor ā
ā /router, /alarm, /traffic, /stats, etc. ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
## Project Structure
```
ssr-mcp-server/
āāā ssr_mcp.py # CLI entry point
āāā ssr_mcp_server/ # Core package
ā āāā server.py # MCP server & 22 tool definitions
ā āāā ssr_client.py # REST API client (auth, HTTP, retry)
ā āāā tools/ # Tool handler modules
ā ā āāā router_tools.py # Router & system tools
ā ā āāā alarm_tools.py # Alarm & status tools
ā ā āāā traffic_tools.py # Traffic & routing tools
ā ā āāā interface_tools.py # Interface & service tools
ā ā āāā metrics_tools.py # Metrics & analytics tools
ā ā āāā audit_tools.py # Audit & version tools
ā āāā utils/
ā āāā config.py # Configuration management
āāā pyproject.toml # Project metadata & dependencies
āāā requirements.txt # Pip dependencies
āāā Dockerfile # Docker build
āāā Makefile # Dev/build helpers
āāā config-template.json # Configuration template
āāā LICENSE
```
## Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `SSR_BASE_URL` | `https://127.0.0.1` | SSR Conductor URL |
| `SSR_USERNAME` | `admin` | API username |
| `SSR_PASSWORD` | ā | API password (required) |
| `SSR_TIMEOUT` | `120` | API timeout in seconds |
| `SSR_VERIFY_SSL` | `false` | Enable SSL verification |
## Development
```bash
# Install dependencies
pip install -r requirements.txt
# Run with stdio transport
python ssr_mcp.py -t stdio
# Run tests
python -m pytest tests/
# Build Docker image
docker build -t ssr-mcp-server .
```
## License
[Apache License 2.0](LICENSE)
## Acknowledgments
This project is inspired by and follows patterns from the official Juniper [Junos MCP Server](https://github.com/Juniper/junos-mcp-server).
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues