OfficeRnD MCP Server

Servidor MCP de solo lectura para la API de gestión de espacios flexibles y coworking OfficeRnD. Consulta miembros, empresas, reservas, recursos, facturación y más.

Documentación

OfficeRnD MCP Server

Un servidor Model Context Protocol (MCP) de solo lectura que conecta asistentes de IA con la plataforma de gestión de espacios de coworking y flex-space OfficeRnD. Consulta miembros, empresas, reservas, facturación y más mediante lenguaje natural.

Qué hace

Este servidor expone datos de OfficeRnD a través de 5 herramientas agrupadas por dominio, que cubren más de 25 tipos de entidades:

HerramientaEntidadesConsultas de ejemplo
communityMiembros, empresas, membresías, check-ins, contratos, visitas, visitantes, oportunidades"Listar todos los miembros activos" / "Muéstrame las visitas de la semana pasada"
spaceRecursos, reservas, ocurrencias de reservas, pisos, asignaciones, comodidades, pases, créditos"¿Qué salas de reuniones están disponibles?" / "Listar reservas para hoy"
billingPagos, tarifas, planes, estadísticas de monedas/créditos"Mostrar pagos pendientes" / "Obtener saldo de créditos para marzo"
collaborationEventos, tickets, publicaciones"Listar tickets abiertos" / "¿Qué eventos se avecinan?"
settingsUbicaciones, tipos de recursos, horarios de negocio, propiedades personalizadas"Listar todas las ubicaciones de oficinas"

Todas las herramientas son de solo lectura — no se pueden crear, modificar ni eliminar datos.

Requisitos previos

  • Node.js 18+
  • Credenciales de la API de OfficeRnD — ID de cliente, secreto de cliente y slug de organización (desde el panel de administración de OfficeRnD en Integraciones > API)

Inicio rápido

git clone https://github.com/MrBoor/officernd-mcp.git
cd officernd-mcp
npm install
npm run build

Configuración

Establece tres variables de entorno (mediante el archivo .env o directamente):

OFFICERND_CLIENT_ID=your_client_id
OFFICERND_CLIENT_SECRET=your_client_secret
OFFICERND_ORG_SLUG=your_organization_slug

El slug de organización es el identificador en tu URL de OfficeRnD: app.officernd.com/.../{your_org_slug}.

Uso con Claude Desktop

  1. Abre Claude Desktop > Configuración > Desarrollador > Editar configuración.
  2. Añade el servidor a claude_desktop_config.json:
{
  "mcpServers": {
    "officernd": {
      "command": "node",
      "args": ["/absolute/path/to/officernd-mcp/build/index.js"],
      "env": {
        "OFFICERND_CLIENT_ID": "your_client_id",
        "OFFICERND_CLIENT_SECRET": "your_client_secret",
        "OFFICERND_ORG_SLUG": "your_organization_slug"
      }
    }
  }
}
  1. Reinicia Claude Desktop. Un icono de martillo en la entrada de chat confirma la conexión.

Uso con ChatGPT Desktop

  1. Abre la aplicación de escritorio de ChatGPT y ve a Configuración (Cmd+, en macOS / Ctrl+, en Windows).
  2. Navega a Herramientas (o Servidores MCP) y añade un nuevo servidor, o edita el archivo de configuración directamente en ~/.chatgpt/mcp.json:
{
  "mcpServers": {
    "officernd": {
      "command": "node",
      "args": ["/absolute/path/to/officernd-mcp/build/index.js"],
      "env": {
        "OFFICERND_CLIENT_ID": "your_client_id",
        "OFFICERND_CLIENT_SECRET": "your_client_secret",
        "OFFICERND_ORG_SLUG": "your_organization_slug"
      }
    }
  }
}
  1. Reinicia ChatGPT. El servidor debería aparecer en tu lista de herramientas.

Nota: El soporte MCP requiere la aplicación de escritorio de ChatGPT (macOS o Windows) — no está disponible en la versión web. Requiere una suscripción Plus, Team o Enterprise.

Uso con Claude Code (CLI)

Opción A — Comando CLI (recomendado):

claude mcp add officernd \
  -e OFFICERND_CLIENT_ID=your_client_id \
  -e OFFICERND_CLIENT_SECRET=your_client_secret \
  -e OFFICERND_ORG_SLUG=your_org_slug \
  -s user \
  -- node /absolute/path/to/officernd-mcp/build/index.js

Usa -s project en lugar de -s user para limitar al proyecto actual únicamente.

Opción B — Archivo de configuración del proyecto:

Se incluye un .mcp.json en el repositorio. Completa tus credenciales:

{
  "mcpServers": {
    "officernd": {
      "type": "stdio",
      "command": "node",
      "args": ["build/index.js"],
      "env": {
        "OFFICERND_CLIENT_ID": "your_client_id",
        "OFFICERND_CLIENT_SECRET": "your_client_secret",
        "OFFICERND_ORG_SLUG": "your_organization_slug"
      }
    }
  }
}

Verificar: Ejecuta /mcp dentro de Claude Code para comprobar el estado del servidor.

Referencia de herramientas

Cada herramienta acepta un action (list, get o una acción especial), un tipo entity y filtros opcionales. Todas admiten paginación basada en cursor mediante cursorNext (máximo 50 resultados por página).

community

Consulta datos de comunidad/personas.

EntidadAccionesFiltros
memberslist, getstatus, email, name, company, location
companieslist, getname, status, location
membershipslist, getmember, company, status
checkinslist, getmember, location, startAfter, startBefore
contractslist, getmember, company, status
visitslist, getlocation, startAfter, startBefore
visitorslist(solo paginación)
opportunitieslist, getstatus, member, company
opportunity_statuseslist(solo paginación)

space

Consulta datos de espacio/recursos.

EntidadAccionesFiltros
resourceslist, get, statustype, name, location
bookingslist, getresourceId, member, company, location, startAfter, startBefore
booking_occurrenceslistseriesStart (obligatorio), seriesEnd (obligatorio), resourceId, member, location
floorslist, getlocation, name
assignmentslistresourceId, membershipId
amenitieslist, gettitle
passeslist, getmember, company
creditslist, getmember, company

Tipos de recurso para el filtro type: meeting_room, team_room, desk, hotdesk, desk_tr, desk_na.

billing

Consulta datos de facturación/financieros.

EntidadAccionesFiltros
paymentslist, getstatus, member, company, documentType, dateFrom, dateTo, sort
feeslist(solo paginación)
planslist, getsort

Acción especial — coin_stats: Obtener el saldo de monedas/créditos para un miembro o empresa en un mes determinado. Parámetros: member, company, month (por ejemplo, 2026-03).

collaboration

Consulta datos de colaboración.

EntidadAccionesFiltros
eventslist, getlocation, startAfter, startBefore
ticketslist, getstatus, member, location
postslist, get(solo paginación)

settings

Consulta la configuración de la organización.

EntidadAccionesFiltros
locationslist, getname
resource_typeslist(solo paginación)
business_hourslistlocation
custom_propertieslist(solo paginación)

Desarrollo

npm run dev         # Watch mode — recompiles on changes
npm run inspect     # Launch with MCP Inspector for debugging

Arquitectura

src/
  index.ts          # Entry point — env validation, tool registration, stdio transport
  auth.ts           # OAuth 2.0 client-credentials flow with token caching
  client.ts         # API client — GET helper, pagination, base URL
  tools/
    community.ts    # Members, companies, memberships, check-ins, contracts, visits
    space.ts        # Resources, bookings, floors, assignments, amenities
    billing.ts      # Payments, fees, plans, coin stats
    collaboration.ts # Events, tickets, posts
    settings.ts     # Locations, resource types, business hours, custom properties

Flujo de solicitud: Asistente de IA → MCP stdio → manejador de herramienta → token OAuth (en caché) → HTTP GET → API de OfficeRnD → respuesta formateada.

Límites de tasa de API

La API v2 de OfficeRnD aplica límites de tasa por integración y por organización:

OperaciónPor minutoPor día
Lectura (GET)40020,000
Generación de token5—

Este servidor solo realiza operaciones de lectura. Los tokens OAuth se almacenan en caché en memoria y se reutilizan hasta su expiración (con un margen de 60 segundos), manteniendo las solicitudes de token muy por debajo del límite de 5/min.

Si recibes HTTP 429 Too Many Requests, implementa retroceso exponencial y distribuye las solicitudes en lugar de hacer ráfagas. Contacta con el soporte de OfficeRnD para excepciones de límite de tasa si es necesario.

Seguridad

  • Solo lectura — Solo solicitudes GET; no es posible modificar datos
  • Credenciales de cliente OAuth 2.0 — Tokens almacenados en caché en memoria, se renuevan automáticamente antes de expirar
  • Sin secretos en el código — Las credenciales se pasan mediante variables de entorno
  • Acceso limitado — Solo solicita los permisos de lectura mínimos necesarios

Notas

  • La salida de fecha/hora se convierte a Hora del Este (ET)
  • Los filtros de nombre (donde se indique) requieren coincidencia exacta del nombre completo (por ejemplo, "Jane Smith" no "Jane")
  • La paginación está limitada a 50 elementos por página (tanto por defecto como máximo)
  • El operador de filtro $in está limitado a 50 valores

Licencia

MIT