All posts

FFIEC for MCP servers: securing tool access without losing the audit trail

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

Free White Paper

Audit Trail Requirements + SSH Bastion Hosts / Jump Servers: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

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.

Continue reading? Get the full guide.

Audit Trail Requirements + SSH Bastion Hosts / Jump Servers: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Routing those tool connections through hoop.dev attaches the FFIEC controls to each call as a property of access: the tool authenticates as a named identity, access is scoped just-in-time to the task, every session is recorded at the command level outside the server, and inline masking redacts regulated fields before results reach the model. You can see how hoop.dev records each session and how that maps to the access evidence an examination expects.

Picture an MCP server with a "run report" tool against a transaction database. Because the model chooses when to call it, the only proof it ran cleanly is the access record itself. Through hoop.dev the tool connects under a scoped identity, the grant covers the reporting view for the length of the task, the exact query is captured outside the server, and customer identifiers are masked in the output. The non-determinism upstream no longer threatens the record downstream, because the record is a function of the connection, not the model's choices.

The package the examiner reviews

When the exam reaches the MCP server, the records cohere because one path produced them. The per-identity log shows authentication, the scoped grant shows least privilege, and the session recording shows what each tool call actually did. hoop.dev does not hold an FFIEC certification, because FFIEC guidance is something an institution aligns to, not a badge a tool carries. It generates the evidence for FFIEC that your program presents, accruing continuously rather than the week before an exam. To wire the first tool connection, connect a system through hoop.dev, or read the model at hoop.dev.

FAQ

Is hoop.dev FFIEC compliant?

It largely does not matter, because hoop.dev is self-hosted. It runs inside your own infrastructure and never stores your data on a hoop.dev-operated service, so it does not become a separate system the examination has to assess on its own. The institution stays accountable, and hoop.dev generates the access evidence, per-identity authentication, scoped grants, and command-level recordings, that an FFIEC-aligned program presents for the tool calls an MCP server makes.

How do you keep tool calls audit-ready when a model picks them at runtime?

By attaching the controls to the connection rather than the model's plan. Every tool call authenticates as a named identity, runs under a scoped grant, and is recorded outside the server, so the record holds regardless of which tool the model chose or why.

hoop.dev is open source, so you can inspect exactly how tool access is governed and recorded at the hoop.dev repository on GitHub.

Open source

Save the open-source gateway for agent data access

Hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.

Star and save the repo →More posts