mullvad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MULLVAD_CLI_PATH | No | Override path to the mullvad binary | Auto-detected |
| MULLVAD_CLI_TIMEOUT | No | CLI command timeout in seconds | 10 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connectA | Connect to Mullvad VPN. Optionally set the relay location before connecting. If no location parameters are provided, connects using the currently configured relay. Args: country: Two-letter country code (e.g. "se", "us"). city: Three-letter city code (e.g. "got", "nyc"). hostname: Specific server hostname (e.g. "se-got-wg-004"). Returns: Current VPN status after the connect attempt, including connection state, relay hostname, country, city, and IP addresses. |
| disconnectA | Disconnect from Mullvad VPN. Idempotent — returns current status even if already disconnected. Returns: Current VPN status after the disconnect attempt. |
| reconnectA | Reconnect to Mullvad VPN. Disconnects and reconnects, optionally to a new relay location. Args: country: Two-letter country code (e.g. "se", "us"). city: Three-letter city code (e.g. "got", "nyc"). hostname: Specific server hostname (e.g. "se-got-wg-004"). Returns: Current VPN status after the reconnect attempt. |
| get_statusA | Get current Mullvad VPN connection status. Returns: Dict with connection state, relay details, protocol, IP addresses, country, city, and whether traffic is locked down. |
| check_leakA | Check if your connection is protected by Mullvad VPN. Queries am.i.mullvad.net to verify whether traffic exits through a Mullvad server. Use this to confirm the VPN is working correctly. Returns: Dict with your visible IP, country, city, whether traffic exits through a Mullvad server, the exit hostname, and a leak_detected boolean (True means traffic is NOT going through Mullvad). |
| list_countriesA | List all available Mullvad VPN countries with server counts. Returns:
Dict with a |
| list_citiesA | List available cities for a given country. Args: country: Two-letter country code (e.g. "se", "us", "de"). Returns:
Dict with a |
| list_serversA | List available Mullvad VPN servers with optional filters. Args:
country: Filter by two-letter country code (e.g. "se").
city: Filter by three-letter city code (e.g. "got").
Requires Returns:
Dict with a |
| set_locationA | Set preferred VPN connection location. Args: country: Two-letter country code (e.g. "se") or "any" for automatic. city: Three-letter city code (e.g. "got"). hostname: Specific server hostname (e.g. "se-got-wg-004"). Returns: Current relay constraints after the change. |
| get_account_infoA | Get Mullvad account information. Returns: Dict with masked account number (last 4 digits visible), expiry date, and device name. |
| get_device_infoA | Get information about devices registered to the Mullvad account. Returns:
Dict with a |
| get_settingsA | Get all current Mullvad VPN settings as a structured object. Returns:
Dict with keys: |
| set_killswitchA | Enable or disable the kill switch (lockdown mode). When enabled, all network traffic is blocked unless the VPN is connected. Args: enabled: True to enable, False to disable. Returns:
Dict with |
| set_daitaA | Enable or disable DAITA (Defence Against AI-guided Traffic Analysis). DAITA adds padding to WireGuard traffic to defeat traffic analysis. Args: enabled: True to enable, False to disable. Returns: Current tunnel settings after the change. |
| set_multihopB | Enable or disable multihop (chained VPN connections). When enabled, traffic is routed through an entry server before reaching the exit server, adding an extra layer of privacy. Args: enabled: True to enable, False to disable. entry_country: Two-letter country code for the entry server. entry_city: Three-letter city code for the entry server. Returns: Current relay constraints after the change. |
| set_dnsA | Configure DNS settings. Args: mode: "default" for Mullvad DNS (with optional blocking), or "custom" to use your own DNS servers. servers: List of DNS server IPs when mode is "custom". block_ads: Block ad domains (default DNS mode only). block_trackers: Block tracker domains (default DNS mode only). block_malware: Block malware domains (default DNS mode only). block_adult_content: Block adult content domains (default DNS mode only). block_gambling: Block gambling domains (default DNS mode only). block_social_media: Block social media domains (default DNS mode only). Returns: Current DNS settings after the change. |
| set_protocolA | Configure WireGuard tunnel protocol options. Note: Mullvad CLI 2026.1 is WireGuard-only. This tool configures WireGuard-specific options like quantum resistance and IPv6. Args: quantum_resistant: Enable quantum-resistant key exchange ("on" or "off"). ipv6: Enable IPv6 in the tunnel ("on" or "off"). Returns: Current tunnel settings after the change. |
| set_obfuscationA | Set anti-censorship / obfuscation mode. Controls how Mullvad disguises VPN traffic to bypass censorship. Args: mode: One of "auto", "off", "wireguard-port", "udp2tcp", "shadowsocks", "quic", or "lwo". Returns: Current anti-censorship settings after the change. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oresam-xyz/mullvad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server