Skip to main content
Glama
Snozu

Relay MCP Server

by Snozu

Relay

Ein KI-Operations-Agent, der aus Ihren eigenen Daten antwortet, Ihre eigenen Richtlinien zitiert und anhält, bevor ein Cent ausgegeben wird.

Next.js AI SDK PostgreSQL TypeScript Self-hosted

1 Orchestrator · 2 Spezialisten · 9 Werkzeuge · 1 menschlich abgesicherter Schreibzugriff


Operations-Teams leben in einer Lücke. Die Antwort auf "Warum ist die Bestellung dieses Kunden nicht angekommen und schulden wir ihm Geld?" befindet sich an zwei Orten gleichzeitig: in der Bestelldatenbank und in einem Richtliniendokument, das seit der Einarbeitung niemand mehr gelesen hat. Diese Lücke manuell zu schließen, macht den Großteil des Arbeitstages eines Support-Agenten aus.

Relay schließt sie – und zeigt dabei seine Arbeit.

Die Relay-Konsole während einer Anfrage


Was dies von einem Chatbot unterscheidet

Es liest Ihre Systeme, nicht das Internet. Neun Werkzeuge fragen eine Live-PostgreSQL-Datenbank ab. Dem Modell ist es verboten, Tatsachen zu behaupten, die nicht aus einem Werkzeugergebnis stammen, und jeder Aufruf ist auf dem Bildschirm mit seiner tatsächlichen Latenz sichtbar.

Es rendert Produkt, nicht Prosa. Fragen Sie, was sich verspätet, und Sie erhalten eine Tabelle mit Statusabzeichen und Verspätungstagen. Fragen Sie nach einer Übersicht und Sie erhalten ein Dashboard. Das Modell wählt das Werkzeug; das Frontend bestimmt, wie das Ergebnis aussieht, sodass die Ausgabe immer wohlgeformt ist, egal was das Modell tut.

Es zitiert Ihre Richtlinien. Laden Sie ein PDF hoch, und es wird in Sekunden in Chunks aufgeteilt, eingebettet und durchsuchbar gemacht. Die Abfrage ist hybrid – Vektorähnlichkeit für die Bedeutung, Postgres-Volltext für exakte Begriffe wie eine SKU – fusioniert mit reciprocal rank. Die Embeddings werden prozessintern berechnet, sodass Dokumentinhalte Ihren Server nie verlassen.

Es kann Ihr Geld nicht ausgeben. Genau ein Werkzeug schreibt. Es sitzt auf dem Orchestrator, hinter einem menschlichen Genehmigungs-Gate, gedeckelt auf den Bestellbetrag und idempotent. Kein Spezialist kann Geld bewegen, und keine noch so große Delegation kann das Gate umgehen. Das ist eine Eigenschaft der Topologie, keine Einstellung.

Es verbindet sich mit dem, was Sie bereits verwenden. Relay ist auch ein MCP-Server. Richten Sie Claude Desktop, Cursor oder einen anderen Agenten auf /api/mcp, und seine Lesewerkzeuge werden dort verfügbar – dieselben Werkzeuge, gegen dieselben Daten. Das Schreibwerkzeug wird bewusst nicht exponiert: Da das Genehmigungs-Gate in Relays Oberfläche lebt, würde die Föderation des Schreibens einem externen Client einen Weg darum herum geben.

Sie können live sehen, wie es verdrahtet ist. Die Architekturansicht ist kein Diagramm – Knoten leuchten entlang des Pfades, den eine Anfrage tatsächlich genommen hat, wobei jeder Spezialist die von ihm aufgerufenen Werkzeuge und deren Dauer auflistet.

Die Live-Architekturansicht


Die Agenten

Agent

Zuständigkeit

Werkzeuge

Relay (Orchestrator)

Leitet die Anfrage, synthetisiert die Antwort, verwaltet den Schreibpfad

2 Delegationen + 1 Schreiben

Operations specialist

Bestellungen, Lieferungen, Kunden, Tickets, Betriebsübersicht

7 lesen

Knowledge specialist

Die Dokumentenbibliothek, durch hybride Abfrage

1 lesen

Delegation dient nicht der Geschwindigkeit – sie kostet Latenz. Sie erkauft zuverlässige Werkzeugauswahl (sechs verwandte Werkzeuge schlagen vierzehn unzusammenhängende), sauberen Kontext pro Spezialist und einen strukturell isolierten Schreibpfad.

Die Werkzeuge

Werkzeug

Effekt

Funktion

find_delayed_orders

lesen

Bestellungen, die das voraussichtliche Lieferdatum überschritten haben und nicht geliefert sind

search_orders

lesen

Bestellungen nach Status, Kunde oder Aktualität

get_order

lesen

Eine Bestellung vollständig: Artikel, Lieferung, Tickets, Rückerstattungen

track_shipment

lesen

Wo sich eine Lieferung befindet, ob sie verspätet ist und um wie viele Tage

search_tickets

lesen

Support-Tickets nach Status, Priorität oder Kategorie

get_customer

lesen

Ein Kunde mit Bestell- und Ticketverlauf

get_operations_summary

lesen

Anzahl nach Status, Verzögerungen nach Spediteur, 14-Tage-Volumentrend

search_knowledge

lesen

Hybride Abfrage über hochgeladene Dokumente

issue_refund

schreiben

Erstattet eine Rückzahlung. Menschliche Genehmigung erforderlich. Gedeckelt und idempotent.


