MCP Fusion/Core concepts/Das MVA-Pattern
Das MVA-Pattern
Model View Agent ersetzt MVC für KI-Backends: Die View wird zum Presenter, einer Wahrnehmungsschicht, die genau steuert, was der KI-Agent sieht, weiß und als Nächstes tun kann.
MVA steht für Model View Agent. Es ist ein Architekturmuster für KI-Agenten-Backends, und MCP Fusion ist die Referenzimplementierung für das Model Context Protocol. Die Idee ist klein und tief zugleich: Wenn der Verbraucher Ihrer API ein KI-Agent statt eines Browsers ist, ändert die View-Schicht ihre Bedeutung. Sie rendert kein HTML mehr. Sie formt, was der Agent wahrnimmt.
f.query() · billing.get_invoice// the agent called the tool
billing.get_invoice({ id: 'inv_2026_0417' })
// the handler returns the raw model row
ctx.db.invoices.findUnique({
where: { id: input.id },
});waiting for the tool result…
Raw SDK would giveA raw SDK server would return this row as-is: every column, every internal field, straight into the model context.
Drücken Sie Run und verfolgen Sie einen Tool-Aufruf durch das Muster: rohe Zeile, Presenter, Schwärzung, Regeln, Affordances, ein sauberes Wahrnehmungspaket.
Die drei Buchstaben
| Buchstabe | Name | Verantwortung |
|---|---|---|
| M | Model | Ihre Domänendaten: Rechnungen, Nutzer, Tickets. Einmal mit defineModel() deklariert. |
| V | View (Presenter) | Die Wahrnehmungsschicht: welche Felder existieren, welche Werte geschwärzt werden, welche Regeln der Agent erhält, welche Aktionen er als Nächstes ergreifen darf. |
| A | Agent | Das LLM. Es berührt das Model nie direkt. Es sieht nur, was ein Presenter zu zeigen gewählt hat. |
Drei Fehler, die MVA beseitigt
Kontexthunger. Ein roher JSON-Dump verschwendet Kontextfenster auf Felder, die die Aufgabe nicht braucht. Presenter kürzen jede Antwort auf die Felder, die die Aufgabe braucht, und deckeln das Volumen mit .limit().
Aktionsblindheit. Der Agent hat einen Schritt beendet und rät nun, was als Nächstes zu tun ist, daher halluziniert er einen Tool-Namen. Presenter schließen jede Antwort mit .suggest() ab, einer Liste von Affordances: Der Server sagt dem Agenten, was er als Nächstes tun darf, so wie HATEOAS es für Web-APIs tut.
Wahrnehmungsdrift. Zwei Tools liefern dieselbe Entität in unterschiedlichen Formen, oder Einheiten ändern sich und niemand sagt es dem Modell. Ein Presenter wird einmal pro Entität definiert, also zeigt jedes Tool, das diese Entität liefert, dieselbe geformte Wahrheit, und .rules() tragen die Bedeutung in System-Prompt-Zeilen.
MVC und MVA im Vergleich
| Aspekt | MVC | MVA |
|---|---|---|
| Verbraucher | Browser | KI-Agent |
| View-Schicht | Rendert HTML oder JSON | Formt Wahrnehmung: Felder, Regeln, Affordances |
| Vertrauensgrenze | Der Nutzer sieht die UI | Das Modell darf keine Geheimnisse sehen |
| Navigation | Links zwischen Seiten | .suggest()-Affordances zwischen Aktionen |
| Fehlerbild | Kaputte Seite | Halluzination, geleakte PII, falsche Einheiten |
Woraus ein Presenter besteht
Jedes Teil ist optional und kombinierbar:
.schema(): die Felder, die existieren, mit Beschreibungen, die der Agent liest.redactPII(): Pfade, die vor der Serialisierung entfernt werden, immer.rules(): System-Prompt-Zeilen, die mit jeder Antwort injiziert werden.ui(): gerenderte Blöcke, etwa Tabellen, deren Daten die Schwärzung für Dashboards umgehen.suggest(): nächste Aktionen, die der Agent in Betracht ziehen darf.limit(): ein Deckel für das Antwortvolumen mit selbstheilender Nachricht.embed(): verschachtelte Presenter für verwandte Entitäten
Der Presenter ist eine Sicherheitsgrenze, kein Formatierungshelfer. Die Schwärzung läuft nach dem Rendern der UI-Blöcke und vor der Serialisierung, sodass der Wire nie sensible Daten sieht. Deshalb hängt jedes Tool in MCP Fusion seinen Presenter mit .returns() an.
Nächste Schritte
- Models and Presenters: die vollständige API beider
- Tools: wie Tools Presenter anhängen
- Governance: nachweisen, dass die Oberfläche sicher blieb
