Install
$ agentstack add mcp-ponchotitlan-ciscou-2385-radkit-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
✨CISCOU-2385✨Chatting With My Network via Cisco RADKit and FastMCP
Demo code of the CiscoU-2385 session. This is a stand-alone MCP server built with FastMCP that exposes key functionalities of the Cisco RADKit SDK as MCP tools. It is designed to be connected to any MCP client and LLM of your choice, enabling intelligent interaction with network devices through Cisco RADKit.
> ⚠️ Disclaimer: This MCP Server is not an official Cisco product. It was developed for learning purposes as part of Cisco U.
🚀 Overview
This MCP server acts as a lightweight middleware layer between the Cisco RADKit service and an MCP-compatible client. It allows the LLM to inspect and interact with devices onboarded in the RADKit inventory, fetch device attributes, and even execute CLI commands — all through structured MCP tools.
The following diagram shows how this MCP works with your favourite LLM and your Cisco RADKit onboarded network:
> Only CLI operations are supported by this experimental MCP server
🧰 Exposed MCP Tools
| Tool Name | Description | Inputs | Returns | Use Case | |------------|--------------|---------|----------|-----------| | get_device_inventory_names() | Returns a string containing the names of devices onboarded in the Cisco RADKit inventory. | None | str: List of onboarded devices (e.g. {"p0-2e", "p1-2e"}) | Use this first when the user asks about "devices", "network", or "all devices". | | get_device_attributes(target_device: str) | Returns detailed information about a specific device in JSON format. | target_device (str): Target device name. | str: JSON with attributes including name, host, type, configs, SNMP/NETCONF status, capabilities, etc. | Use this when the user asks about a specific device. | | exec_cli_command_in_device(target_device: str, cli_commands: [str]) | Executes a CLI command on a target device and returns the raw text result. | target_device (str): Device name.cli_commands ([str]): CLI command to execute. | str: Raw output of the executed command. | Use this only if info is unavailable in get_device_attributes() or when explicitly asked to “run” or “execute” a command. |
🧩 Requirements
- Python 3.10+
- uv Python package manager
- Active Cisco RADKit service
- At least one remote user onboarded in the Cisco RADKit service
🛠️ Installation
Clone the repository in your deployment environment.
git clone https://github.com/ponchotitlan/ciscou-2385-radkit-mcp
cd ciscou-2385-radkit-mcp
⚙️ Setup
Execute the included assistant script in a terminal:
uv sync
uv run ciscou-radkit-onboarding
The following assistant will be triggered:
╭─────────────────────────────────────────╮
│ 🚀 Cisco RADKit MCP Server Utility Tool │
╰─────────────────────────────────────────╯
? Choose an option: (Use arrow keys)
» 1. 👾 Onboard user to non-interactive Cisco RADKit authentication
2. 📚 Generate .env file for Cisco RADKit MCP server
Exit
👾 1. Non-interactive Cisco RADKit authentication setup
The MCP server makes use of certificate login to avoid asking for Web UI authentication every time a tool is used. For that, the certificates need to be generated in the host. Select the first option and follow the instructions.
╭─────────────────────────────────────────╮
│ 🚀 Cisco RADKit MCP Server Utility Tool │
╰─────────────────────────────────────────╯
? Choose an option: 1. 👾 Onboard user to non-interactive Cisco RADKit authentication
? Enter Cisco RADKit username: ponchotitlan@cisco.com
╭───────────────────────────────────────────────────────────────────╮
│ Starting Cisco RADKit onboarding for user: ponchotitlan@cisco.com │
╰───────────────────────────────────────────────────────────────────╯
A browser window was opened to continue the authentication process. Please follow the instructions there.
Authentication result received.
New private key password: ***********
Confirm: ***********
The private key is a very sensitive piece of information. DO NOT SHARE UNDER ANY CIRCUMSTANCES, and use a very strong passphrase. Please consult the documentation for more details.
:891: UserWarning: The private key is a very sensitive piece of information. DO NOT SHARE UNDER ANY CIRCUMSTANCES, and use a very strong passphrase. Please consult the documentation for more details.
Take note of the password provided, as it will be needed for the 2nd option! Now, select the second option:
📚 2. Generate .env file
Provide the information requested. The password is the one just setup in the first option.
? Choose an option: 2. 📚 Generate .env file for Cisco RADKit MCP server
╭───────────────────────────────────────────────────────────────────────────────╮
│ Warning: Make sure Cisco RADKit certificates for this username already exist. │
│ If not, run the onboarding process first using option 1. │
╰───────────────────────────────────────────────────────────────────────────────╯
? Enter Cisco RADKit username: ponchotitlan@cisco.com
? Enter Cisco RADKit service code: aaaa-bbbb-cccc
? Enter non-interactive authentication password: ***********
╭──────────────────────────────────────╮
│ ✅ .env file generated successfully! │
│ Saved as .env │
╰──────────────────────────────────────╯
The file .env is generated with environment variables that the MCP Server needs. ✅ Your MCP server is ready for use!
To run it, simply use the following command in your terminal:
uv run ciscou-radkit-mcp
You should see the following screen. The URL will change depending on the kind of transport that you setup in your .env file (stdio, http, sse):
2026-01-06 08:43:21,374 - ciscou_radkit_mcp.radkit_mcp_server - INFO - Starting MCP server with sse transport on 0.0.0.0:8000
╭──────────────────────────────────────────────────────────────────────────────╮
│ │
│ ▄▀▀ ▄▀█ █▀▀ ▀█▀ █▀▄▀█ █▀▀ █▀█ │
│ █▀ █▀█ ▄▄█ █ █ ▀ █ █▄▄ █▀▀ │
│ │
│ FastMCP 2.13.1 │
│ │
│ │
│ 🖥 Server name: CiscoURADKitMCP │
│ │
│ 📦 Transport: SSE │
│ 🔗 Server URL: http://0.0.0.0:8000/sse │
│ │
│ 📚 Docs: https://gofastmcp.com │
│ 🚀 Hosting: https://fastmcp.cloud │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
[01/06/26 08:43:21] INFO Starting MCP server 'CiscoURADKitMCP' with transport 'sse' on http://0.0.0.0:8000/sse server.py:2055
INFO: Started server process [55969]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:54860 - "GET /sse HTTP/1.1" 200 OK
⚡️ Usage example: LibreChat app
LibreChat is an open-source app for all your AI conversations, fully customizable and compatible with any AI provider and MCP server, including ours. For this demo, we will use the Docker version of this app for a local deployment.
> You need to have Docker installed in your host environment to run this deployment.
Prerequisites
- Docker and Docker Compose installed
- LibreChat v0.7.0 or later
- CiscoU RADKit MCP Server running in SSE mode (configured in previous steps)
Setup Steps
1. Clone and Setup LibreChat
Clone the LibreChat repository and copy the default environment file:
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat
cp .env.example .env
2. Configure LibreChat for RADKit MCP
Copy the pre-configured files from this repository into your LibreChat directory:
# From the ciscou-2385-radkit-mcp directory
# Replace /path/to/LibreChat with your actual LibreChat local repository path
cp librechat_setup/librechat.yaml /path/to/LibreChat/librechat.yaml
cp librechat_setup/docker-compose.override.yml /path/to/LibreChat/docker-compose.override.yml
> Note: The librechat.yaml file already includes the RADKit MCP server configuration at http://host.docker.internal:8000/sse
3. Start Your MCP Server
In a separate terminal, ensure your RADKit MCP server is running in SSE mode:
# From the ciscou-2385-radkit-mcp directory
# Make sure your .env has: MCP_TRANSPORT=sse
uv run ciscou-radkit-mcp
You should see output confirming SSE transport:
🔗 Server URL: http://0.0.0.0:8000/sse
4. Start LibreChat
Now start all containers using Docker Compose:
# From the LibreChat directory
docker compose up -d
5. Connect MCP Server in LibreChat
- Open LibreChat in your browser:
http://localhost:3080/ - Create an account and log in
- Navigate to the left sidebar and click the + button next to Filter MCP servers by name
- The MCP server should already be configured from the
librechat.yamlfile - Verify the connection is active (green indicator)
> Important: The MCP server URL in the configuration is http://host.docker.internal:8000/sse to allow the Docker container to access your host machine's MCP server.
6. Create an agent (optional)
For enforcing additional guardrails and a more defined persona for network automation, you can create a custom agent in the LibreChat UI.
On the main screen, navigate to the right menu and click on Agent Builder > Create New Agent.
In the Instructions box, copy/paste the text of the [AGENT.md](librechat_setup/AGENT.md) file included in this repository.
Finally, scroll down and select the RADKit MCP server which should be available in the options.
You can now use this agent for interactions with your RADKit network.
Usage Examples
Once connected, you can interact with your network devices through natural language.
Example conversations:
User: "Show me all my devices"
User: "What are the details of device p0-2e?"
User: "Check the interface status on p0-2e"
User: "Show me the running config for all devices"
Troubleshooting
MCP server not connecting:
- Verify the MCP server is running:
uv run ciscou-radkit-mcp - Check the server is using SSE transport on port 8000
- Ensure
MCP_TRANSPORT=ssein your.envfile - For Linux users:
host.docker.internalmay not work. Use your host's IP address instead inlibrechat.yaml:
``yaml mcpServers: ciscou-radkit: url: http://192.168.1.XXX:8000/sse # Replace with your host IP ``
- Find your host IP:
```bash # Linux ip addr show | grep "inet " | grep -v 127.0.0.1
# macOS ipconfig getifaddr en0 ```
Agent not appearing:
- Verify the agents directory was created and the file was copied before starting Docker Compose
- Check the container has the volume mounted:
docker exec librechat-api ls -la /app/agents/ - Check LibreChat logs for configuration errors:
docker compose logs api | grep -i agent - If you added the agent after starting containers, restart LibreChat:
docker compose restart api
Volume mount issues:
- Ensure
docker-compose.override.ymlis in the LibreChat root directory - Verify the file has correct YAML syntax (indentation matters!)
- Check Docker Compose reads the override file:
docker compose config | grep -A 5 volumes
Security Considerations
⚠️ Important:
- Never commit your
.envfile with real credentials - Restrict LibreChat access to authorized personnel
- The MCP server includes safety guardrails to prevent destructive operations
- Monitor MCP server logs for suspicious activity
- Use strong passwords for RADKit authentication
Made with ☕️ by Poncho Sandoval - Developer Advocate 🥑 @ DevNet - Cisco Systems 🇵🇹
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ponchotitlan
- Source: ponchotitlan/ciscou-2385-radkit-mcp
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.