Skip to content

tmunzer-AIDE/mistconfig-mcp

 
 

Repository files navigation

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.

Mist MCP Server — New Org Automation

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.

Scope and Constraints

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.

Tool Overview

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.

Installation

Requirements:

  • Python 3.10+
  • uv
  • Mist API credentials (API token)

Install dependencies:

make init # Installs project dependencies and extracts the git submodule for mist_openapi

Usage

Run the server (STDIO mode, default):

uv run mistconfig-mcp

Options:

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 file

Usage

Set environment variables directly or via a .env file. Requirements differ by transport mode:

STDIO Mode (default)

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)

HTTP Mode

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.

Example: Claude Desktop / VS Code MCP Client

STDIO Mode

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"
            }
        }
    }
}

HTTP Mode

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.0

Configure 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 the env section 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.

License

MIT License. See LICENSE.

Author

Thomas Munzer (tmunzer@juniper.net) GitHub: @tmunzer

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.8%
  • Other 0.2%