Mullvad VPN MCP Server
About
Control Mullvad VPN from any MCP-compatible AI client. Connect, disconnect, switch servers, check for leaks, manage kill switch, DAITA, multihop, DNS blocking, and more — all via the local Mullvad CLI.
Details
- Author
- oregansamuel3
- Downloads
- 231
- Categories
- Other, Security
Jump to
- Connect, disconnect, and reconnect with optional location parameters.
- Check current VPN status and verify against am.i.mullvad.net.
- List countries, cities, and servers with filtering.
- Set location, kill switch, DAITA, multihop, DNS, protocol, and obfuscation.
- Retrieve masked account number, expiry, and registered devices.
- No API keys or external configuration needed.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Mullvad VPN MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Ensure Mullvad VPN app is installed with the mullvad CLI in your PATH, Python 3.11+, and the uv package manager. Clone the repository and run uv sync. Tools become available to any MCP-compatible AI client.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mullvad vpn mcp server": {
"mullvad": {
"command": "uv",
"args": [
"--directory",
"/path/to/mullvad-mcp",
"run",
"mullvad-mcp"
]
}
}
}
}
McpServers
{
"mullvad": {
"command": "uv",
"args": [
"--directory",
"/path/to/mullvad-mcp",
"run",
"mullvad-mcp"
]
}
}
mullvad-mcp
Control Mullvad VPN from any MCP-compatible AI client — Claude Desktop, Cursor, Windsurf, and more. All VPN interaction goes through themullvad CLI. No API keys, no config file parsing, no credentials needed.
Prerequisites
- Mullvad VPN app installed with CLI in your PATH - Python 3.11+ - uv package managerInstallation
``bash
git clone https://github.com/oregansamuel3/mullvad-mcp.git
cd mullvad-mcp
uv sync
`
Available Tools
Connection Control
- connect — Connect to VPN, optionally specifying country/city/hostname
- disconnect — Disconnect from VPN
- reconnect — Reconnect, optionally to a new location
Status & Diagnostics
- get_status — Current connection state, server, protocol, IPs
- check_leak — Query am.i.mullvad.net to verify VPN protection
Server Selection
- list_countries — All available countries with server counts
- list_cities — Cities for a given country
- list_servers — Servers with filters (country, city, owned_only)
- set_location — Set preferred location by country, city, or hostname
Account & Settings
- get_account_info — Masked account number, expiry date
- get_device_info — Devices registered to the account
- get_settings — All current settings as a structured object
- set_killswitch — Enable/disable lockdown mode
- set_daita — Enable/disable DAITA (traffic analysis defence)
- set_multihop — Enable/disable multihop with optional entry location
- set_dns — Set DNS: default (with blocking options) or custom IPs
- set_protocol — Configure WireGuard options
- set_obfuscation — Set anti-censorship mode
Example Usage
> "Connect me to Sweden" → connect(country="se")
> "Am I leaking?" → check_leak() — queries am.i.mullvad.net
> "Enable the kill switch and block ads" → set_killswitch(enabled=True) + set_dns(block_ads=True)`Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



