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:
| Ferramenta | Entidades | Exemplos de consultas |
|---|---|---|
| community | Membros, empresas, assinaturas, check-ins, contratos, visitas, visitantes, oportunidades | "Listar todos os membros ativos" / "Mostrar visitas da semana passada" |
| space | Recursos, 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" |
| billing | Pagamentos, taxas, planos, estatísticas de moedas/créditos | "Mostrar pagamentos pendentes" / "Obter saldo de créditos para março" |
| collaboration | Eventos, tickets, publicações | "Listar tickets abertos" / "Quais eventos estão por vir?" |
| settings | Locais, 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
- Abra Claude Desktop > Configurações > Desenvolvedor > Editar Configuração.
- 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"
}
}
}
}
- Reinicie o Claude Desktop. Um ícone de martelo na entrada de chat confirma a conexão.
Uso com ChatGPT Desktop
- Abra o aplicativo de desktop do ChatGPT e vá para Configurações (
Cmd+,no macOS /Ctrl+,no Windows). - 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"
}
}
}
}
- 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.
| Entidade | Ações | 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 | (somente paginação) |
opportunities | list, get | status, member, company |
opportunity_statuses | list | (somente paginação) |
space
Consulte dados de espaço/recursos.
| Entidade | Ações | Filtros |
|---|---|---|
resources | list, get, status | type, name, location |
bookings | list, get | resourceId, member, company, location, startAfter, startBefore |
booking_occurrences | list | seriesStart (obrigatório), seriesEnd (obrigatório), 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 recursos para o filtro type: meeting_room, team_room, desk, hotdesk, desk_tr, desk_na.
billing
Consulte dados de cobrança/financeiros.
| Entidade | Ações | Filtros |
|---|---|---|
payments | list, get | status, member, company, documentType, dateFrom, dateTo, sort |
fees | list | (somente paginação) |
plans | list, get | sort |
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.
| Entidade | Ações | Filtros |
|---|---|---|
events | list, get | location, startAfter, startBefore |
tickets | list, get | status, member, location |
posts | list, get | (somente paginação) |
settings
Consulte a configuração da organização.
| Entidade | Ações | Filtros |
|---|---|---|
locations | list, get | name |
resource_types | list | (somente paginação) |
business_hours | list | location |
custom_properties | list | (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ção | Por Minuto | Por Dia |
|---|---|---|
| Leitura (GET) | 400 | 20.000 |
| Geração de token | 5 | — |
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