Skip to main content
Glama
sen2diwakar

Cisco Meraki MCP Server

by sen2diwakar
README.md
# Cisco Meraki MCP Server

## Overview

The **Cisco Meraki MCP Server** is a Python-based implementation of the **Model Context Protocol (MCP)** that exposes Cisco Meraki Dashboard API operations as MCP tools.

Instead of calling REST APIs directly, any MCP-compatible client can invoke these tools using a standardized interface.

This project demonstrates how MCP can be used to bridge AI assistants and enterprise networking platforms.

---

## Features

* Cisco Meraki Dashboard API integration
* Model Context Protocol (MCP) Server
* Streamable HTTP transport
* Environment variable support
* Interactive MCP client
* Clean and modular Python code
* Production-ready project structure
* Easy to extend with additional Meraki APIs

---

## Supported Tools

### Health

* Health Check

---

### Networks

* Create Network
* Delete Network
* List Networks
* Get Network Information

---

### Configuration Templates

* Create Template
* List Templates
* Get Template Information
* Bind Template to Network

---

## Project Structure

```text
meraki-mcp/
│
├── app.py                 # MCP Server
├── client.py              # Interactive MCP Client
├── meraki.py              # Cisco Meraki REST API Wrapper
├── config.py              # Configuration & Environment Variables
├── requirements.txt
├── README.md
├── .env
```

---

## Requirements

* Python 3.10 or later
* Cisco Meraki Dashboard Account
* Cisco Meraki API Key

---

## Installation

Clone the repository.

```bash
git clone <repository-url>
```

Move into the project directory.

```bash
cd meraki-mcp
```

Install the required packages.

```bash
pip install -r requirements.txt
```

---

## Environment Variables

Create a `.env` file in the project directory (or copy `.env.example` to `.env`).

Example:

```text
# Cisco Meraki Dashboard API Key
MERAKI_API_KEY=YOUR_MERAKI_API_KEY

# OpenAI API Key
# Required only if using the AI-powered client.
OPENAI_API_KEY=YOUR_OPENAI_API_KEY
```

**Note:**

- `MERAKI_API_KEY` is required to authenticate with the Cisco Meraki Dashboard API.
- `OPENAI_API_KEY` is only required if you are using the AI-powered client that converts natural language into MCP tool calls.

---

## Running the MCP Server

Start the server.

```bash
python app.py
```

If successful, you should see output similar to:

```text
Connected to Cisco Meraki Dashboard
Organization ID : xxxxxxx

Cisco Meraki MCP Server Started
```

---

## Running the Interactive Client

Open another terminal.

Run:

```bash
python client.py
```

Example:

```text
============================================================
Cisco Meraki Natural Language MCP Client
============================================================

Connected Successfully.

You >
```

---

## Supported Natural Language Commands

### Health

```
Health check
Check health
Check server health
Server status
Status
```

---

### Networks

```
Show all networks
List all networks
List networks

Create a network named Delhi Office
Create network Delhi Office

Delete network Delhi Office
Remove network Delhi Office

Show network Delhi Office
Get network Delhi Office
Show information for Delhi Office
```

---

### Templates

```
List templates
Show templates

Create a template named Branch Template
Create template Branch Template

Show template Branch Template
Get template Branch Template

Bind template Branch Template to Delhi Office
Apply template Branch Template to Delhi Office
```

---

### Other Commands

```
Help

Exit
```

---

## Example Session

```text
You > Show all networks

Result
------------------------------------------------------------
[
    {
        "id": "...",
        "name": "Delhi Office"
    }
]

You > Create a network named Mumbai Office

Result
------------------------------------------------------------
Network created successfully.

You > List templates

Result
------------------------------------------------------------
...

You > Exit
```

---

## Current Architecture

```text
+-----------------------------+
| Interactive Client          |
| (client.py)                 |
+-------------+---------------+
              |
              |
              v
+-----------------------------+
| MCP Server                  |
| (app.py)                    |
+-------------+---------------+
              |
              |
              v
+-----------------------------+
| Cisco Meraki REST Wrapper   |
| (meraki.py)                 |
+-------------+---------------+
              |
              |
              v
+-----------------------------+
| Cisco Meraki Dashboard API  |
+-----------------------------+
```

---

## Technology Stack

* Python
* Model Context Protocol (MCP)
* FastMCP
* Cisco Meraki Dashboard API
* Requests
* Python Dotenv
* Uvicorn

---

## Future Enhancements

* VLAN Management
* Switch Port Configuration
* Wireless SSID Management
* Firewall Rules
* Device Inventory
* Client Information
* Organization Administration
* OpenAI Integration for intelligent natural language understanding
* Multi-Organization Support
* Logging
* Unit Testing
* Docker Support
* GitHub Actions CI/CD

---

## Troubleshooting

### Invalid API Key

Ensure the `.env` file contains a valid Cisco Meraki API key.

---

### Network Not Found

Verify that the specified network exists in your Cisco Meraki Dashboard.

---

### Template Not Found

Verify that the template exists before attempting to retrieve or bind it.

---

### Connection Errors

Ensure the MCP server is running before starting the client.

---

## Learning Objectives

This project demonstrates:

* Building an MCP Server from scratch
* Creating custom MCP tools
* Calling enterprise REST APIs
* Environment variable management
* Python project organization
* Interactive MCP client development
* Cisco Meraki Dashboard API automation

---

## Author

**Diwakar Sharma**

Python Developer | Network Automation | AI | Cisco Meraki | MCP | REST APIs

---

## License

This project is provided for educational purposes. Modify and extend it according to your own requirements.