NSO MCP Server
Use the NSO MCP server to expose NSO capabilities to MCP-compatible AI clients.
The Cisco NSO Adaptive MCP Server is an NSO package that bridges the Model Context Protocol (MCP) to Cisco NSO functionality. It allows MCP-compatible AI assistants and clients to securely interact with an NSO deployment through a standard MCP interface while continuing to use NSO authentication, authorization, and policy controls.
The MCP server provides a standard way for MCP-compatible clients to:
Read NSO data through MCP resources
Invoke NSO operations through MCP tools
Use guided workflows exposed as MCP prompts
The server is delivered as an NSO package and exposes an MCP endpoint inside NSO instead of requiring a separate MCP server deployment.
Requirements
The NSO MCP server has the following requirements:
NSO version
6.7 or higher
Java
21 or higher
Protocol
MCP 2025-03-26
Role of the MCP Server
The MCP server acts as a bridge between an MCP-compatible client and an NSO deployment.
In a typical workflow:
A user works through an MCP-compatible AI assistant or client.
The client connects to the NSO MCP endpoint.
NSO authenticates the user by using the authentication mechanisms configured for the deployment.
The MCP server exposes the capabilities that the authenticated user is allowed to access.
The client reads NSO context and invokes supported NSO operations on behalf of that user.
This allows engineers to use natural language or MCP-aware tooling to inspect NSO data and perform supported tasks while NSO remains the source of truth and enforcement point.
The MCP server provides the integration layer, not the AI assistant itself. Customers connect an MCP-compatible client or assistant of their choice to the NSO MCP endpoint.
Architecture
The solution uses a hybrid architecture with an Erlang proxy layer and a Java MCP backend.
At a high level:
NSO exposes the external MCP endpoint over the NSO WebUI HTTP(S) listeners
An Erlang proxy layer handles authentication-related request processing and forwards requests internally
A Java
ApplicationComponentimplements the MCP server logicThe Java backend discovers tools, resources, resource templates, and prompts from the live NSO schema and package content
Requests are executed with the authenticated NSO user context
The Java backend is not directly exposed to external clients
Endpoint and Transport
The NSO MCP server exposes MCP by using Streamable HTTP at the NSO /mcp endpoint.
Clients connect to:
http://<nso-host>:<http-port>/mcphttps://<nso-host>:<https-port>/mcp
The server accepts MCP requests over HTTP POST. Other HTTP methods are not supported. In particular, GET /mcp is not a valid MCP request and returns 405 Method Not Allowed.
Clients that support HTTP-based MCP can connect directly. Clients that support only stdio transport require an external proxy bridge, such as mcp-proxy.
When /ncs-config/webui/match-host-name is true, the HTTP Host header must match the configured WebUI server-name or server-alias. With the default NSO WebUI settings this typically means using localhost rather than 127.0.0.1 for local access unless the WebUI host-name settings have been changed.
Authentication and Authorization
The MCP server relies on existing NSO security mechanisms.
Authentication
The MCP server does not introduce a separate authentication system. Clients authenticate by using the NSO authentication mechanisms configured for the deployment.
The proxy supports the same authentication styles expected for NSO WebUI access, including:
WebUI session cookies
HTTP Basic authentication
X-Auth-TokenorBearertoken authenticationpackage-authentication fallback
If package-authentication is used, note that the MCP endpoint uses the AAA context mcp. Package-authentication scripts that only recognize the rest context must be updated to also accept mcp.
Authorization and User-Based Execution
Access to the MCP endpoint and to exposed capabilities is controlled by NSO authorization mechanisms, including NACM.
Operations requested through the MCP server run with the authenticated user's identity. MCP clients cannot read data or execute operations beyond that user's normal permissions.
The capabilities visible to a client are the effective intersection of:
NSO authentication
NSO authorization and NACM
MCP exposure policy configuration
What the MCP Server Exposes
The MCP server exposes NSO functionality through four MCP constructs:
tools
resources
resource templates
prompts
Tools
Tools represent executable operations that MCP clients can invoke.
Examples include:
service-related operations
device operations such as
sync-from,sync-to,check-sync, andcompare-configNSO actions discovered from schema
read-oriented helper tools for schema, configuration, and operational data
Resources and Resource Templates
Resources represent readable NSO data that MCP clients can fetch.
Resource templates represent parameterized readable data, for example a device-specific or service-specific path.
Examples may include, depending on the NSO deployment and loaded packages:
services
devices
device configuration
device operational data
configuration data at a path
operational data at a path
service schema views
service instance-specific resource templates
Prompts
Prompts are guided workflows exposed to MCP clients.
Examples include workflows for:
service-related tasks
device onboarding
troubleshooting and recovery
repeated change procedures
The MCP server automatically discovers supported tools, resources, resource templates, and prompts from NSO schema and package content.
Prompt visibility does not by itself guarantee that every referenced tool is exposed. Under restrictive MCP policy settings, a prompt may be visible while some of the tools used by that workflow remain hidden.
Supported MCP Methods
The NSO MCP server supports the following MCP methods:
initializetools/listtools/callresources/listresources/templates/listresources/readprompts/listprompts/getpingnotifications/initialized
The endpoint also accepts:
resources/subscriberesources/unsubscribe
but no active resource subscription capability is currently provided.
Configuration
The MCP server is configured through the cisco-nso-mcp YANG module under the mcp-server container.
Key configuration parameters include:
enabled
boolean
true
Enable or disable the MCP server
logging/level
enumeration
info
Log level
policies/default-action
enumeration
restricted
Behavior when no rule matches
policies/rule
list
none
Ordered permit or deny rules by path or namespace
Policy Rules
The policies/rule list defines ordered rules for controlling which MCP tools and resources are exposed.
Each rule can match on:
YANG namespace
schema path
The first matching rule decides whether access is permitted or denied. If no rule matches, policies/default-action controls the outcome.
policies/default-action supports:
permitexpose unmatched capabilities
denydeny unmatched capabilities
restrictedexpose only built-in tools, device-operation tools, and read helpers for schema, config, and operational data
With the default value restricted:
core read and device-operation capabilities remain available
service CRUD tools, many discovered actions, and other non-core tools remain hidden unless explicitly permitted
This is an important behavior difference for first-time users. If a deployment appears to expose only a small set of MCP tools, check the MCP policy configuration before assuming discovery failed.
Example targeted policy configuration:
For broad exposure in a lab environment, default-action permit can be used. In production deployments, targeted permit rules are usually preferred.
Deployment and Setup
The NSO MCP server is delivered as a Cisco-provided NSO package. Deploy and configure it in your NSO environment instead of building a separate MCP server implementation.
The package is:
exposed externally through the NSO
/mcpendpointmanaged through standard NSO package workflows
A typical setup flow is:
Ensure the MCP package is present in the NSO installation or deployment package set.
Place the package in the NSO packages directory if required by your deployment workflow.
Build and load the package.
Restart NSO with the
--with-package-reloadoption.Verify that the package is operational.
Review and adjust
mcp-serverconfiguration as needed.Connect an MCP-compatible client to the
/mcpendpoint by using NSO authentication.
Connecting an MCP Client
After the package is installed and configured, an MCP-compatible client connects to the NSO MCP endpoint at /mcp.
The client authenticates by using the NSO authentication method configured for the deployment. Clients that support HTTP-based MCP can connect directly. Clients that support only stdio transport require a proxy bridge.
Once authenticated, the client can:
list available MCP tools
list available MCP resources
list available MCP resource templates
list available MCP prompts
read permitted NSO data
invoke permitted NSO operations
The capabilities visible to the client depend on NSO authentication, NACM authorization, and MCP exposure policy configuration.
Verifying the Setup
A typical verification flow includes:
Confirm that the MCP package is loaded and operational.
Confirm that the NSO
/mcpendpoint is reachable.Connect an MCP-compatible client with valid NSO credentials.
Verify that the client can list tools, resources, resource templates, and prompts.
Test a permitted read or tool invocation.
Example initialize request:
Example tools/list request:
The package ships with validation script test-mcp.sh, that script can be used as a smoke test after the package is loaded.
Interaction through AI Assistants
The MCP server allows MCP-compatible AI assistants and clients to interact with NSO through a standard interface.
This means that an engineer can use an AI assistant to:
inspect NSO state
discover available operations
carry out supported tasks
use guided workflows for common NSO procedures
The MCP server does not replace NSO review, authentication, authorization, or operational controls. Instead, it provides a structured bridge between AI tooling and the NSO deployment.
Troubleshooting
The following checks are useful when the MCP endpoint does not behave as expected:
400 Bad Request on /mcp
400 Bad Request on /mcpIf the endpoint returns 400 Bad Request, verify the WebUI host-name settings.
When /ncs-config/webui/match-host-name is true, the HTTP Host header must match the configured WebUI server-name or server-alias. For local testing with the default NSO WebUI settings, use localhost rather than 127.0.0.1.
405 Method Not Allowed
405 Method Not AllowedThe MCP endpoint supports HTTP POST. Do not use GET for MCP requests.
Fewer tools are visible than expected
If discovery appears to work but only a small set of tools is visible, check:
the authenticated user's NSO permissions and NACM rules
the MCP exposure policy under
mcp-server/policieswhether
policies/default-actionis stillrestricted
Package-authentication works for RESTCONF but not for MCP
If package-authentication is used, confirm that the authentication script accepts the AAA context mcp in addition to any existing rest handling.
500 Internal Server Error or backend unavailable
500 Internal Server Error or backend unavailableCheck the package logs and the Java VM logs.
Useful log files include:
logs/cisco-nso-mcp-server.logfor the Erlang proxy layerlogs/ncs-java-vm.logfor the Java backend and component lifecycle
On platforms with short Unix-domain socket path limits, such as macOS, very long NSO runtime paths can prevent the internal MCP Unix socket from being created. If the Java backend reports an error such as Unix domain path too long, shorten the NSO runtime path and restart the package or deployment.
Example Client Configuration
After the package is installed and operational, the MCP endpoint is exposed by NSO at:
If the deployment uses the default WebUI host-name settings for local access, use https://localhost:<port>/mcp.
Example VS Code MCP Client Configuration
Visual Studio Code supports remote MCP servers over HTTP. A minimal workspace configuration looks like this:
Adjust the URL, port, and authentication settings to match the NSO deployment and save this in .vscode/mcp.json.
If the deployment requires explicit HTTP authentication headers, configure them according to the NSO authentication method used in that environment.
Last updated
Was this helpful?

