Using BigFix Platform MCP Server

Configuring the client

The BigFix Platform MCP Server can be used by MCP-compatible AI clients that support remote streamable HTTP MCP servers and custom request headers. GitHub Copilot in Visual Studio Code is one validated client configuration.

For write operations with HITL enabled, the client must also advertise MCP Form Elicitation support. A client that lacks this capability can still use permitted read operations, but HITL-protected write operations are blocked.

Example of mcp.json configuration:
{
  "inputs": [
    {
      "type": "promptString",
      "id": "bigfix-token",
      "description": "BigFix REST API token",
      "password": true
    }
  ],
  "servers": {
    "bigfixMcp": {
      "type": "http",
      "url": "https://<mcp-host>:9494",

      "headers": {
        "Authorization": "Bearer ${input:bigfix-token}",
        "X-Bes-Mcp-Read-Only": "true",
        "X-Bes-Mcp-Disable-Hitl": "false"
      }
    }
  }
}
After adding the configuration:
  1. Start or reload the MCP server entry from Visual Studio Code.
  2. Confirm certificate trust when prompted and ensure the listener certificate is trusted by the environment opening the connection.
  3. Use MCP: List Servers to verify that the server is connected.
  4. Use Copilot Chat in Agent mode so that MCP tools are available to the model.
  5. For Copilot Business or Copilot Enterprise, verify that the organizational policy allows MCP server usage.

Official references:

GitHub Copilot MCP setup

VS Code MCP configuration reference

Currently implemented tools

The following tool families are integrated through the OpenAPI specification and bridge MCP requests to the BigFix Root Server:

  • Action Management
  • Analysis Management
  • Baseline Management
  • Computer Management
  • Fixlet Management
  • Identity and access management, including identity providers, LDAP, Operators, and Roles
  • Query and Session operations
  • Site Management
  • Task Management
The available operations and required parameters are exposed through the MCP tool schemas. Users can ask the connected AI client to describe a tool family, but product documentation should still provide examples for important operational workflows and should not rely exclusively on the model to explain the product.
Note: To be able to call any tool, included the "list tools", you must always include the token of the operator inside the Authorization header. Otherwise, you will be blocked by the MCP server.

Security Guardrails

Read-only mode

Read-only mode is enforced by the MCP Server at execution time. It is not only an instruction in the tool description or a suggestion to the AI model.

The server compares the requested operation with generated tool metadata. Operations classified as create, update, retry, stop, delete, or otherwise write-capable are blocked before any request is dispatched to the Root Server when effective read-only mode is active.

Read-only is evaluated from both the server configuration and the client header:

Server mcp_server.read_only Client X-Bes-Mcp-Read-Only Effective behavior
true Any value or missing Read-only. Write-capable operations are blocked.
false true Read-only. Write-capable operations are blocked.
false missing or invalid Read-only by restrictive default.
false false Write-capable operations may proceed to HITL and Root Server RBAC.

The read-only mode can be enforced either for all tools and operations by correctly setting the parameter "read_only" in the config.yaml, or, you can disable the "read_only" in the config.yaml and writing the tool or list of tools you want to disable inside the parameter read_only_tools: [] separated by a comma.

The tools you can disable are the following:
  • manage_bigfix_action
  • manage_bigfix_analyses
  • manage_bigfix_baselines
  • manage_bigfix_computers
  • manage_bigfix_fixlets
  • manage_bigfix_idp
  • manage_bigfix_ldap
  • manage_bigfix_operators
  • manage_bigfix_query
  • manage_bigfix_roles
  • manage_bigfix_session
  • manage_bigfix_sites
  • manage_bigfix_tasks

Disabling read-only does not bypass Human-in-the-Loop or Root Server RBAC. It only allows a write-capable request to continue to the next security controls.

Human-in-the-Loop mode

The MCP Server implements server-side Human-in-the-Loop enforcement for supported write-capable operations by using MCP Form Elicitation. The server stages the request before execution and asks the user to review and authorize that exact request.
Note: Not all AI clients support MCP Form Elicitation. Therefore, ensure that the AI client that you are using supports this feature.

HITL is an execution-time security control. It does not rely on an AI model remembering to ask for confirmation in the chat, and it does not replace BigFix Root Server authentication or RBAC. After a valid approval, the original caller token is still forwarded and the Root Server makes the final authorization decision.

The protected write flow is as follows:
  1. The MCP Server classifies the requested operation as write-capable.
  2. Read-only policy is applied first. If the operation is blocked, no HITL request is created.
  3. The server stages an exact copy of the tool input and calculates a SHA-256 binding over the tool name, operation, and exact JSON payload bytes.
  4. The approval is bound to the current MCP session and a fingerprint of the caller.
  5. The server creates a pending approval with a five-minute lifetime.
  6. A Form Elicitation request displays the review data and asks the user to select Allow, Deny, or Cancel.
  7. Before execution, the server revalidates the session, caller, payload hash, approval state, expiry, and single-use conditions.
  8. Only a valid Allow decision consumes the approval and executes the staged payload once.
The review message contains a JSON object with the following fields:
{
  "tool": "manage_bigfix_action",
  "operation": "deleteAction",
  "approval_id": "hitl_<generated-id>",
  "payload_sha256": "<sha-256>",
  "exact_staged_request": {
    "operation": "deleteAction",
    "action_id": 1123
  }
}
The SHA-256 value binds the authorization to the exact staged request bytes. Any changed request requires a new approval
Decision handling is as follows:
Decision Meaning Server behavior
Allow Authorize this exact staged request. Validate and consume the approval, then execute the staged payload once.
Deny Explicitly reject the request. Mark the request as denied. Nothing is sent to the Root Server.
Cancel Close the confirmation without authorization. Cancel or deny the approval. Nothing is sent to the Root Server.
Timeout / Invalid response No valid authorization was received. Expire or reject the approval and fail closed

Configuration and runtime header:

Control Value Effect
mcp_server.disable_hitl false Server-side HITL is enabled for eligible write operations.
mcp_server.disable_hitl true Server configuration disables HITL.
X-Bes-Mcp-Disable-Hitl false or omitted The client does not request an HITL bypass.
X-Bes-Mcp-Disable-Hitl true The client requests an HITL bypass. Treat this as a trusted client control.

Effective behavior: HITL remains active only when the server setting does not disable it and the client does not send the disable header as true. BigFix RBAC always remains authoritative.

Client rendering and compatibility:
  • The MCP Server controls the review message, the form question, the field description, the decision enum, and the default decision.
  • The current form uses a string decision with Allow, Deny, and Cancel. Deny is the safe default.
  • The MCP client controls native interface labels such as Submit, Respond, Accept, Decline, or Cancel. The server cannot rename client-native buttons.
  • The decision explanation should appear only once, in the description beneath the form question. The review message should contain only the operation review and staged request details.
  • If the client does not advertise compatible Form Elicitation support, the MCP Server blocks the protected write operation instead of continuing without approval

Audit and troubleshooting:

HITL lifecycle and execution outcomes are written to the MCP audit trail. Relevant events include:
HITL_PENDING HITL_APPROVED
HITL_DENIED HITL_EXPIRED
HITL_EXECUTED HITL_BYPASSED
HITL_BLOCKED HITL_STATE_ERROR

Automatic IP-based lockout mechanism

If a client exceeds the configured number of consecutive failed requests, which is 5, the source IP address is temporarily locked out for 5 minutes. While the lockout is active, further requests from that IP address are rejected immediately by the MCP Server.

After the lockout period expires, the client can attempt a new request. Lockout and related security events are recorded in the MCP Server logs.