Wie die Abfrage funktioniert

Die Abfrage-Pipeline

Aufnahme, einmal pro Dokument: hochladen → extrahieren → chunken (~1000 Zeichen, 150 Überlapp) → einbetten (mehrsprachiges MiniLM, 384d) → in pgvector speichern.

Abfrage, jede Frage: einbetten → Vektorsuche und Volltextsuche parallel → fusionieren durch reciprocal rank → Top 5 Passagen mit ihrer Quelle.

Beide Suchen, weil keine allein ausreicht. Vektorähnlichkeit findet eine Passage, die dasselbe in anderen Worten bedeutet, und übersieht eine exakte SKU. Volltext findet das exakte Token und übersieht die Paraphrase. RRF vereint die beiden Rankings, ohne die Ergebnisse zwischen inkompatiblen Systemen zu kalibrieren.

Der Embedder ist bewusst mehrsprachig: Ein englischsprachiges Modell bewertet eine spanische Frage mit einer englischen Richtlinie mit 0,18, knapp über den 0,02, die es für nicht verwandten Text vergibt. Sprachübergreifende Abfragen würden stillschweigend Rauschen liefern. Das mehrsprachige Modell bewertet dasselbe Paar mit 0,43.


Ausführung

Voraussetzungen: Node 22+, Docker und ein API-Schlüssel von DeepSeek oder Anthropic.

npm install                  # also generates the Prisma client
cp .env.example .env         # set RELAY_PROVIDER and the matching key
npm run db:up                # PostgreSQL + pgvector on port 5440
npm run db:push              # create the schema
npm run db:seed              # demo dataset + policy documents
npm run dev

Öffnen Sie http://localhost:3000.

Bringen Sie Ihren eigenen Schlüssel mit. Der Tab "Einstellungen" in der Konsole akzeptiert einen API-Schlüssel, der nur in Ihrem Browser gespeichert, als Request-Header gesendet, an den Anbieter weitergeleitet und verworfen wird. Er wird nie in die Datenbank geschrieben, nie protokolliert und erscheint nie im Audit-Trail.

Befehl

Funktion

npm run db:up / db:down

PostgreSQL starten / stoppen

npm run db:reset

Alles löschen und neu befüllen

npm run db:seed:docs

Nur die Dokumentenbibliothek zurücksetzen

npm run docs:pdf

Die Fallstudien-PDFs neu erstellen

Der Seed ist deterministisch – dieselben Bestellungen, Verzögerungen und Tickets bei jedem Lauf – und Daten werden relativ zur aktuellen Zeit generiert, sodass die Daten niemals veraltet wirken.

Ausprobieren

Beispieldokumente zum Hochladen befinden sich in docs/sample-uploads/, zusammen mit den Fragen, die nach jedem Dokument zu stellen sind, und den richtigen Antworten. Eines davon widerspricht bewusst einer gesäten Richtlinie – genau das passiert bei einem echten Kunden.


Projektstruktur

prisma/
  schema.prisma          Data model — one datastore
  seed.ts                Deterministic business dataset
  seed-documents.ts      Policy documents into the knowledge base
src/
  app/api/chat/route.ts  The agent endpoint
  lib/
    agents.ts            Orchestrator + specialists, delegation tools
    tools.ts             The 9 tools
    rag/                 Chunking, ingestion, hybrid search
    embeddings.ts        Local multilingual embedder
    audit.ts             Tool call recording
    model.ts             Provider resolution, bring-your-own-key
  components/
    console.tsx          The one-panel console
    architecture.tsx     Live architecture canvas
    renders/             Generative UI: tables, records, charts

Verbindung über MCP

// claude_desktop_config.json
{
  "mcpServers": {
    "relay": { "url": "http://localhost:3000/api/mcp" }
  }
}

Acht Lesewerkzeuge werden verfügbar: Bestellungen, Lieferungen, Kunden, Tickets, die Betriebsübersicht und die hybride Dokumentsuche. issue_refund fehlt bewusst – Lesezugriffe sind sicher zu föderieren, Schreibzugriffe bleiben hinter dem menschlichen Gate.

Bereitstellung

Selbst gehostet. Ein eigenständiger Next.js-Build und ein PostgreSQL-Container hinter einem Reverse-Proxy. Keine verwaltete Plattform erforderlich und keine Herstellerbindung.

Sicherheit

.env und alle .env.* außer .env.example sind in gitignored. Dieses Repository ist öffentlich – kein Schlüssel, Token oder Verbindungszeichenfolge gehört in eine versionierte Datei.

Der Demo-Datensatz ist vollständig generiert. Harbor & Pine ist fiktiv; kein Kunde, keine Bestellung, Adresse oder Rückerstattung bezieht sich auf eine reale Person.


Dokumentation

Dokument

Zweck

Case study (EN)

Die vollständige technische Ausarbeitung

MCP exposure · (ES)

Wie /api/mcp gebaut wurde, was es exponiert und was nicht

Caso de estudio (ES)

Spanische Ausgabe

Sample uploads

Testdokumente mit erwarteten Antworten

Erstellt von

IKOM — Haziel Zul und Jorge Bustos.

Relay ist ein Showcase-Build. Harbor & Pine ist eine fiktive Marke und ihre Daten sind generiert; die Architektur, der Code und die Zahlen sind echt und in der Demo reproduzierbar.

-
license - not tested
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Snozu/relay'

If you have feedback or need assistance with the MCP directory API, please join our Discord server