Sophos Firewall MCP Server
This server enables AI assistants to manage, audit, and troubleshoot Sophos Firewall via an asynchronous MCP interface for XML API operations. You can:
System & Status: Retrieve system info (model, firmware, serial, uptime) and service states (DNS, DHCP, IPS, Web Protection, AntiVirus), and list network interfaces.
Firewall Rules: List, create, update, enable/disable, and delete firewall security policies.
Host & Network Objects: Manage IP hosts, networks, IP ranges, IP lists, host groups, and FQDN objects.
Services: Define and manage TCP/UDP/ICMP services and service groups.
NAT Rules: Inspect, create, update, and delete SNAT/DNAT rules, including port forwarding.
User Management: Create and delete local user accounts, and monitor live user sessions.
VPN Management: View IPsec site-to-site tunnels and SSL VPN remote access policies.
Raw API Operations: Execute low-level XML API calls (Get, Set, Remove) for unsupported configurations.
Semantic Tool Routing: Optionally use FastEmbed-based routing to discover and invoke relevant tools via natural language queries.
Guided Prompts: Use built-in prompts for security audits and connectivity troubleshooting.
Resources: Access read-only system state via URIs like
sophos://system/info.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Sophos Firewall MCP Server list firewall rules"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sophos Firewall MCP Server (sophos-firewall-mcp)
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.AsyncClientfor 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
ToolAnnotationssafety 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 specifyreadOnlyHint,destructiveHint, andidempotentHintmetadata.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:
Log in to Web Admin Console: Open
https://<SOPHOS_HOST>:4444in your browser.Enable API Access:
Navigate to System > Administration > API Access (or API Configuration).
Check the API Configuration toggle/checkbox to enable the API service.
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.
Administrator Account:
Ensure the configured user account (
SOPHOS_USERNAME) has active administrator privileges.
๐ง Environment Variables
Variable | Description | Default |
| Sophos Firewall IP address or FQDN |
|
| Web Console API port |
|
| API Administrator Username |
|
| API Administrator Password | (Required) |
| Sophos XML API Version (e.g., |
|
| Verify SSL/TLS certificates (set |
|
| API request timeout in seconds |
|
| Set |
|
๐ 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-iis 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:
The server exposes only 2 meta-tools:
route_toolsandcall_routed_tool.route_toolsuses local CPU embeddings (fastembedwithBAAI/bge-small-en-v1.5) to search for matching firewall tools in 5-10ms.call_routed_tooldynamically invokes the matching tool with parameters.
Note on Router Dependencies: Semantic routing requires optional dependencies (
fastembedandnumpy).
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]"orpip install "sophos-firewall-mcp-server[router]".
uvWorkspace: Runuv sync --extra router.
uvxdirectly from Git: Pass--with "fastembed>=0.4.0" --with "numpy>=1.26.0". IfUSE_ROUTER=trueis set without installingfastembed, 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 toolscall_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_toolsARead-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_ruleADestructiveIdempotent
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_hostADestructiveIdempotent
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_hostADestructiveIdempotent
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_groupADestructiveIdempotent
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_ruleADestructiveIdempotent
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_serviceADestructiveIdempotent
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_groupADestructiveIdempotent
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_userADestructiveIdempotent
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_ruleARead-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_listARead-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_hostARead-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_ruleARead-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_serviceARead-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_statusARead-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_infoARead-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_userARead-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_rulesARead-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_hostsARead-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_groupsARead-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_hostsARead-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_vpnsARead-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_usersARead-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_rulesARead-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_groupsARead-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_servicesARead-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_policiesARead-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_usersARead-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_requestADestructive
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_ruleAIdempotent
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_statusAIdempotent
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_ruleAIdempotent
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
Scored across 41 tools
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.
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.
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.
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
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
Secure and manage MCP servers through the Speakeasy AI Control Plane from your agent.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.1AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA 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 npm93MIT
- AlicenseAqualityDmaintenanceMCP server for managing VyOS routers via the VyOS HTTP API, allowing AI assistants to read config, set interfaces, firewall rules, VPNs, and more.172MIT
- AlicenseAqualityBmaintenanceA 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.81395 PyPI21MIT