Which tool did the model call, against which system, and on whose authority? For an MCP server inside a regulated institution, that is the question an examiner will ask, and it is the question the architecture makes hardest to answer. The server publishes tools, the model picks among them at runtime based on whatever it was prompted with, and each call can read or write regulated data through a database or an internal API. The access pattern is non-deterministic by design, so the one fact FFIEC cares about, a reconstructable record of controlled access, is the fact the server is least built to produce.
FFIEC guidance predates MCP servers, but its access and audit expectations apply to one the moment its tools touch a regulated system. This post is about where the record has to live so that runtime tool calls stay audit-ready.
The FFIEC control problem a non-deterministic caller creates
A human operator follows a runbook you can review. A model deciding tool calls at runtime does not, which means you cannot govern an MCP server by reviewing intent ahead of time. You govern it at the moment of access. FFIEC's expectations point at the same place: unique authentication for the caller, authorization scoped to the function, and monitoring detailed enough to reconstruct what happened. For an MCP tool call, each of those has to attach to the call itself, not to a plan the model was supposed to follow.
Why a log inside the server will not hold
The instinct is to record inside the MCP server or the tool wrapper. That record lives in the same trust boundary as the thing under examination. A steered model, a faulty tool, or a change to the wrapper can skip the write or shade it, and FFIEC-aligned monitoring wants the activity captured where the actor cannot quietly alter it. A self-reported log from the audited component is precisely the evidence an examiner discounts. The authentication, scope, and recording have to sit on the connection between the tool and the data, where the server cannot reach the dial.
Put the record on the data connection
The architectural requirement is that the record live outside the process the MCP server controls. That points to an identity-aware proxy on the connection rather than a logging call inside the tool. hoop.dev is built to that requirement. It is an open-source Layer 7 access gateway that proxies connections to infrastructure such as a Postgres database or an internal HTTP service, and it governs the connection the server's tools use instead of trusting the server to narrate its own behavior.
