Skip to main content
Glama
Snozu

Relay MCP Server

by Snozu

Relay

Un agente de operaciones de IA que responde desde tus propios datos, cita tus propias políticas y se detiene para que un humano revise antes de gastar un céntimo.

Next.js AI SDK PostgreSQL TypeScript Self-hosted

1 orquestador · 2 especialistas · 9 herramientas · 1 escritura con control humano


Los equipos de operaciones viven en un vacío. La respuesta a "¿por qué no ha llegado el pedido de este cliente y le debemos dinero?" está en dos sitios a la vez: la base de datos de pedidos y un documento de políticas que nadie ha leído desde la incorporación. Cerrar esa brecha a mano es la mayor parte de lo que hace un agente de soporte durante todo el día.

Relay la cierra — y muestra su trabajo mientras lo hace.

La consola de Relay durante una solicitud


Qué lo diferencia de un chatbot

Lee tus sistemas, no internet. Nueve herramientas consultan una base de datos PostgreSQL en vivo. Al modelo se le prohíbe afirmar cualquier hecho que no provenga del resultado de una herramienta, y cada llamada es visible en pantalla con su latencia real.

Renderiza producto, no prosa. Pregunta qué está retrasado y obtienes una tabla con indicadores de estado y días de retraso. Pide un resumen y obtienes un panel de control. El modelo elige la herramienta; el frontend controla cómo se ve el resultado, por lo que la salida siempre está bien formada, sin importar lo que haga el modelo.

Cita tus políticas. Sube un PDF y se divide en fragmentos, se vectoriza y se vuelve buscable en segundos. La recuperación es híbrida: similitud vectorial para el significado, búsqueda de texto completo de Postgres para términos exactos como un SKU — fusionada con rango recíproco. Los embeddings se calculan en proceso, por lo que el contenido de los documentos nunca sale de tu servidor.

No puede gastar tu dinero. Exactamente una herramienta escribe. Se encuentra en el orquestador, detrás de una puerta de aprobación humana, limitada al total del pedido e idempotente. Ningún especialista puede mover dinero, y ninguna cantidad de delegación puede eludir la puerta. Eso es una propiedad de la topología, no una configuración.

Se integra con lo que ya usas. Relay también es un servidor MCP. Apunta Claude Desktop, Cursor u otro agente a /api/mcp y sus herramientas de lectura estarán disponibles allí — las mismas herramientas, contra los mismos datos. La herramienta de escritura está deliberadamente no expuesta: la puerta de aprobación vive en la interfaz de Relay, por lo que federar la escritura le daría a un cliente externo una forma de evitarla.

Puedes ver cómo está conectado, en vivo. La vista de arquitectura no es un diagrama: los nodos se iluminan a lo largo de la ruta que realmente tomó una solicitud, y cada especialista enumera las herramientas que llamó y cuánto tiempo tardaron.

La vista de arquitectura en vivo


Los agentes

Agente

Posee

Herramientas

Relay (orquestador)

Enruta la solicitud, sintetiza la respuesta, posee la ruta de escritura

2 delegaciones + 1 escritura

Especialista en operaciones

Pedidos, envíos, clientes, tickets, resumen operativo

7 de lectura

Especialista en conocimiento

La biblioteca de documentos, a través de recuperación híbrida

1 de lectura

La delegación no es por velocidad — cuesta latencia. Compra una selección fiable de herramientas (seis herramientas relacionadas superan a catorce no relacionadas), un contexto limpio por especialista y una ruta de escritura estructuralmente aislada.

Las herramientas

Herramienta

Efecto

Qué hace

find_delayed_orders

lectura

Pedidos pasada su fecha de entrega estimada y no entregados

search_orders

lectura

Pedidos por estado, cliente o actualidad

get_order

lectura

Un pedido completo: artículos, envío, tickets, reembolsos

track_shipment

lectura

Dónde está un envío, si está retrasado y por cuántos días

search_tickets

lectura

Tickets de soporte por estado, prioridad o categoría

get_customer

