LABSCO SUMMARY
Reads and writes on the same connection.
Alongside the read paths this can install and uninstall applications and create flow rules, so the credentials you give it are the ones that change the network. The bundled prompts for diagnostics and QoS are the fastest way in — they frame the question the way ONOS answers it, which matters more here than tool count.
What it is
An MCP server in front of the ONOS controller's REST API. It exposes the network's own state — devices, links, hosts, topology, flow rules and intents — plus analytics and management operations, so an assistant can investigate or reconfigure the network without a console session.
What you get
- Network summary — devices, links, hosts and clusters in one overview, with per-device detail
- Network analytics over performance metrics, traffic patterns and utilization statistics
- System health: memory usage, cluster status and component health
- Application management — install, activate, deactivate and uninstall ONOS applications
- Flow configuration: create and manage flow rules and intents
- Path computation between two network endpoints
- Prompts that come with the server for network diagnostics, intent-based configuration, health reports, QoS configuration and performance tuning
Requirements
A running ONOS controller you can reach, plus Python 3.12 or later and uv. Three environment variables point the server at it: ONOS_API_BASE (default http://localhost:8181/onos/v1), ONOS_USERNAME (default onos) and ONOS_PASSWORD (default rocks). The client config runs it with uv --directory <YOUR_PATH_TO_ONOS_MCP_SERVER>/src/onos_mcp_server run server.py. Package onos-mcp-server at 0.1.0.
Setup effort
Clone and run — clone the repository, then add the configuration for your client; uv runs the script from your clone, with nothing to build
USE CASES
01
Working out why two hosts cannot reach each other
Use the diagnostics prompt to walk topology, links and flow rules in order rather than clicking through the ONOS UI.
02
Producing a network status report
Ask for the summary plus system health and get devices, links, hosts, cluster status and memory in one written answer.
03
Setting up traffic prioritization
Use the QoS prompt to translate a service-level objective into flow rules and intents on the controller.
04
Teaching SDN without a lab console
Let students ask the controller questions in plain language and see the topology and flow state come back as text.
BEFORE YOU INSTALL
What to know first
Requires
- uv on PATH
- Python 3.12 or later
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Clone the repository, then add the configuration for your client; uv runs the script from your clone, with nothing to build.
Server setup
TERMINAL
git clone https://github.com/davidlin2k/onos-mcp-server.gitMCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"onos": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_ONOS_MCP_SERVER>/src/onos_mcp_server",
"run",
"server.py"
],
"env": {
"ONOS_API_BASE": "http://localhost:8181/onos/v1",
"ONOS_USERNAME": "onos",
"ONOS_PASSWORD": "rocks"
}
}
}
}<YOUR_PATH_TO_ONOS_MCP_SERVER> is the full path of the folder git clone created. server.py is in its src/onos_mcp_server folder. The env values are the README's defaults, so change them to your ONOS controller's API address and login.