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.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues