Making a NetAI Playground for Agentic AI Experimentation


Hey there, everybody, and welcome to the newest installment of “Hank shares his AI journey.” 🙂 Synthetic Intelligence (AI) continues to be all the craze, and getting back from Cisco Reside in San Diego, I used to be excited to dive into the world of agentic AI.

With bulletins like Cisco’s personal agentic AI answer, AI Canvas, in addition to discussions with companions and different engineers about this subsequent section of AI potentialities, my curiosity was piquedWhat does this all imply for us community engineers? Furthermore, how can we begin to experiment and study agentic AI?

I started my exploration of the subject of agentic AI, studying and watching a variety of content material to realize a deeper understanding of the topic. I received’t delve into an in depth definition on this weblog, however listed below are the fundamentals of how I give it some thought:

Agentic AI is a imaginative and prescient for a world the place AI doesn’t simply reply questions we ask, however it begins to work extra independently. Pushed by the objectives we set, and using entry to instruments and programs we offer, an agentic AI answer can monitor the present state of the community and take actions to make sure our community operates precisely as supposed.

Sounds fairly darn futuristic, proper? Let’s dive into the technical elements of the way it works—roll up your sleeves, get into the lab, and let’s be taught some new issues.

What are AI “instruments?”

The very first thing I wished to discover and higher perceive was the idea of “instruments” inside this agentic framework. As you might recall, the LLM (massive language mannequin) that powers AI programs is basically an algorithm educated on huge quantities of information. An LLM can “perceive” your questions and directions. On its personal, nonetheless, the LLM is proscribed to the information it was educated on. It could actually’t even search the online for present film showtimes with out some “software” permitting it to carry out an online search.

From the very early days of the GenAI buzz, builders have been constructing and including “instruments” into AI functions. Initially, the creation of those instruments was advert hoc and different relying on the developer, LLM, programming language, and the software’s aim.  However not too long ago, a brand new framework for constructing AI instruments has gotten a whole lot of pleasure and is beginning to turn out to be a brand new “customary” for software growth.

This framework is called the Mannequin Context Protocol (MCP). Initially developed by Anthropic, the corporate behind Claude, any developer to make use of MCP to construct instruments, known as “MCP Servers,” and any AI platform can act as an “MCP Shopper” to make use of these instruments. It’s important to do not forget that we’re nonetheless within the very early days of AI and AgenticAI; nonetheless, at present, MCP seems to be the strategy for software constructing. So I figured I’d dig in and determine how MCP works by constructing my very own very primary NetAI Agent.

I’m removed from the primary networking engineer to need to dive into this area, so I began by studying a few very useful weblog posts by my buddy Kareem Iskander, Head of Technical Advocacy in Be taught with Cisco.

These gave me a jumpstart on the important thing subjects, and Kareem was useful sufficient to offer some instance code for creating an MCP server. I used to be able to discover extra alone.

Creating an area NetAI playground lab

There is no such thing as a scarcity of AI instruments and platforms at the moment. There may be ChatGPT, Claude, Mistral, Gemini, and so many extra. Certainly, I make the most of lots of them recurrently for varied AI duties. Nevertheless, for experimenting with agentic AI and AI instruments, I wished one thing that was 100% native and didn’t depend on a cloud-connected service.

A major motive for this need was that I wished to make sure all of my AI interactions remained totally on my pc and inside my community. I knew I’d be experimenting in a wholly new space of growth. I used to be additionally going to ship knowledge about “my community” to the LLM for processing. And whereas I’ll be utilizing non-production lab programs for all of the testing, I nonetheless didn’t like the concept of leveraging cloud-based AI programs. I’d really feel freer to be taught and make errors if I knew the chance was low. Sure, low… Nothing is totally risk-free.

