Important
This MCP server is purpose-built for automating the initial configuration of a brand-new Mist organization. It is not intended for general-purpose Mist management. A safeguard will be added to enforce this constraint.
It requires a Mist Organization API Token with Super Admin privileges. User tokens and lower-privilege tokens are not supported.
For a general-purpose Mist MCP Server, refer to the Official Mist MCP Server.
MCP Server for automating the initial configuration of a brand-new Mist organization, designed for use with LLM applications like Claude Desktop and VS Code Copilot.
This server is intentionally narrow in scope:
- New organizations only — it is designed to bootstrap a fresh Mist org. A runtime check will block usage against an existing, already-configured organization.
- Super Admin org token only — authentication must use a Mist Organization API Token scoped at the Super Admin level. User tokens are not accepted.
- Write-focused — most read-only tools have been removed to keep the toolset lean. Only the tools needed to inspect state during initial configuration are retained.
- No elicitation — the confirmation/elicitation step for write operations has been removed. The AI will apply configuration changes directly without prompting for approval per-operation. Ensure you trust the workflow before running it.
The server exposes a focused set of tools grouped by workflow.
| Workflow | Tools | What they are used for |
|---|---|---|
| Account and navigation | mist_get_self, mist_get_org_or_site_info, mist_get_next_page, mist_get_constants |
Resolve account details, discover IDs, follow pagination, and look up fixed Mist constants. |
| Device lookup | mist_search_device |
Find devices by name, MAC, IP, serial, model, or other filters. |
| Configuration read | mist_get_configuration_objects, mist_get_configuration_object_schema |
Inspect org or site configuration and discover valid schema fields before applying changes. |
| Configuration changes | mist_change_configuration_objects |
Create, update, and delete supported configuration objects. |
| Events and audit | mist_search_events, mist_search_audit_logs |
Investigate configuration events and audit history during the initial setup workflow. |
Requirements:
- Python 3.10+
- uv
- Mist API credentials (API token)
Install dependencies:
make init # Installs project dependencies and extracts the git submodule for mist_openapiRun the server (STDIO mode, default):
uv run mistconfig-mcpOptions:
uv run mistconfig-mcp [OPTIONS]
OPTIONS:
-t, --transport MODE Transport mode: stdio (default) or http
--host HOST Only when `transport`==`http`, HTTP server host (default: 127.0.0.1)
-p, --port PORT Only when `transport`==`http`, HTTP server port (default: 8000)
-r, --response_format Only when `transport`==`http`, Response format: json (default) or string
-e, --env-file PATH Path to .env file
-d, --debug Enable debug output
-h, --help Show help message
TRANSPORT MODES:
stdio - Standard input/output (for Claude Desktop, VS Code)
http - HTTP server (for remote access)Examples:
uv run mistconfig-mcp # Default: stdio mode
uv run mistconfig-mcp --debug # Enable debug output
uv run mistconfig-mcp --transport http --host 0.0.0.0 # HTTP on all interfaces
uv run mistconfig-mcp --env-file ~/.mist.env # Custom env fileSet environment variables directly or via a .env file. Requirements differ by transport mode:
| Variable | Required | Description |
|---|---|---|
| MIST_APITOKEN | Yes | Mist Organization API Token (Super Admin) |
| MIST_HOST | Yes | Mist API host (e.g. api.mist.com) |
| MIST_ENV_FILE | No | Path to .env file |
| MISTMCP_DEBUG | No | true/false (default: false) |
| Variable | Required | Description |
|---|---|---|
| MISTMCP_TRANSPORT_MODE | Yes | http |
| MISTMCP_HOST | No | HTTP bind address (default: 127.0.0.1) |
| MISTMCP_PORT | No | HTTP port (default: 8000) |
| MISTMCP_DEBUG | No | true/false (default: false) |
Note: In HTTP mode, Mist API credentials are provided by the client (e.g. Claude, VS Code) via HTTP headers or query parameters, not as environment variables.
Best for local usage with Claude Desktop or VS Code.
Configure the client (Claude Desktop, VS Code MCP extension):
{
"mcpServers": {
"mist-mcp": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/mistconfig-mcp",
"run",
"mistconfig-mcp"
],
"env": {
"MIST_APITOKEN": "your-org-superadmin-api-token",
"MIST_HOST": "api.mist.com"
}
}
}
}Since most of the LLM Applications are not supporting the streamable-http transport mode natively, you can use the mcp-remote package to create a remote HTTP server that can be used by these applications.
Start the server:
uv run mistconfig-mcp --transport http --host 0.0.0.0Configure the client (Claude Desktop, VS Code MCP extension):
{
"mcpServers": {
"mist-http": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:8000/mcp?cloud=api.mist.com",
"--header",
"Authorization:Bearer ${MIST_APITOKEN}",
"--transport",
"http-only"
],
"env": {
"MIST_APITOKEN": "your-api-token"
}
}
}
}If your network uses SSL interception, add
"NODE_OPTIONS": "--use-system-ca"to theenvsection to trust the system CA certificates. It is also possible to add"NODE_TLS_REJECT_UNAUTHORIZED": "0"to disable TLS verification, but this is not recommended for production use.
MIT License. See LICENSE.
Thomas Munzer (tmunzer@juniper.net) GitHub: @tmunzer