Juniper Mist Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Juniper Mist Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
⚠️ Juniper now offers an official MCP server for Mist.
>
Juniper has released their own MCP server at https://mcp.ai.juniper.net/mcp/mist with native integration for Claude Desktop.
>
We recommend using the official upstream server instead of this project. See the Juniper Mist MCP documentation for setup instructions.
>
This community project remains available for use cases that require multi-org MSP routing, write tools, or HTTP transport — features not yet covered by the upstream server. However, for standard single-org monitoring and troubleshooting, the official server is the better choice going forward.
MCP server for managing Juniper Mist networks with AI assistants. Monitor, troubleshoot, and configure customer networks through natural language — built for MSPs managing multiple organizations across regions.
Input: Natural language via Claude Desktop (or any MCP client) Output: Device stats, client data, alarms, WLAN configs, inventory, and more
AI Assistant ──▶ MCP Server ──▶ Juniper Mist API
(Claude, etc.) (multi-org (US, EU, GC1, GC2,
routing) APAC regions)pip install juniper-mist-mcppipx install juniper-mist-mcpjuniper-mist-mcp --helpCreate a .env file with your organization credentials:
# US-based org (default region)
MIST_TOKEN_acme_corp=your_token_here
# EU-based org
MIST_TOKEN_euro_client=your_token_here
MIST_REGION_euro_client=api.eu.mist.com
# Government org
MIST_TOKEN_gov_agency=your_token_here
MIST_REGION_gov_agency=api.gc1.mist.comEach org needs a MIST_TOKEN_<ORGNAME> variable. Region is optional — defaults to US (api.mist.com).
#### Supported Regions
| Region | Endpoint |
|---|---|
| US (default) | api.mist.com |
| EU | api.eu.mist.com |
| Government Cloud 1 | api.gc1.mist.com |
| Government Cloud 2 | api.gc2.mist.com |
| Asia Pacific | api.ac2.mist.com |
# Read-only mode (default — 10 tools)
juniper-mist-mcp
# With write tools enabled (14 tools)
juniper-mist-mcp --enable-write-tools# Default port 8000
juniper-mist-mcp --transport=http
# Custom host and port
juniper-mist-mcp --transport=http --host=0.0.0.0 --port=8080
# HTTP + write tools
juniper-mist-mcp --transport=http --port=8080 --enable-write-toolsAdd to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"juniper-mist": {
"command": "juniper-mist-mcp",
"env": {
"MIST_TOKEN_acme_corp": "your_token_here",
"MIST_REGION_acme_corp": "api.mist.com"
}
}
}
}Or if using a .env file alongside the install:
{
"mcpServers": {
"juniper-mist": {
"command": "juniper-mist-mcp",
"args": ["--env-file", "/path/to/your/.env"]
}
}
}In your AI assistant, ask it to list organizations. The mist_list_orgs tool should return your configured orgs:
[
{"name": "acme_corp", "region": "api.mist.com", "has_token": true},
{"name": "euro_client", "region": "api.eu.mist.com", "has_token": true}
]| Tool | What it does |
|---|---|
mist_list_orgs | List configured customer orgs and regions |
mist_get_device_stats | AP, switch, and gateway statistics |
mist_get_sle_summary | Service Level Experience metrics (throughput, latency, coverage) |
mist_get_client_stats | Wireless client connection and bandwidth data |
mist_get_alarms | Infrastructure, security, and Marvis AI alarms |
mist_get_site_events | Config changes, user activities, system alerts |
mist_list_wlans | WLAN/SSID profiles and security settings |
mist_get_rf_templates | Radio frequency templates (channel, power, band) |
mist_get_inventory | Device inventory with type/status/site filters |
mist_get_device_config_cmd | Generated CLI config commands for a device |
--enable-write-tools)| Tool | What it does |
|---|---|
mist_update_wlan | Modify WLAN/SSID configurations |
mist_manage_nac_rules | Create, update, or delete 802.1X NAC rules |
mist_manage_wxlan | Manage WXLAN microsegmentation policies |
mist_manage_security_policies | Create, update, or delete security policies |
Every tool takes an org parameter to route to the right customer org and region.
Four layers prevent accidental network changes:
--enable-write-toolsreadOnlyHint, write tools tagged destructiveHint so the AI asks for confirmation| Flag | Description | Default |
|---|---|---|
--enable-write-tools | Enable 4 write tools for network modification | Disabled |
--transport | Transport protocol: stdio or http | stdio |
--host | Host for HTTP transport | 0.0.0.0 |
--port | Port for HTTP transport | 8000 |
--env-file | Path to .env file | .env |
| Error | Fix |
|---|---|
Configuration file not found: .env | Create a .env file from .env.example |
Organization 'X' is not configured | Check MIST_TOKEN_<ORGNAME> in your .env (case-sensitive) |
Unknown region 'X' | Use a supported region endpoint (see table above) |
Failed to fetch orgs: 401 | Token is invalid or expired — regenerate in Mist portal |
| Write tools not appearing | Start server with --enable-write-tools flag |
git clone https://github.com/vahagn-madatyan/juniper-mist-mcp.git
cd juniper-mist-mcp
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install with dev dependencies
pip install -e ".[dev]"
# Run from source
python -m mist_mcp.server --helppytest tests/ -v
pytest tests/ -v --tb=short
pytest tests/test_config.py -vmist_mcp/
├── __init__.py # Package version
├── __main__.py # Module entry point
├── server.py # MCP server, tool definitions, CLI
├── config.py # .env loader, org routing, region validation
└── session.py # Mist API session managementorg parameter; the server maintains separate authenticated sessions per org--enable-write-tools is passed, using mcp.add_tool() with MCP annotationsReleases are published to PyPI automatically via GitHub Actions when a version tag is pushed:
# Update version in pyproject.toml and mist_mcp/__init__.py
# Commit the version bump
git tag v0.2.0
git push origin v0.2.0The CI pipeline builds the distribution, runs tests, publishes to TestPyPI on every push, and publishes to PyPI on tags matching v*.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.