Fortunately, this wasn’t the primary time I thought of native LLM work, and I had a few attainable choices able to go. The primary is Ollama, a strong open-source engine for operating LLMs domestically, or at the very least by yourself server.  The second is LMStudio, and whereas not itself open supply, it has an open supply basis, and it’s free to make use of for each private and “at work” experimentation with AI fashions. After I learn a current weblog by LMStudio about MCP assist now being included, I made a decision to provide it a attempt for my experimentation.

Creating Mr Packets with LMStudio
Creating Mr Packets with LMStudio

LMStudio is a shopper for operating LLMs, however it isn’t an LLM itself.  It gives entry to numerous LLMs out there for obtain and operating. With so many LLM choices out there, it may be overwhelming while you get began. The important thing issues for this weblog publish and demonstration are that you simply want a mannequin that has been educated for “software use.” Not all fashions are. And moreover, not all “tool-using” fashions really work with instruments. For this demonstration, I’m utilizing the google/gemma-2-9b mannequin. It’s an “open mannequin” constructed utilizing the identical analysis and tooling behind Gemini.

The following factor I wanted for my experimentation was an preliminary thought for a software to construct. After some thought, I made a decision a very good “whats up world” for my new NetAI undertaking could be a manner for AI to ship and course of “present instructions” from a community gadget. I selected pyATS to be my NetDevOps library of alternative for this undertaking. Along with being a library that I’m very aware of, it has the good thing about automated output processing into JSON by way of the library of parsers included in pyATS. I might additionally, inside simply a few minutes, generate a primary Python operate to ship a present command to a community gadget and return the output as a place to begin.

Right here’s that code:

def send_show_command(
    command: str,
    device_name: str,
    username: str,
    password: str,
    ip_address: str,
    ssh_port: int = 22,
    network_os: Non-compulsory[str] = "ios",
) -> Non-compulsory[Dict[str, Any]]:

    # Construction a dictionary for the gadget configuration that may be loaded by PyATS
    device_dict = {
        "units": {
            device_name: {
                "os": network_os,
                "credentials": {
                    "default": {"username": username, "password": password}
                },
                "connections": {
                    "ssh": {"protocol": "ssh", "ip": ip_address, "port": ssh_port}
                },
            }
        }
    }
    testbed = load(device_dict)
    gadget = testbed.units[device_name]

    gadget.join()
    output = gadget.parse(command)
    gadget.disconnect()

    return output

Between Kareem’s weblog posts and the getting-started information for FastMCP 2.0, I discovered it was frighteningly straightforward to transform my operate into an MCP Server/Software. I simply wanted so as to add 5 traces of code.

from fastmcp import FastMCP

mcp = FastMCP("NetAI Whats up World")

@mcp.software()
def send_show_command()
    .
    .


if __name__ == "__main__":
    mcp.run()

Effectively.. it was ALMOST that straightforward. I did need to make a couple of changes to the above fundamentals to get it to run efficiently. You may see the full working copy of the code in my newly created NetAI-Studying undertaking on GitHub.

As for these few changes, the modifications I made had been:

  • A pleasant, detailed docstring for the operate behind the software. MCP shoppers use the small print from the docstring to grasp how and why to make use of the software.
  • After some experimentation, I opted to make use of “http” transport for the MCP server somewhat than the default and extra frequent “STDIO.” The rationale I went this manner was to arrange for the subsequent section of my experimentation, when my pyATS MCP server would seemingly run inside the community lab atmosphere itself, somewhat than on my laptop computer. STDIO requires the MCP Shopper and Server to run on the identical host system.

So I fired up the MCP Server, hoping that there wouldn’t be any errors. (Okay, to be sincere, it took a few iterations in growth to get it working with out errors… however I’m doing this weblog publish “cooking present type,” the place the boring work alongside the way in which is hidden. 😉

python netai-mcp-hello-world.py 

╭─ FastMCP 2.0 ──────────────────────────────────────────────────────────────╮
│                                                                            │
│        _ __ ___ ______           __  __  _____________    ____    ____     │
│       _ __ ___ / ____/___ ______/ /_/  |/  / ____/ __   |___   / __     │
│      _ __ ___ / /_  / __ `/ ___/ __/ /|_/ / /   / /_/ /  ___/ / / / / /    │
│     _ __ ___ / __/ / /_/ (__  ) /_/ /  / / /___/ ____/  /  __/_/ /_/ /     │
│    _ __ ___ /_/    __,_/____/__/_/  /_/____/_/      /_____(_)____/      │
│                                                                            │
│                                                                            │
│                                                                            │
│    🖥️  Server title:     FastMCP                                             │
│    📦 Transport:       Streamable-HTTP                                     │
│    🔗 Server URL:      http://127.0.0.1:8002/mcp/                          │
│                                                                            │
│    📚 Docs:            https://gofastmcp.com                               │
│    🚀 Deploy:          https://fastmcp.cloud                               │
│                                                                            │
│    🏎️  FastMCP model: 2.10.5                                              │
│    🤝 MCP model:     1.11.0                                              │
│                                                                            │
╰────────────────────────────────────────────────────────────────────────────╯


[07/18/25 14:03:53] INFO     Beginning MCP server 'FastMCP' with transport 'http' on http://127.0.0.1:8002/mcp/server.py:1448
INFO:     Began server course of [63417]
INFO:     Ready for utility startup.
INFO:     Software startup full.
INFO:     Uvicorn operating on http://127.0.0.1:8002 (Press CTRL+C to give up)

The following step was to configure LMStudio to behave because the MCP Shopper and connect with the server to have entry to the brand new “send_show_command” software. Whereas not “standardized, “most MCP Shoppers use a really frequent JSON configuration to outline the servers. LMStudio is one in every of these shoppers.

Adding the pyATS MCP server to LMStudio
Including the pyATS MCP server to LMStudio

Wait… should you’re questioning, ‘Wright here’s the community, Hank? What gadget are you sending the ‘present instructions’ to?’ No worries, my inquisitive pal: I created a quite simple Cisco Modeling Labs (CML) topology with a few IOL units configured for direct SSH entry utilizing the PATty function.

NetAI Hello World CML Network
NetAI Whats up World CML Community

Let’s see it in motion!

Okay, I’m positive you’re able to see it in motion.  I do know I positive was as I used to be constructing it.  So let’s do it!

To begin, I instructed the LLM on how to hook up with my community units within the preliminary message.

Telling the LLM about my devices
Telling the LLM about my units

I did this as a result of the pyATS software wants the deal with and credential data for the units.  Sooner or later I’d like to take a look at the MCP servers for various supply of reality choices like NetBox and Vault so it could actually “look them up” as wanted.  However for now, we’ll begin easy.

First query: Let’s ask about software program model data.

Short video of the asking the LLM what version of software is running.

You may see the small print of the software name by diving into the enter/output display screen.

Tool inputs and outputs

That is fairly cool, however what precisely is going on right here? Let’s stroll by way of the steps concerned.

  1. The LLM shopper begins and queries the configured MCP servers to find the instruments out there.
  2. I ship a “immediate” to the LLM to contemplate.
  3. The LLM processes my prompts. It “considers” the totally different instruments out there and in the event that they could be related as a part of constructing a response to the immediate.
  4. The LLM determines that the “send_show_command” software is related to the immediate and builds a correct payload to name the software.
  5. The LLM invokes the software with the right arguments from the immediate.
  6. The MCP server processes the known as request from the LLM and returns the consequence.
  7. The LLM takes the returned outcomes, together with the unique immediate/query as the brand new enter to make use of to generate the response.
  8. The LLM generates and returns a response to the question.

This isn’t all that totally different from what you may do should you had been requested the identical query.

  1. You’ll take into account the query, “What software program model is router01 operating?”
  2. You’d take into consideration the alternative ways you might get the knowledge wanted to reply the query. Your “instruments,” so to talk.
  3. You’d determine on a software and use it to collect the knowledge you wanted. In all probability SSH to the router and run “present model.”
  4. You’d overview the returned output from the command.
  5. You’d then reply to whoever requested you the query with the right reply.

Hopefully, this helps demystify just a little about how these “AI Brokers” work below the hood.

How about yet one more instance? Maybe one thing a bit extra advanced than merely “present model.” Let’s see if the NetAI agent can assist determine which change port the host is linked to by describing the essential course of concerned.

Right here’s the query—sorry, immediate, that I undergo the LLM:

Prompt asking a multi-step question of the LLM.
Immediate asking a multi-step query of the LLM.

What we should always discover about this immediate is that it’ll require the LLM to ship and course of present instructions from two totally different community units. Identical to with the primary instance, I do NOT inform the LLM which command to run. I solely ask for the knowledge I would like. There isn’t a “software” that is aware of the IOS instructions. That data is a part of the LLM’s coaching knowledge.

Let’s see the way it does with this immediate:

The multi-step LLM response.
The LLM efficiently executes the multi-step plan.

And have a look at that, it was in a position to deal with the multi-step process to reply my query.  The LLM even defined what instructions it was going to run, and the way it was going to make use of the output.  And should you scroll again as much as the CML community diagram, you’ll see that it accurately identifies interface Ethernet0/2 because the change port to which the host was linked.

So what’s subsequent, Hank?

Hopefully, you discovered this exploration of agentic AI software creation and experimentation as fascinating as I’ve. And perhaps you’re beginning to see the chances in your personal day by day use. In case you’d prefer to attempt a few of this out by yourself, you’ll find every little thing you want on my netai-learning GitHub undertaking.

  1. The mcp-pyats code for the MCP Server. You’ll discover each the straightforward “whats up world” instance and a extra developed work-in-progress software that I’m including extra options to. Be at liberty to make use of both.
  2. The CML topology I used for this weblog publish. Although any community that’s SSH reachable will work.
  3. The mcp-server-config.json file you can reference for configuring LMStudio
  4. A “System Immediate Library” the place I’ve included the System Prompts for each a primary “Mr. Packets” community assistant and the agentic AI software. These aren’t required for experimenting with NetAI use instances, however System Prompts may be helpful to make sure the outcomes you’re after with LLM.

A few “gotchas” I wished to share that I encountered throughout this studying course of, which I hope may prevent a while:

First, not all LLMs that declare to be “educated for software use” will work with MCP servers and instruments. Or at the very least those I’ve been constructing and testing. Particularly, I struggled with Llama 3.1 and Phi 4. Each appeared to point they had been “software customers,” however they didn’t name my instruments. At first, I believed this was as a result of my code, however as soon as I switched to Gemma 2, they labored instantly. (I additionally examined with Qwen3 and had good outcomes.)

Second, when you add the MCP Server to LMStudio’s “mcp.json” configuration file, LMStudio initiates a connection and maintains an energetic session. Which means that should you cease and restart the MCP server code, the session is damaged, supplying you with an error in LMStudio in your subsequent immediate submission. To repair this subject, you’ll have to both shut and restart LMStudio or edit the “mcp.json” file to delete the server, put it aside, after which re-add it. (There may be a bug filed with LMStudio on this drawback. Hopefully, they’ll repair it in an upcoming launch, however for now, it does make growth a bit annoying.)

As for me, I’ll proceed exploring the idea of NetAI and the way AI brokers and instruments could make our lives as community engineers extra productive. I’ll be again right here with my subsequent weblog as soon as I’ve one thing new and fascinating to share.

Within the meantime, how are you experimenting with agentic AI? Are you excited in regards to the potential? Any options for an LLM that works nicely with community engineering data? Let me know within the feedback under. Speak to you all quickly!

Join Cisco U. | Be a part of the  Cisco Studying Community at the moment at no cost.

Be taught with Cisco

X | Threads | Fb | LinkedIn | Instagram | YouTube

Use  #CiscoU and #CiscoCert to affix the dialog.

Share:



Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles