Skip to main content
Glama
Sophos Firewall MCP Server

Sophos Firewall MCP Server

by jelmervdm

Sophos Firewall MCP Server (sophos-firewall-mcp)

Docker Image License Python Version TDQS Score

An asynchronous Model Context Protocol (MCP) server for Sophos Firewall (SFOS), enabling AI assistants (such as Antigravity IDE, Claude Desktop, VS Code, and Cursor) to manage, audit, and troubleshoot Sophos Firewall network security infrastructure.


๐ŸŒŸ Key Features

  • Async XML API Integration: Built on httpx.AsyncClient for high-throughput, non-blocking IO with Sophos SFOS XML API endpoints (/webconsole/APIController).

  • 7 Comprehensive Tool Domains (28 Tools):

    • System & Status: System version, serial number, uptime, service operational state, and network interface configurations.

    • Firewall Rules: Security policies listing, creation, status toggling, and rule deletion.

    • Host & Network Objects: IP host definitions, network subnets, IP host groups, and FQDN objects.

    • Services: Custom TCP/UDP service objects, port ranges, and service groups.

    • NAT Rules: SNAT and DNAT port-forwarding rule inspection.

    • User Management: Local user account configuration and live user session monitoring.

    • VPN Management: IPsec site-to-site tunnels and SSL VPN remote access policies.

  • FastMCP Resources: Read-only system state via URIs (sophos://system/info, sophos://interfaces, sophos://services/status).

  • Guided Prompts: Contextual security audits (audit_firewall_rules) and traffic troubleshooting (troubleshoot_connectivity).

  • Semantic Tool Router: FastEmbed text embedding router for intelligent tool selection (USE_ROUTER=true).

  • Tier A+ Quality Score: 100% parameter descriptions, full ToolAnnotations safety metadata, and 100% test coverage.


Related MCP server: OPNsense MCP Server

๐Ÿ† Tool Definition Quality Score (TDQS)

This server is audited against the Tool Definition Quality Score (TDQS) framework to guarantee optimal function calling, type safety, and runtime safety for LLMs.

---------------- SCORECARD METRICS ----------------
Tools Evaluated              : 39
Behavioral Annotations      : 39 / 39 (100.0%)
100% Parameter Descriptions : 39 / 39 (100.0%)
Usage Guidelines (Docstrings): 39 / 39 (100.0%)
Overall TDQS Score           : 5.00 / 5.00
TDQS Quality Tier            : Tier A+
========================================================
  • Behavioral Annotations (ToolAnnotations): 100% of tools specify readOnlyHint, destructiveHint, and idempotentHint metadata.

  • Parameter Descriptions (Annotated[..., Field(...)]): Every parameter includes explicit typing and human-readable descriptions.

  • Usage Guidelines: Standardized docstrings detailing exact trigger conditions ("Use when...").


โš™๏ธ Sophos Firewall API Prerequisites

Before connecting sophos-firewall-mcp to your Sophos Firewall (SFOS) appliance, ensure the XML API is enabled and your client IP is whitelisted:

  1. Log in to Web Admin Console: Open https://<SOPHOS_HOST>:4444 in your browser.

  2. Enable API Access:

    • Navigate to System > Administration > API Access (or API Configuration).

    • Check the API Configuration toggle/checkbox to enable the API service.

  3. Whitelist Client IP Address:

    • Under Allowed IP Addresses, click Add and specify the IP address of the machine or container host running sophos-firewall-mcp.

    • Note: Sophos Firewall rejects API requests from any IP address not explicitly added to this whitelist.

  4. Administrator Account:

    • Ensure the configured user account (SOPHOS_USERNAME) has active administrator privileges.


๐Ÿ”ง Environment Variables

Variable

Description

Default

SOPHOS_HOST

Sophos Firewall IP address or FQDN

172.16.16.16

SOPHOS_PORT

Web Console API port

4444

SOPHOS_USERNAME

API Administrator Username

admin

SOPHOS_PASSWORD

API Administrator Password

(Required)

SOPHOS_API_VERSION

Sophos XML API Version (e.g., 2200.1 for SFOS v22)

2200.1

SOPHOS_VERIFY_SSL

Verify SSL/TLS certificates (set false for self-signed certs)

false

SOPHOS_TIMEOUT

API request timeout in seconds

30.0

USE_ROUTER

Set true to enable FastEmbed semantic tool routing

false


๐Ÿ›  Client Integration

Add the configuration snippet matching your environment to your MCP settings file (e.g. .vscode/mcp.json or mcp_config.json in Antigravity IDE, Claude Desktop, or VS Code).

Option 1: Docker / Podman Drop-in Container Deployment

Podman is fully supported as a rootless drop-in replacement for Docker on Fedora/RHEL/Linux:

{
  "mcpServers": {
    "sophos-firewall": {
      "command": "podman",
      "args": [
        "run",
        "-i",
        "--rm",
        "--pull=newer",
        "-e", "SOPHOS_HOST",
        "-e", "SOPHOS_PORT",
        "-e", "SOPHOS_USERNAME",
        "-e", "SOPHOS_PASSWORD",
        "-e", "SOPHOS_API_VERSION",
        "-e", "SOPHOS_VERIFY_SSL",
        "-e", "USE_ROUTER",
        "ghcr.io/jelmervdm/sophos-firewall-mcp:latest"
      ],
      "env": {
        "SOPHOS_HOST": "172.16.16.16",
        "SOPHOS_PORT": "4444",
        "SOPHOS_USERNAME": "admin",
        "SOPHOS_PASSWORD": "your_secure_password_here",
        "SOPHOS_API_VERSION": "2200.1",
        "SOPHOS_VERIFY_SSL": "false",
        "USE_ROUTER": "false"
      }
    }
  }
}

Tip for Docker vs Podman: Replace "command": "podman" with "command": "docker" if using standard Docker. Ensure -i is retained and never use -t (TTY mode), as TTY mode injects carriage returns (\r\n) that disrupt stdio JSON-RPC protocol parsing.


Option 2: Local Python Execution (without PyPI)

Via uv (Local Workspace Directory):

{
  "mcpServers": {
    "sophos-firewall": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/sophos-firewall-mcp",
        "run",
        "sophos-firewall-mcp-server"
      ],
      "env": {
        "SOPHOS_HOST": "172.16.16.16",
        "SOPHOS_PORT": "4444",
        "SOPHOS_USERNAME": "admin",
        "SOPHOS_PASSWORD": "your_secure_password_here",
        "SOPHOS_VERIFY_SSL": "false"
      }
    }
  }
}

Via python (Editable Install pip install -e .):

{
  "mcpServers": {
    "sophos-firewall": {
      "command": "python",
      "args": ["-m", "sophos_firewall_mcp.server"],
      "env": {
        "SOPHOS_HOST": "172.16.16.16",
        "SOPHOS_PORT": "4444",
        "SOPHOS_USERNAME": "admin",
        "SOPHOS_PASSWORD": "your_secure_password_here",
        "SOPHOS_VERIFY_SSL": "false"
      }
    }
  }
}

Via uvx directly from GitHub Repository:

{
  "mcpServers": {
    "sophos-firewall": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jelmervdm/sophos-firewall-mcp.git",
        "sophos-firewall-mcp-server"
      ],
      "env": {
        "SOPHOS_HOST": "172.16.16.16",
        "SOPHOS_PORT": "4444",
        "SOPHOS_USERNAME": "admin",
        "SOPHOS_PASSWORD": "your_secure_password_here",
        "SOPHOS_VERIFY_SSL": "false"
      }
    }
  }
}

๐Ÿง  Semantic Tool Routing

When connecting sophos-firewall-mcp to AI models with constrained context windows, set USE_ROUTER=true (or TOOL_ROUTING=true).

When enabled:

  1. The server exposes only 2 meta-tools: route_tools and call_routed_tool.

  2. route_tools uses local CPU embeddings (fastembed with BAAI/bge-small-en-v1.5) to search for matching firewall tools in 5-10ms.

  3. call_routed_tool dynamically invokes the matching tool with parameters.

Note on Router Dependencies: Semantic routing requires optional dependencies (fastembed and numpy).

  • Container (Docker/Podman): Included automatically in official images (ghcr.io/jelmervdm/sophos-firewall-mcp:latest).

  • Local Python (pip): Install with extras: pip install -e ".[router]" or pip install "sophos-firewall-mcp-server[router]".

  • uv Workspace: Run uv sync --extra router.

  • uvx directly from Git: Pass --with "fastembed>=0.4.0" --with "numpy>=1.26.0". If USE_ROUTER=true is set without installing fastembed, the server will log a warning and gracefully fall back to standard tool mode instead of failing initialization.


๐Ÿงช Testing & Quality Assurance

Run the comprehensive test suite, linting, mypy type checks, and TDQS audit:

# Evaluate Tool Definition Quality Score (TDQS)
uv run python scripts/check_tdqs.py

# Run pytest unit test suite (39 tests)
uv run pytest -v

# Code style and syntax linting
uv run flake8 src tests scripts

# Static type verification
uv run mypy src

๐Ÿ“„ License

Distributed under the Apache 2.0 License. See LICENSE for details.

Available Tools

41 tools
call_routed_toolB

Dynamically execute a routed tool by name with arguments.

Args: tool_name: Name of the registered tool to call. arguments: Optional dictionary of arguments to pass to the tool function.

Returns: Result of the executed tool function.

Inputs: tool_name (required), arguments.

route_toolsA
Read-only

Find relevant Sophos Firewall tools matching a natural language prompt.

Args: query: Natural language task description or question. top_k: Number of relevant tools to return. Default is 5.

Returns: List of matching tool schema definitions or status string.

Inputs: query (required), top_k. Returns: result

sophos_create_firewall_ruleA

Create a new IPv4 firewall security rule.

Use when defining new network access control policies between zones and host objects.

Args: name: Unique name for the firewall rule. action: Rule policy action ('Accept', 'Drop', or 'Reject'). Default is 'Accept'. source_zones: List of source network zone names (e.g. ['LAN']). destination_zones: List of destination network zone names (e.g. ['WAN']). source_networks: List of source host/network object names (e.g. ['Any']). destination_networks: List of destination host/network object names (e.g. ['Any']). services: List of service object names (e.g. ['HTTP', 'HTTPS']). status: Rule status ('Enable' or 'Disable'). Default is 'Enable'. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), action, client, status, +5 more. Returns: result

sophos_create_fqdn_hostA

Create a new FQDN host object.

Use when defining domain name target objects for firewall or NAT rules.

Args: name: Unique name for the FQDN host object. fqdn: Fully qualified domain name (e.g. 'api.example.com'). client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: fqdn (required), name (required), client. Returns: result

sophos_create_ip_hostA

Create a new IP host object (IP Address, Network, IP Range, or IP List).

Use when registering host IP or network subnet definitions for firewall policies.

Args: name: Unique name for the host object. host_type: Type of host object ('IP', 'Network', 'IPRange', or 'IPList'). Default is 'IP'. ip_address: IP address or starting IP address/subnet. subnet_mask: Subnet mask if host_type is 'Network' (e.g. '255.255.255.0' or '24'). ip_family: IP protocol family ('IPv4' or 'IPv6'). Default is 'IPv4'. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client, host_type, ip_family, +2 more. Returns: result

sophos_create_ip_host_groupA

Create an IP host group containing multiple IP host objects.

Use when bundling multiple IP host objects together for unified security policies.

Args: name: Unique name for the host group. host_list: List of IP host object names to include in the group. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), host_list (required), client. Returns: result

sophos_create_nat_ruleA

Create a Network Address Translation (NAT or DNAT) rule.

Use when defining port forwarding, SNAT masquerading, or DNAT inbound translation rules.

Args: name: Unique name for the NAT rule. status: Rule status ('Enable' or 'Disable'). Default is 'Enable'. original_source: Original source host/network object names. original_destination: Original destination host/network object names. original_service: Original service object names. translated_source: Translated source object ('MASQUERADE', 'Original', etc.). translated_destination: Translated destination host/network object. translated_service: Translated service object name. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client, status, original_source, +5 more. Returns: result

sophos_create_serviceA

Create a custom TCP/UDP service definition.

Use when adding new port or protocol definitions for firewall rules.

Args: name: Unique name for the service definition. protocol: Protocol type ('TCP', 'UDP', 'TCP/UDP', or 'ICMP'). Default is 'TCP'. source_port: Source port range (e.g. '1:65535'). Default is '1:65535'. destination_port: Destination port or port range (e.g. '8080' or '8000:8080'). client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client, protocol, source_port, +1 more. Returns: result

sophos_create_service_groupA

Create a new service group object.

Use when bundling multiple service port definitions into a single named group for security rules.

Args: name: Unique name for the service group. service_list: List of service object names to include in the group. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), service_list (required), client. Returns: result

sophos_create_userA

Create a new local user account on Sophos Firewall.

Use when registering new local user accounts for VPN or portal access.

Args: username: Login username for the account. name: Full display name of the user. password: User login password. group: User group name (e.g. 'Open Group' or 'Administrator'). Default is 'Open Group'. email: Optional user email address. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), password (required), username (required), email, +2 more. Returns: result

sophos_delete_firewall_ruleA
DestructiveIdempotent

Delete a firewall rule by name.

Use when permanently removing an obsolete security policy.

Args: name: Name of the firewall rule to delete. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_fqdn_hostA
DestructiveIdempotent

Delete an FQDN host object by name.

Use when deleting domain-based host objects from Sophos Firewall.

Args: name: Name of the FQDN host object to remove. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_ip_hostA
DestructiveIdempotent

Delete an IP host object by name.

Use when deleting unused IP host objects from the firewall database.

Args: name: Name of the IP host to remove. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_ip_host_groupA
DestructiveIdempotent

Delete an IP host group by name.

Use when deleting an obsolete host group object from Sophos Firewall.

Args: name: Name of the host group to remove. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_nat_ruleA
DestructiveIdempotent

Delete a NAT rule by name.

Use when permanently removing a NAT or port-forwarding policy.

Args: name: Name of the NAT rule to remove. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_serviceA
DestructiveIdempotent

Delete a custom service definition object by name.

Use when deleting obsolete service port definitions from Sophos Firewall.

Args: name: Name of the service object to delete. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_service_groupA
DestructiveIdempotent

Delete a service group object by name.

Use when removing an obsolete service group definition from Sophos Firewall.

Args: name: Name of the service group to remove. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client. Returns: result

sophos_delete_userA
DestructiveIdempotent

Delete a local user account by username.

Use when removing obsolete or revoked user accounts from Sophos Firewall.

Args: username: Username of the account to delete. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: username (required), client. Returns: result

sophos_get_firewall_ruleA
Read-only

Retrieve details for a specific firewall rule by name.

Use when inspecting full policy configuration for a single firewall rule.

Args: name: Name of the firewall rule. client: Optional SophosFirewallClient instance.

Returns: Firewall rule configuration.

Inputs: name (required), client. Returns: result

sophos_get_interface_listA
Read-only

List network interfaces with configuration, IP addresses, network zones, and link state.

Use when inspecting physical or virtual interface configurations, subnets, and link states.

Args: client: Optional SophosFirewallClient instance.

Returns: List or dict of network interface configurations.

Inputs: client. Returns: result

sophos_get_ip_hostA
Read-only

Retrieve configuration details for a specific IP host object.

Use when inspecting target IP address or subnet definition for an object.

Args: name: Name of the IP host object. client: Optional SophosFirewallClient instance.

Returns: IP host configuration.

Inputs: name (required), client. Returns: result

sophos_get_nat_ruleA
Read-only

Retrieve detailed configuration of a specific NAT rule.

Use when auditing original/translated source, destination, and service parameters.

Args: name: Name of the NAT rule. client: Optional SophosFirewallClient instance.

Returns: NAT rule configuration details.

Inputs: name (required), client. Returns: result

sophos_get_serviceA
Read-only

Retrieve details of a specific service definition.

Use when verifying target port ranges or protocol parameters for a service.

Args: name: Name of the service object. client: Optional SophosFirewallClient instance.

Returns: Service definition configuration.

Inputs: name (required), client. Returns: result

sophos_get_service_statusA
Read-only

Retrieve current operational status of system services (DNS, DHCP, IPS, Web Protection, AntiVirus).

Use when monitoring background service health or diagnosing firewall subsystem failures.

Args: client: Optional SophosFirewallClient instance.

Returns: Status details of core firewall services.

Inputs: client. Returns: result

sophos_get_system_infoA
Read-only

Retrieve system information including appliance model, firmware version, serial number, and uptime.

Use when inspecting hardware/firmware details and overall system status.

Args: client: Optional SophosFirewallClient instance.

Returns: System information parameters from Sophos Firewall.

Inputs: client. Returns: result

sophos_get_userA
Read-only

Retrieve details for a specific local user account.

Use when inspecting permissions, email, or profile settings for a user.

Args: username: Username of the user account. client: Optional SophosFirewallClient instance.

Returns: User account details.

Inputs: username (required), client. Returns: result

sophos_list_firewall_rulesA
Read-only

List firewall security rules configured on the appliance.

Use when browsing security policies or searching for rules matching a specific name.

Args: name: Optional firewall rule name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of firewall rule configurations.

Inputs: name, client. Returns: result

sophos_list_fqdn_hostsA
Read-only

List FQDN (Fully Qualified Domain Name) host objects.

Use when inspecting domain-based network host objects.

Args: name: Optional FQDN host name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of FQDN host objects.

Inputs: name, client. Returns: result

sophos_list_ip_host_groupsA
Read-only

List IP host groups configured on Sophos Firewall.

Use when viewing grouped IP host definitions used in rule sets.

Args: name: Optional group name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of IP host groups.

Inputs: name, client. Returns: result

sophos_list_ip_hostsA
Read-only

List IP host objects defined on Sophos Firewall.

Use when browsing IP address, network subnet, or IP range objects.

Args: name: Optional IP host name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of IP host objects.

Inputs: name, client. Returns: result

sophos_list_ipsec_vpnsA
Read-only

List IPsec site-to-site VPN connection configurations and status.

Use when inspecting site-to-site IPsec tunnel states and gateway parameters.

Args: client: Optional SophosFirewallClient instance.

Returns: List or dict of IPsec VPN connections.

Inputs: client. Returns: result

sophos_list_live_usersA
Read-only

List active logged-in user sessions on Sophos Firewall.

Use when monitoring live user logins, active session counts, or connected users.

Args: client: Optional SophosFirewallClient instance.

Returns: List or dict of live user sessions.

Inputs: client. Returns: result

sophos_list_nat_rulesA
Read-only

List NAT and DNAT port-forwarding rules on Sophos Firewall.

Use when reviewing Network Address Translation rules and port forwarding.

Args: name: Optional NAT rule name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of NAT rules.

Inputs: name, client. Returns: result

sophos_list_service_groupsA
Read-only

List service group objects configured on Sophos Firewall.

Use when browsing bundled groups of services used in rule policies.

Args: name: Optional service group name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of service groups.

Inputs: name, client. Returns: result

sophos_list_servicesA
Read-only

List service objects (TCP, UDP, ICMP, IP protocol definitions).

Use when inspecting custom or predefined port and protocol definitions.

Args: name: Optional service name filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of service definitions.

Inputs: name, client. Returns: result

sophos_list_sslvpn_policiesA
Read-only

List SSL VPN remote access policies configured on Sophos Firewall.

Use when viewing user access policies, SSL VPN IP pools, and permitted networks.

Args: client: Optional SophosFirewallClient instance.

Returns: List or dict of SSL VPN remote access policies.

Inputs: client. Returns: result

sophos_list_usersA
Read-only

List local user accounts configured on Sophos Firewall.

Use when browsing local user accounts and group memberships.

Args: username: Optional username filter. client: Optional SophosFirewallClient instance.

Returns: List or dict of user accounts.

Inputs: client, username. Returns: result

sophos_raw_api_requestA
Destructive

Execute a low-level, generic Sophos Firewall XML API operation.

Use when executing custom or low-level SFOS XML API calls for tags or configuration settings not supported by dedicated high-level tools.

Args: operation: API operation type ('Get', 'Set', or 'Remove'). tag: Target Sophos XML entity tag. params: Optional payload dictionary or search filter criteria. client: Optional SophosFirewallClient instance.

Returns: Parsed API response dictionary or object list.

Inputs: tag (required), operation (required), client, params. Returns: result

sophos_update_firewall_ruleA
Idempotent

Update configuration fields on an existing firewall rule.

Use when modifying parameters such as logging, action, zones, host objects, or status on an existing security policy.

Args: name: Name of the firewall rule to update. action: Optional new rule policy action ('Accept', 'Drop', or 'Reject'). source_zones: Optional list of source network zone names. destination_zones: Optional list of destination network zone names. source_networks: Optional list of source host/network object names. destination_networks: Optional list of destination host/network object names. services: Optional list of service object names. log_traffic: Optional logging setting ('Enable' or 'Disable'). status: Optional rule status ('Enable' or 'Disable'). client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), action, client, status, +6 more. Returns: result

sophos_update_firewall_rule_statusA
Idempotent

Enable or disable an existing firewall rule.

Use when toggling a security policy active state without deleting the rule.

Args: name: Name of the firewall rule. status: Desired state ('Enable' or 'Disable'). client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), status (required), client. Returns: result

sophos_update_nat_ruleA
Idempotent

Update fields on an existing NAT rule.

Use when updating status or target translation parameters on an existing NAT or port-forwarding rule.

Args: name: Name of the NAT rule to update. status: Optional new status ('Enable' or 'Disable'). translated_source: Optional new translated source object. translated_destination: Optional new translated destination object. translated_service: Optional new translated service object. client: Optional SophosFirewallClient instance.

Returns: API response status dictionary.

Inputs: name (required), client, status, translated_source, +2 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    TDQS

    A3.9/5.0

    Scored across 41 tools

    Disambiguation5/5

    Each tool addresses a distinct resource and action (e.g., list, get, create, update, delete) with clear separation. Potential overlaps like list vs get firewall rules are resolved by naming and description. No two tools could be easily confused.

    Naming Consistency5/5

    All tools follow a consistent 'sophos_<action>_<resource>' snake_case pattern. The two routing tools deviate slightly but are justified by their different role. Overall, naming is predictable and uniform.

    Tool Count4/5

    41 tools is large but the Sophos Firewall domain covers many resources (firewall rules, hosts, services, NAT, VPN, users, etc.) with full CRUD on most. The count is high but each tool serves a distinct purpose; a few could potentially be consolidated.

    Completeness3/5

    Major resources like firewall rules, NAT, and users have good lifecycle coverage, but IP hosts, FQDN hosts, services, groups, and VPNs lack update operations. This forces agents to delete and recreate for modifications, which is a notable gap.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server implementation for managing OPNsense firewalls. This server allows Claude and other MCP-compatible clients to interact with all features exposed by the OPNsense API.
      1
      AGPL 3.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      A modular MCP server that provides access to over 2,000 OPNsense firewall management methods through 88 specialized tools. It enables AI assistants to securely manage firewall rules, network interfaces, and system diagnostics using a type-safe TypeScript interface.
      147 npm
      93
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      A secure MCP server for managing OPNsense firewalls through AI assistants. Provides 81 tools across system, firewall, network, DNS, DHCP, VPN, HAProxy, services, diagnostics, and security domains.
      81
      395 PyPI
      21
      MIT