OfficeRnD MCP Server

Servidor MCP somente leitura para a API de gerenciamento de coworking e espaços flexíveis do OfficeRnD. Consulte membros, empresas, reservas, recursos, faturamento e muito mais.

Documentação

Servidor MCP OfficeRnD

Um servidor Model Context Protocol (MCP) somente leitura que conecta assistentes de IA à plataforma de gerenciamento de coworking e espaços flexíveis OfficeRnD. Consulte membros, empresas, reservas, cobranças e muito mais por meio de linguagem natural.

O que ele faz

Este servidor expõe dados do OfficeRnD por meio de 5 ferramentas agrupadas por domínio, cobrindo mais de 25 tipos de entidades:

FerramentaEntidadesExemplos de consultas
communityMembros, empresas, assinaturas, check-ins, contratos, visitas, visitantes, oportunidades"Listar todos os membros ativos" / "Mostrar visitas da semana passada"
spaceRecursos, reservas, ocorrências de reservas, andares, atribuições, comodidades, passes, créditos"Quais salas de reunião estão disponíveis?" / "Listar reservas para hoje"
billingPagamentos, taxas, planos, estatísticas de moedas/créditos"Mostrar pagamentos pendentes" / "Obter saldo de créditos para março"
collaborationEventos, tickets, publicações"Listar tickets abertos" / "Quais eventos estão por vir?"
settingsLocais, tipos de recursos, horários de funcionamento, propriedades personalizadas"Listar todos os locais de escritório"

Todas as ferramentas são somente leitura — nenhum dado pode ser criado, modificado ou excluído.

Pré-requisitos

  • Node.js 18+
  • Credenciais da API OfficeRnD — ID do cliente, segredo do cliente e slug da organização (no painel administrativo do OfficeRnD, em Integrações > API)

Início rápido

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

Configuração

Defina três variáveis de ambiente (via arquivo .env ou diretamente):

OFFICERND_CLIENT_ID=your_client_id
OFFICERND_CLIENT_SECRET=your_client_secret
OFFICERND_ORG_SLUG=your_organization_slug

O slug da organização é o identificador na sua URL do OfficeRnD: app.officernd.com/.../{your_org_slug}.

Uso com Claude Desktop

  1. Abra Claude Desktop > Configurações > Desenvolvedor > Editar Configuração.
  2. Adicione o servidor ao 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. Reinicie o Claude Desktop. Um ícone de martelo na entrada de chat confirma a conexão.

Uso com ChatGPT Desktop

  1. Abra o aplicativo de desktop do ChatGPT e vá para Configurações (Cmd+, no macOS / Ctrl+, no Windows).
  2. Navegue até Ferramentas (ou Servidores MCP) e adicione um novo servidor, ou edite o arquivo de configuração diretamente em ~/.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. Reinicie o ChatGPT. O servidor deve aparecer na sua lista de ferramentas.

Observação: O suporte a MCP requer o aplicativo de desktop do ChatGPT (macOS ou Windows) — não está disponível na versão web. Requer assinatura Plus, Team ou Enterprise.

Uso com Claude Code (CLI)

Opção 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

Use -s project em vez de -s user para limitar ao projeto atual apenas.

Opção B — Arquivo de configuração do projeto:

Um .mcp.json está incluído no repositório. Preencha suas credenciais:

{
  "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"
      }
    }
  }
}

Verificação: Execute /mcp dentro do Claude Code para verificar o status do servidor.

Referência de ferramentas

Cada ferramenta aceita uma action (list, get ou uma ação especial), um tipo de entity e filtros opcionais. Todas suportam paginação baseada em cursor via cursorNext (máximo de 50 resultados por página).

community

Consulte dados de comunidade/pessoas.

EntidadeAçõesFiltros
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(somente paginação)
opportunitieslist, getstatus, member, company
opportunity_statuseslist(somente paginação)

space

Consulte dados de espaço/recursos.

EntidadeAçõesFiltros
resourceslist, get, statustype, name, location
bookingslist, getresourceId, member, company, location, startAfter, startBefore
booking_occurrenceslistseriesStart (obrigatório), seriesEnd (obrigatório), resourceId, member, location
floorslist, getlocation, name
assignmentslistresourceId, membershipId
amenitieslist, gettitle
passeslist, getmember, company
creditslist, getmember, company

Tipos de recursos para o filtro type: meeting_room, team_room, desk, hotdesk, desk_tr, desk_na.

billing

Consulte dados de cobrança/financeiros.

EntidadeAçõesFiltros
paymentslist, getstatus, member, company, documentType, dateFrom, dateTo, sort
feeslist(somente paginação)
planslist, getsort

Ação especial — coin_stats: Obter saldo de moedas/créditos para um membro ou empresa em um determinado mês. Parâmetros: member, company, month (por exemplo, 2026-03).

collaboration

Consulte dados de colaboração.

EntidadeAçõesFiltros
eventslist, getlocation, startAfter, startBefore
ticketslist, getstatus, member, location
postslist, get(somente paginação)

settings

Consulte a configuração da organização.

EntidadeAçõesFiltros
locationslist, getname
resource_typeslist(somente paginação)
business_hourslistlocation
custom_propertieslist(somente paginação)

Desenvolvimento

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

Arquitetura

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

Fluxo de solicitação: assistente de IA → MCP stdio → manipulador de ferramenta → token OAuth (em cache) → HTTP GET → API OfficeRnD → resposta formatada.

Limites de taxa da API

A API v2 do OfficeRnD impõe limites de taxa por integração e por organização:

OperaçãoPor MinutoPor Dia
Leitura (GET)40020.000
Geração de token5

Este servidor realiza apenas operações de leitura. Os tokens OAuth são armazenados em cache na memória e reutilizados até a expiração (com um buffer de 60 segundos), mantendo as solicitações de token bem abaixo do limite de 5/min.

Se você receber HTTP 429 Too Many Requests, implemente backoff exponencial e distribua as solicitações em vez de enviá-las em rajadas. Entre em contato com o suporte do OfficeRnD para exceções de limite de taxa, se necessário.

Segurança

  • Somente leitura — Apenas solicitações GET; nenhuma modificação de dados é possível
  • Credenciais de cliente OAuth 2.0 — Tokens armazenados em cache na memória, atualizados automaticamente antes da expiração
  • Sem segredos no código — As credenciais são passadas por variáveis de ambiente
  • Acesso limitado — Solicita apenas as permissões mínimas de leitura necessárias

Observações

  • A saída de data/hora é convertida para Horário do Leste (ET)
  • Os filtros de nome (quando indicado) exigem correspondência exata do nome completo (por exemplo, "Jane Smith", não "Jane")
  • A paginação é limitada a 50 itens por página (tanto padrão quanto máximo)
  • O operador de filtro $in é limitado a 50 valores

Licença

MIT