The gap between "an MCP server that executes tool calls" and "an MCP server that checks tool calls before executing them" is smaller than most teams expect. The vaikora-guard-mcp package closes that gap with about a dozen lines of configuration and no changes to your LLM provider setup.
This article explains the mechanics: what the proxy intercepts, how policy decisions work, and what gets written to the audit log.
The Problem With Tool Calls Running Unchecked
MCP servers route requests from AI agents to tools: file writes, API calls, database queries, shell commands. Every one of those tool calls carries some level of risk. A file-delete call in a development environment is fine. The same call in a production context, triggered by an agent acting on ambiguous instructions, may not be.
Most MCP implementations execute first and let you inspect the result. If the call was destructive or violated a data-handling policy, inspection after the fact does not undo the action. The agent may have already written data to an external endpoint, deleted a record, or sent a message.
The right control point is before execution, not after.
How vaikora-guard-mcp Works
The package sits inline between your AI agent and the tools it calls. Every tool call passes through the proxy. The proxy evaluates the call against a policy you define, then returns one of four decisions: allow, block, modify, or require-approval.
- Allow: the call proceeds unchanged.
- Block: the call is rejected before execution, and the reason is returned to the agent.
- Modify: the proxy rewrites the call (for example, stripping a sensitive parameter) and then allows it.
- Require-approval: the call is held until a human approves or denies it.
The policy evaluation is deterministic. The same input always produces the same decision. There is no probabilistic scoring that produces different results on different runs. If your policy says block any tool call that references a production database outside business hours, it blocks every time.
vaikora-guard-mcp is written in Python, published on PyPI as `vaikora-guard-mcp`, and licensed under MIT. You self-host it. Data443 hosts the commercial control plane (Vaikora) that adds the enterprise management layer, but the proxy itself runs in your environment.
What the Audit Log Captures
Every decision is written to a SHA-256 hash-chained audit log. Each entry is signed into the chain, so any tampering with an earlier record breaks the chain and is detectable.
That means the log is not just a record of what happened. It is a tamper-evident, ordered sequence of decisions that you can present to an auditor or incident investigator and demonstrate has not been modified. For teams operating under SOC 2, HIPAA, GDPR, PCI-DSS, or ISO 27001, that property matters. Vaikora ships compliance presets for all five frameworks, so the policy configuration that maps to each standard is pre-built.
A Concrete Scenario
Your agent has access to a file-write tool and a Slack-message tool. You have a policy that blocks any outbound message containing what looks like a Social Security Number or credit card number.
Without a proxy, the agent composes a Slack message, the MCP server calls the Slack tool, and the message is sent. The log shows the message was sent. The sensitive data has left your environment.
With vaikora-guard-mcp in front of that tool call, the proxy inspects the message content before the Slack tool executes. The content inspection module matches the pattern. The policy decision is block. The call never reaches Slack. The decision, the matched pattern, and the timestamp are written to the audit chain.
The agent receives a rejection and the reason. A human reviewing the audit log later can see exactly what was caught and when.
Latency and Throughput
Adding an inline proxy raises the question of overhead. At P50, enforcement adds 8ms. At P99, it adds 45ms. Throughput is 10,000 or more actions per second. For the vast majority of agent workflows, those numbers are not material. For high-frequency agentic pipelines, they are worth measuring in your specific context.
Getting Started
Install the package with `pip install vaikora-guard-mcp`. The source is on PyPI and the license is MIT, so you can read the code, fork it, and run it wherever your MCP server runs. It supports 12 LLM providers with no SDK migration required, so you are not changing your model integration to add the policy layer.
Once the proxy is running, the next step is defining your policy. Start with the actions that carry the most risk in your environment: writes, deletes, external API calls, and anything that touches production data. Block by default and add allow rules for the specific tool-call patterns you have reviewed and approved. The require-approval decision type is worth using for any action that is hard to reverse.