MCP Audit Logging: Evidence to Collect and Tests to Run

Read Time: 7 min read Publish Date:

Soraya Zheng portrait

Soraya Zheng

Contributing Writer · Retrieval & Evaluation

On this page
Conceptual audit framework linking client identity, gateway access decisions, tool-server execution and business-system outcomes

To audit MCP tool calls, collect evidence of who requested an action, which control allowed or denied it, and what the destination actually did. Correlate those records across the client, gateway, server and business system. A dashboard showing tool volume and latency can’t answer all four questions.

This guide proposes an evidence worksheet and acceptance tests for platform and security teams. They’re evaluation tools, not a certification checklist or a record captured from a deployed product.

Key Takeaways

  • Separate a gateway’s permission decision from the tool’s execution result.
  • Identify the system that can prove each fact; one gateway may not see the complete outcome.
  • Test missing records, denied calls and timeouts, not just a successful demonstration.
  • Keep credentials and unnecessary payloads out of audit storage.

Disclosure: Jarvis is an open source project built and maintained by ASCENDING Inc. We apply the same evidence requests to Jarvis below.

Start with the question your reviewer needs answered

Pick one workflow, such as checking a support ticket through an approved MCP server. Define its permitted users, data boundary and expected result before choosing log fields.

An access review might need to show that a restricted user couldn’t read a ticket. An incident investigation might need to identify which system disclosed it. Those require different evidence.

Tyk’s MCP audit guide distinguishes runtime activity records from source-code auditing and explains why isolated client and server logs are difficult to reconcile. Neither a code review nor a gateway dashboard substitutes for reconstructing a real request.

Use the MCP governance checklist to assign owners. Then agree on the events, collection coverage and retention requirements with the people who’ll review them. Don’t start by copying every request body into storage.

Map evidence to the system that can prove it

The following is our proposed collection worksheet. It isn’t a standard MCP schema or a promise that every product exposes these fields.

Review questionEvidence to requestWhere to verify it
Who initiated the request?Authenticated subject or workload, client and environmentIdentity validation and client records; not a name supplied in tool arguments
Which capability was requested?Server identity, tool name and reviewed definition referenceRegistry snapshot and invocation record
Why was access permitted?Decision, relevant rule/version and decision timeThe component that actually enforced the policy
Did the server run the tool?Execution start, completion or failure, linked to the requestMCP server instrumentation
What happened to the business record?Destination operation and confirmed resultThe ticketing system, database or other destination
Can we trust the evidence?Collector health, access controls and gaps in coverageLogging pipeline and storage controls

Connect these records with an application correlation identifier, or a documented mapping between identifiers. Don’t assume a JSON-RPC request ID is globally unique across sessions and systems.

Distinguish the initiating person from a service account used downstream. Record a safe credential reference or authentication method, never the credential itself. If the relationship isn’t available, mark it unknown instead of guessing.

The OWASP Logging Cheat Sheet recommends recording useful event context while considering the trustworthiness of each data source. It also warns against collecting secrets and unnecessary sensitive data.

Keep permission, execution and business outcome separate

A gateway can permit a call that the destination later rejects. A timeout can occur after a destination has completed an action. Treating either as a single success or failure loses important evidence.

Here is an illustrative proposed policy-decision event for a test environment. These field names aren’t an MCP or OpenTelemetry standard, and this isn’t Jarvis output.

{
  "event_type": "policy_decision",
  "event_id": "example-event-001",
  "correlation_id": "example-request-001",
  "occurred_at": "2026-10-19T10:00:00Z",
  "environment": "test",
  "actor_reference": "test-reader-a",
  "server_reference": "ticket-test-server",
  "tool_name": "read_test_ticket",
  "decision": "allow",
  "policy_reference": "test-policy-v2",
  "downstream_outcome": "not_observed",
  "payload_capture": "disabled"
}

This event records only the emitter’s policy decision. Its evidentiary value depends on that emitter and the collection controls. A separate correlated server event must establish execution. The destination must establish any business effect.

For a read, that might mean confirming which permitted test record was returned. For a write, it means checking the resulting record, not merely an HTTP success code.

If you collect an approval reference, check that it covers the actual requested operation. An old approval for a different action isn’t enough.

Run an evidence test, not just a successful demo