lectura

Un cliente con historial de pedidos y tickets

get_operations_summary

lectura

Conteos por estado, retrasos por transportista, tendencia de volumen de 14 días

search_knowledge

lectura

Recuperación híbrida sobre documentos subidos

issue_refund

escritura

Emite un reembolso. Requiere aprobación humana. Limitado e idempotente.


Cómo funciona la recuperación

El pipeline de recuperación

Ingesta, una vez por documento: subir → extraer → fragmentar (~1000 caracteres, 150 de superposición) → vectorizar (MiniLM multilingüe, 384d) → almacenar en pgvector.

Consulta, cada pregunta: vectorizar → búsqueda vectorial y búsqueda de texto completo en paralelo → fusionar por rango recíproco → 5 pasajes principales con su fuente.

Ambas búsquedas, porque ninguna es suficiente por sí sola. La similitud vectorial encuentra un pasaje que significa lo mismo en diferentes palabras y pasa por alto un SKU exacto. El texto completo encuentra el token exacto y pasa por alto la paráfrasis. RRF combina las dos clasificaciones sin calibrar puntuaciones entre sistemas incomparables.

El embedder es multilingüe a propósito: un modelo solo en inglés puntúa una pregunta en español contra una política en inglés con un 0,18, apenas por encima del 0,02 que da a texto no relacionado. La recuperación entre idiomas devolvería silenciosamente ruido. El modelo multilingüe puntúa el mismo par con un 0,43.


Ejecutarlo

Requisitos: Node 22+, Docker y una clave API de DeepSeek o 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

Abre http://localhost:3000.

Trae tu propia clave. La pestaña de Configuración en la consola acepta una clave API que se almacena solo en tu navegador, se envía como encabezado de solicitud, se reenvía a ese proveedor y se descarta. Nunca se escribe en la base de datos, nunca se registra y nunca aparece en el registro de auditoría.

Comando

Qué hace

npm run db:up / db:down

Iniciar / detener PostgreSQL

npm run db:reset

Limpiar y resembrar todo

npm run db:seed:docs

Reiniciar solo la biblioteca de documentos

npm run docs:pdf

Reconstruir los PDFs de casos de estudio

La semilla es determinista — los mismos pedidos, retrasos y tickets en cada ejecución — y las fechas se generan relativas a ahora, por lo que los datos nunca parecen obsoletos.

Pruébalo

Los documentos de muestra para subir están en docs/sample-uploads/, con las preguntas a hacer después de cada uno y las respuestas correctas. Uno de ellos deliberadamente contradice una política sembrada, que es lo que sucede en un cliente real.


Estructura del proyecto

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

Conexión a través de MCP

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

Ocho herramientas de lectura están disponibles: pedidos, envíos, clientes, tickets, el resumen operativo y la búsqueda híbrida de documentos. issue_refund está ausente por diseño: las lecturas son seguras de federar, las escrituras permanecen detrás de la puerta humana.

Implementación

Autoalojado. Una compilación independiente de Next.js y un contenedor de PostgreSQL detrás de un proxy inverso. No se requiere plataforma gestionada ni se introduce dependencia de proveedor.

Seguridad

.env y todos los .env.* excepto .env.example están en gitignore. Este repositorio es público — ninguna clave, token o cadena de conexión pertenece a un archivo rastreado.

El conjunto de datos de demostración está completamente generado. Harbor & Pine es ficticio; ningún cliente, pedido, dirección o reembolso en él se refiere a una persona real.


Documentación

Documento

Para

Caso de estudio (EN)

El informe técnico completo

Exposición MCP · (ES)

Cómo se construyó /api/mcp, qué expone y qué no

Caso de estudio (ES)

Edición en español

Subidas de muestra

Documentos de prueba con respuestas esperadas

Creado por

IKOM — Haziel Zul y Jorge Bustos.

Relay es una construcción de demostración. Harbor & Pine es una marca ficticia y sus datos son generados; la arquitectura, el código y los números son reales y reproducibles en la demo.

-
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