Agentic / MCP proxy
Agentic AI introduces a risk class that prompt inspection alone never sees: indirect prompt injection. Nobody types anything malicious — the attacker plants instructions in a wiki page, a document, or an email that the AI agent fetches through a tool. The MCP proxy sits between the agent and its tool servers and inspects both directions.
Wrap a server
lumen-agent mcp wraps any stdio MCP server — the agent client launches the
proxy, and the proxy launches the real server:
lumen-agent mcp --policy mcp-policy.yaml -- python3 tool_server.py
- Tool calls (client → server) are inspected as prompts: arguments carrying secrets can be redacted before they reach a third-party server.
- Tool results (server → client) are inspected as responses — because third-party data entering the model's context is exactly where indirect injection lives. A poisoned result is blocked before the model reads it:
the model receives: Blocked by Lumen policy: rule pr_injection: prompt_injection score 0.98 >= 0.80
See demo 12 for the full round trip against a deliberately malicious server.
Streamable HTTP / SSE
MCP's second transport — streamable HTTP with SSE — is part of the same design: the proxy speaks both, so remote MCP servers get the same inspection as local stdio ones.
Claude Code sessions get a second, complementary guard through the agent's hook collector, which sees the local actions — shell commands, file writes — that no MCP proxy witnesses.