Use synthetic records and test identities. Agree on expected behavior before running the following proposed tests; these aren’t results from a Jarvis deployment.

ScenarioWhat to observeWhat would leave the result unresolved
Allowed readPermission decision, server execution and expected synthetic recordA gateway success without server or destination evidence
Denied userDenial at the enforcing layer; controlled server receives no execution requestOnly an empty client screen or missing server log
Destination rejectionGateway allows; destination denies; both records remain distinguishableOne combined status hides where denial occurred
Server timeoutRequest and timeout are linked; destination state is checkedRecording “nothing happened” without checking the destination
RetrySeparate attempt identifiers linked to the same workflowDuplicate attempts look like one call or hide repeated effects
Collector interruptionDefined buffering, alerting and recovery behaviorSilent record loss or an untested assumption about blocking

For the denied-user test, instrument the controlled server with an independent request counter. Absence of a log alone doesn’t prove that execution was blocked.

Set logging-failure behavior according to the workflow’s risk and availability requirements. A sensitive action may need to stop; another operation may use bounded buffering with an alert. Document and test the decision.

Product settings matter. Kong’s AI MCP Proxy documentation describes audit logging for allowed and denied tool access with a dedicated logging setting. Verify the deployed version and configuration. That feature doesn’t prove anything about another gateway.

Protect the audit store and measure coverage

Record enough to investigate without creating a second uncontrolled copy of business data. Exclude tokens, passwords and keys. Limit identifiers and payload details to the approved purpose.

Give collection, investigation and administration separate permissions. Check whether a producer or ordinary application administrator can alter historical evidence. Test the configured retention and deletion behavior, including any approved holds.

OWASP’s logging guidance also calls for testing collection failures and protecting records against unauthorized access or modification. Retention periods depend on your requirements; this guide doesn’t prescribe a universal number.

Measure coverage against known test requests. Ten visible records aren’t reassuring if twelve requests reached the server. Record which clients, routes and server versions participate, including any direct path around the gateway.

Payload minimization creates a trade-off: it reduces exposure but can limit reconstruction. Resolve that deliberately with security reviewers instead of switching on unrestricted capture.

What Jarvis documents, and what still needs proof

Jarvis observability documentation separates platform metrics from agent LLM traces. Platform metrics cover registry, authentication and MCP activity. Agent traces cover model/provider, token usage and latency, with content-capture controls.

These signals don’t establish a complete per-call audit record containing caller, policy version and downstream outcome. Collector configuration also determines which backends receive telemetry. Customer-hosted deployment doesn’t mean every configured export stays inside that account.

For a Jarvis MCP Gateway evaluation, request sanitized allowed, denied and failed-call evidence from the proposed deployment. Map it against the worksheet, identify missing instrumentation and agree who supplies it.

Keep the deliverable small: one workflow, a field-coverage table, observed test results and named gaps. Our gateway evaluation guide covers the wider purchase decision. Use the tool-definition review guide to test what happens when an approved capability changes.

References

Product and reference pages checked October 19, 2026. The worksheets are proposed evaluation methods, not claims of completed product testing.

MCP audit evidence questions

How do we audit MCP tool calls for compliance?

Define the evidence your reviewers need, then collect correlated records from the client, gateway, MCP server and downstream system. Test allowed, denied and failed calls, plus logging failures. Verify privacy, access and retention controls separately. This supports an audit; a log format alone doesn't establish compliance.

Are MCP metrics the same as audit logs?

No. Metrics summarize activity such as request counts and latency. Audit records need enough context to reconstruct a specific action and its authorization. Traces can help connect events, but their fields, coverage and sampling must be checked.

Should we log every tool argument and response?

Don't enable full payload capture by default. Keep the metadata needed for the review and exclude credentials and unnecessary sensitive data. If a specific investigation needs payload evidence, use a separately approved, restricted collection process.

Does Jarvis document a complete per-call audit schema?

The current observability documentation describes platform metrics and agent LLM traces. It doesn't establish a complete per-call record containing identity, policy version and downstream outcome. Request sanitized deployment evidence and map any missing fields before relying on that record.

Soraya Zheng portrait

About the author

Soraya Zheng

Contributing Writer · Retrieval & Evaluation

Writes the Enterprise RAG pillar and the retrieval- and evaluation-heavy glossary entries at ASCENDING Inc.