Servidor MCP (Model Context Protocol) de BeTrusty. Expone herramientas para calcular precios de propiedades y consultar disponibilidad, listas para ser consumidas por cualquier cliente compatible con MCP (Claude Desktop, Cursor, etc.).
- Bun >= 1.x
- Acceso a la API de BeTrusty (
PRICING_API_BASE_URL)
# 1. Instalar dependencias
bun install
# 2. Crear el archivo de entorno
cp .env.example .env.localEditar .env.local y completar las variables:
PORT=3002 # Puerto del servidor (solo modo local/Docker)
PRICING_API_BASE_URL=https://app.betrusty.io # URL base de la API de BeTrusty
NODE_ENV=development # development | staging | production
PRICING_API_BASE_URLes la única variable obligatoria.
bun run devbun run build
bun run startEl servidor queda disponible en http://localhost:3002 (o el PORT que hayas configurado).
| Método | Ruta | Descripción |
|---|---|---|
GET |
/health |
Healthcheck. Devuelve { status: "ok", timestamp, version } |
POST |
/mcp |
Endpoint principal del protocolo MCP (JSON-RPC) |
GET |
/mcp |
No soportado — devuelve HTTP 405 (SSE deshabilitado) |
El servidor es stateless. Cada
POST /mcpes una solicitud independiente. No hay sesiones ni conexiones persistentes.
Editar el archivo de configuración de Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"betrusty": {
"url": "http://localhost:3002/mcp"
}
}
}Reiniciar Claude Desktop. Las herramientas aparecerán disponibles automáticamente.
En Cursor, agregar el servidor en Settings > MCP:
{
"mcpServers": {
"betrusty": {
"url": "http://localhost:3002/mcp"
}
}
}El endpoint MCP es:
POST http://localhost:3002/mcp
Content-Type: application/json
El cliente debe enviar mensajes JSON-RPC 2.0 estándar. SSE (GET /mcp) no está soportado — el cliente debe operar en modo HTTP POST solamente.
Calcula el precio de una estadía en una propiedad. Devuelve desglose por noche, precio total, moneda, descuentos aplicados y cuotas.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
propertyId |
string |
Sí | ID de la propiedad en BeTrusty |
checkIn |
string |
Sí | Fecha de entrada en formato YYYY-MM-DD |
checkOut |
string |
Sí | Fecha de salida en formato YYYY-MM-DD |
roomId |
string |
No | ID de la habitación. Usar "null" para reservar la propiedad completa (valor por defecto) |
Respuesta:
{
"nights": 3,
"totalPrice": 450.00,
"currency": "USD",
"appliedDiscounts": [],
"details": [
{ "concept": "Nightly rate", "value": 150.00 }
],
"installments": [
{
"index": 1,
"dueDate": "2026-04-01",
"currency": "USD",
"totalPrice": 450.00,
"totalNights": 3,
"details": [...],
"breakdown": [...]
}
]
}Devuelve los IDs de propiedades que no están disponibles (tienen al menos un evento de calendario que se superpone) para un rango de fechas dado. Útil para filtrar propiedades antes de mostrar disponibilidad.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
checkIn |
string |
Sí | Fecha de entrada en formato YYYY-MM-DD |
checkOut |
string |
Sí | Fecha de salida en formato YYYY-MM-DD |
Respuesta:
{
"data": ["prop_123", "prop_456"]
}docker build -t betrusty-mcp .
docker run -p 3002:3002 \
-e PRICING_API_BASE_URL=https://app.betrusty.io \
-e NODE_ENV=production \
betrusty-mcp- Conectar el repositorio en el dashboard de Vercel.
- Agregar la variable de entorno
PRICING_API_BASE_URLen Settings > Environment Variables. PORTno es necesario en Vercel — lo asigna automáticamente.- El build se ejecuta solo (
vercel.jsonya está configurado).
El endpoint MCP en Vercel será: https://<tu-dominio>.vercel.app/mcp
| Comando | Descripción |
|---|---|
bun run dev |
Servidor de desarrollo con hot reload |
bun run build |
Compila el proyecto en dist/ |
bun run start |
Ejecuta el build compilado |
bun run test |
Corre todos los tests |
bun run test:watch |
Tests en modo watch |
bun run typecheck |
Verificación de tipos TypeScript |
bun run lint |
Chequeo de lint con Biome |
bun run lint:fix |
Corrección automática de lint |