Junos Server
FreeNot checkedEnables read-only troubleshooting of JUNOS devices by running show commands over NETCONF, with dynamic device discovery from an orchestrator.
About
Enables read-only troubleshooting of JUNOS devices by running show commands over NETCONF, with dynamic device discovery from an orchestrator.
README
Read-only JUNOS troubleshooting MCP server. Discovers devices dynamically from
the SURF orchestrator's gNMI-targets endpoint and runs show commands only
over NETCONF (PyEZ). It has no configuration/write capability by design.
Tools
list_devices()— device names from the orchestrator.run_show_command(device, command)— runs ashowcommand; rejects anything else.
Environment
| Var | Required | Default | Purpose |
|---|---|---|---|
ORCHESTRATOR_URL |
yes¹ | — | orchestrator base URL, e.g. https://api.automation.surf.net |
GNMIC_HTTP_BASIC_USER |
yes¹ | — | Basic Auth user for the targets endpoint |
GNMIC_HTTP_BASIC_PASSWORD |
yes¹ | — | Basic Auth password for the targets endpoint |
JUNOS_SSH_USER |
yes | — | read-only device login user |
JUNOS_SSH_PASSWORD |
yes | — | device login password |
JUNOS_SSH_PORT |
no | 830 |
NETCONF port |
JUNOS_DEV_MODE |
no | 0 |
development mode — serve JUNOS_DEV_TARGETS instead of querying the orchestrator |
JUNOS_DEV_TARGETS |
dev² | [] |
JSON list of node hostnames, e.g. ["r1.lab.net","r2.lab.net"] |
¹ Not required when JUNOS_DEV_MODE is set. ² Required (non-empty) when JUNOS_DEV_MODE is set.
Development mode
Set JUNOS_DEV_MODE=1 and JUNOS_DEV_TARGETS to a JSON list of your own nodes
to bypass the orchestrator entirely — list_devices() then returns exactly that
list and run_show_command connects to those hostnames. SSH credentials are
still required; orchestrator/Basic-Auth vars are not.
JUNOS_DEV_MODE=1 JUNOS_DEV_TARGETS='["r1.lab.net","r2.lab.net"]' \
JUNOS_SSH_USER=ro JUNOS_SSH_PASSWORD=... uvx --from . junos-mcp-server
Run
uvx --from . junos-mcp-server # from a local checkout
uvx --from git+<repo-url> junos-mcp-server # from git
MCP client config (stdio)
{
"mcpServers": {
"junos": {
"command": "uvx",
"args": ["--from", "git+<repo-url>", "junos-mcp-server"],
"env": {
"ORCHESTRATOR_URL": "https://api.automation.surf.net",
"GNMIC_HTTP_BASIC_USER": "gnmic",
"GNMIC_HTTP_BASIC_PASSWORD": "...",
"JUNOS_SSH_USER": "...",
"JUNOS_SSH_PASSWORD": "..."
}
}
}
}
Requires NETCONF enabled on devices (set system services netconf ssh).
Install Junos Server in Claude Desktop, Claude Code & Cursor
unyly install junos-mcp-serverInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add junos-mcp-server -- uvx --from git+https://github.com/workfloworchestrator/junos-mcp-server junos-mcp-serverFAQ
Is Junos Server MCP free?
Yes, Junos Server MCP is free — one-click install via Unyly at no cost.
Does Junos Server need an API key?
No, Junos Server runs without API keys or environment variables.
Is Junos Server hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Junos Server in Claude Desktop, Claude Code or Cursor?
Open Junos Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Junos Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
