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:
| Herramienta | Entidades | Consultas de ejemplo |
|---|---|---|
| community | Miembros, empresas, membresías, check-ins, contratos, visitas, visitantes, oportunidades | "Listar todos los miembros activos" / "Muéstrame las visitas de la semana pasada" |
| space | Recursos, reservas, ocurrencias de reservas, pisos, asignaciones, comodidades, pases, créditos | "¿Qué salas de reuniones están disponibles?" / "Listar reservas para hoy" |
| billing | Pagos, tarifas, planes, estadísticas de monedas/créditos | "Mostrar pagos pendientes" / "Obtener saldo de créditos para marzo" |
| collaboration | Eventos, tickets, publicaciones | "Listar tickets abiertos" / "¿Qué eventos se avecinan?" |
| settings | Ubicaciones, 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
- Abre Claude Desktop > Configuración > Desarrollador > Editar configuración.
- 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"
}
}
}
}
- Reinicia Claude Desktop. Un icono de martillo en la entrada de chat confirma la conexión.
Uso con ChatGPT Desktop
- Abre la aplicación de escritorio de ChatGPT y ve a Configuración (
Cmd+,en macOS /Ctrl+,en Windows). - 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"
}
}
}
}
- 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.
| Entidad | Acciones | Filtros |
|---|---|---|
members | list, get | status, email, name, company, location |
companies | list, get | name, status, location |
memberships | list, get | member, company, status |
checkins | list, get | member, location, startAfter, startBefore |
contracts | list, get | member, company, status |
visits | list, get | location, startAfter, startBefore |
visitors | list | (solo paginación) |
opportunities | list, get | status, member, company |
opportunity_statuses | list | (solo paginación) |
space
Consulta datos de espacio/recursos.
| Entidad | Acciones | Filtros |
|---|---|---|
resources | list, get, status | type, name, location |
bookings | list, get | resourceId, member, company, location, startAfter, startBefore |
booking_occurrences | list | seriesStart (obligatorio), seriesEnd (obligatorio), resourceId, member, location |
floors | list, get | location, name |
assignments | list | resourceId, membershipId |
amenities | list, get | title |
passes | list, get | member, company |
credits | list, get | member, 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.
| Entidad | Acciones | Filtros |
|---|---|---|
payments | list, get | status, member, company, documentType, dateFrom, dateTo, sort |
fees | list | (solo paginación) |
plans | list, get | sort |
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.
| Entidad | Acciones | Filtros |
|---|---|---|
events | list, get | location, startAfter, startBefore |
tickets | list, get | status, member, location |
posts | list, get | (solo paginación) |
settings
Consulta la configuración de la organización.
| Entidad | Acciones | Filtros |
|---|---|---|
locations | list, get | name |
resource_types | list | (solo paginación) |
business_hours | list | location |
custom_properties | list | (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ón | Por minuto | Por día |
|---|---|---|
| Lectura (GET) | 400 | 20,000 |
| Generación de token | 5 | — |
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
$inestá limitado a 50 valores