officernd-mcp
Read-only MCP server for the OfficeRnD coworking/flex-space management API
Documentation
OfficeRnD MCP Server
A read-only Model Context Protocol (MCP) server that connects AI assistants to the OfficeRnD coworking and flex-space management platform. Query members, companies, bookings, billing, and more through natural language.
What it does
This server exposes OfficeRnD data through 5 domain-grouped tools, covering 25+ entity types:
| Tool | Entities | Example queries |
|---|---|---|
| community | Members, companies, memberships, check-ins, contracts, visits, visitors, opportunities | "List all active members" / "Show me visits from last week" |
| space | Resources, bookings, booking occurrences, floors, assignments, amenities, passes, credits | "What meeting rooms are available?" / "List bookings for today" |
| billing | Payments, fees, plans, coin/credit stats | "Show pending payments" / "Get credit balance for March" |
| collaboration | Events, tickets, posts | "List open tickets" / "What events are coming up?" |
| settings | Locations, resource types, business hours, custom properties | "List all office locations" |
All tools are read-only — no data can be created, modified, or deleted.
Prerequisites
- Node.js 18+
- OfficeRnD API credentials — client ID, client secret, and organization slug (from your OfficeRnD admin dashboard under Integrations > API)
Quick start
git clone https://github.com/MrBoor/officernd-mcp.git
cd officernd-mcp
npm install
npm run buildConfiguration
Set three environment variables (via `.env` file or directly):
OFFICERND_CLIENT_ID=your_client_id
OFFICERND_CLIENT_SECRET=your_client_secret
OFFICERND_ORG_SLUG=your_organization_slugThe org slug is the identifier in your OfficeRnD URL: `app.officernd.com/.../{your_org_slug}`.
Usage with Claude Desktop
1. Open Claude Desktop > Settings > Developer > Edit Config.
2. Add the server to `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"
}
}
}
}3. Restart Claude Desktop. A hammer icon in the chat input confirms the connection.
Usage with ChatGPT Desktop
1. Open the ChatGPT desktop app and go to Settings (`Cmd+,` on macOS / `Ctrl+,` on Windows).
2. Navigate to Tools (or MCP Servers) and add a new server, or edit the config file directly at `~/.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"
}
}
}
}3. Restart ChatGPT. The server should appear in your tools list.
> Note: MCP support requires the ChatGPT desktop app (macOS or Windows) — it is not available in the web version. Requires a Plus, Team, or Enterprise subscription.
Usage with Claude Code (CLI)
Option A — CLI command (recommended):
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.jsUse `-s project` instead of `-s user` to scope to the current project only.
Option B — Project config file:
A `.mcp.json` is included in the repo. Fill in your credentials:
{
"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"
}
}
}
}Verify: Run `/mcp` inside Claude Code to check the server status.
Tool reference
Each tool accepts an `action` (`list`, `get`, or a special action), an `entity` type, and optional filters. All support cursor-based pagination via `cursorNext` (max 50 results per page).
community
Query community/people data.
| Entity | Actions | Filters |
|---|---|---|
| `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 | _(pagination only)_ |
| `opportunities` | list, get | `status`, `member`, `company` |
| `opportunity_statuses` | list | _(pagination only)_ |
space
Query space/resource data.
| Entity | Actions | Filters |
|---|---|---|
| `resources` | list, get, status | `type`, `name`, `location` |
| `bookings` | list, get | `resourceId`, `member`, `company`, `location`, `startAfter`, `startBefore` |
| `booking_occurrences` | list | `seriesStart` (required), `seriesEnd` (required), `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` |
Resource types for the `type` filter: `meeting_room`, `team_room`, `desk`, `hotdesk`, `desk_tr`, `desk_na`.
billing
Query billing/financial data.
| Entity | Actions | Filters |
|---|---|---|
| `payments` | list, get | `status`, `member`, `company`, `documentType`, `dateFrom`, `dateTo`, `sort` |
| `fees` | list | _(pagination only)_ |
| `plans` | list, get | `sort` |
Special action — `coin_stats`: Get coin/credit balance for a member or company in a given month. Parameters: `member`, `company`, `month` (e.g., `2026-03`).
collaboration
Query collaboration data.
| Entity | Actions | Filters |
|---|---|---|
| `events` | list, get | `location`, `startAfter`, `startBefore` |
| `tickets` | list, get | `status`, `member`, `location` |
| `posts` | list, get | _(pagination only)_ |
settings
Query organization configuration.
| Entity | Actions | Filters |
|---|---|---|
| `locations` | list, get | `name` |
| `resource_types` | list | _(pagination only)_ |
| `business_hours` | list | `location` |
| `custom_properties` | list | _(pagination only)_ |
Development
npm run dev # Watch mode — recompiles on changes
npm run inspect # Launch with MCP Inspector for debuggingArchitecture
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 propertiesRequest flow: AI assistant → MCP stdio → tool handler → OAuth token (cached) → HTTP GET → OfficeRnD API → formatted response.
API rate limits
OfficeRnD API v2 enforces rate limits per integration per organization:
| Operation | Per Minute | Per Day |
|---|---|---|
| Read (GET) | 400 | 20,000 |
| Token generation | 5 | — |
This server only performs read operations. OAuth tokens are cached in memory and reused until expiry (with a 60-second buffer), keeping token requests well under the 5/min limit.
If you receive HTTP `429 Too Many Requests`, implement exponential backoff and spread requests out rather than bursting. Contact OfficeRnD support for rate limit exceptions if needed.
Security
- Read-only — Only GET requests; no data modification possible
- OAuth 2.0 client credentials — Tokens cached in memory, auto-refreshed before expiry
- No secrets in code — Credentials are passed via environment variables
- Scoped access — Only requests the minimum read permissions needed
Notes
- Date/time output is converted to Eastern Time (ET)
- Name filters (where noted) require exact full name match (e.g., "Jane Smith" not "Jane")
- Pagination is capped at 50 items per page (both default and maximum)
- The `$in` filter operator is capped at 50 values
License
Frequently asked questions
What is officernd-mcp?
officernd-mcp is Read-only MCP server for the OfficeRnD coworking/flex-space management API
How do I install officernd-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is officernd-mcp open source?
Yes — it is hosted on GitHub at https://github.com/MrBoor/officernd-mcp and has 1 stars.
Related MCP tools
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
MCP server that enables AI assistants to interact with Google Gemini CLI, leveraging Gemini's massive token window for large file analysis and codebase understanding
Official remote MCP server for Atlassian. Securely connect Jira, Confluence, Jira Service Management, Bitbucket, and Compass to Claude, ChatGPT, Cursor, VS Code, and other AI tools using OAuth 2.1 or API tokens.
📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Lan...
A desktop MCP client designed as a tool unitary utility integration, accelerating AI adoption through the Model Context Protocol (MCP) and enabling cross-vendor LLM API orchestration.
Open-source cross-agent memory layer for coding agents via MCP. Compatible with Claude Code, Codex, Cursor, Windsurf, Gemini CLI, Antigravity, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Copilot, Kiro, OpenCode, and Trae.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP