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.
{
"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"
}
}
}
}- Start or reload the MCP server entry from Visual Studio Code.
- Confirm certificate trust when prompted and ensure the listener certificate is trusted by the environment opening the connection.
- Use MCP: List Servers to verify that the server is connected.
- Use Copilot Chat in Agent mode so that MCP tools are available to the model.
- For Copilot Business or Copilot Enterprise, verify that the organizational policy allows MCP server usage.
Official references:
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
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.
manage_bigfix_actionmanage_bigfix_analysesmanage_bigfix_baselinesmanage_bigfix_computersmanage_bigfix_fixletsmanage_bigfix_idpmanage_bigfix_ldapmanage_bigfix_operatorsmanage_bigfix_querymanage_bigfix_rolesmanage_bigfix_sessionmanage_bigfix_sitesmanage_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
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 MCP Server classifies the requested operation as write-capable.
- Read-only policy is applied first. If the operation is blocked, no HITL request is created.
- 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.
- The approval is bound to the current MCP session and a fingerprint of the caller.
- The server creates a pending approval with a five-minute lifetime.
- A Form Elicitation request displays the review data and asks the user to select Allow, Deny, or Cancel.
- Before execution, the server revalidates the session, caller, payload hash, approval state, expiry, and single-use conditions.
- Only a valid Allow decision consumes the approval and executes the staged payload once.
{
"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 | 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.
- 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_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.