yarooms-mcp
v2.3.0
Published
MCP server for YAROOMS workplace management platform
Readme
YAROOMS MCP Server
MCP server for the YAROOMS workplace management platform. Enables AI agents (Claude, ChatGPT, Copilot, etc.) to search rooms, book spaces, manage visitors, and set work status through the Model Context Protocol.
Quick Start
Claude Code
claude mcp add --transport http yarooms https://mcp.yarooms.com/mcpAuthenticate via /mcp when prompted: uses OAuth with your YAROOMS account.
Claude Desktop / npx (local stdio)
{
"mcpServers": {
"yarooms": {
"command": "npx",
"args": ["-y", "yarooms-mcp"],
"env": {
"YAROOMS_API_TOKEN": "your-api-token",
"YAROOMS_BASE_URL": "https://your-tenant.yarooms.com/api"
}
}
}
}Running Modes
Remote HTTP (OAuth)
The hosted server at mcp.yarooms.com speaks MCP 2026-07-28 and remains
compatible with 2025-era clients. It uses OAuth via id.yarooms.com: each
user authenticates with their own YAROOMS account, no shared tokens.
Local stdio
YAROOMS_API_TOKEN=your-token YAROOMS_BASE_URL=https://your-tenant.yarooms.com/api npm run stdioTools
| Tool | Description |
|------|-------------|
| search_available_spaces | Search for available spaces (rooms, desks, parking, etc.) on a floor |
| create_booking | Book a space (room, desk, parking, etc.): supports daily/weekly/monthly/custom recurrence, incognito (private) bookings, booking on behalf of another user, and an expected attendee count (with over-capacity confirmation) |
| get_my_bookings | View your bookings, with their check-in status |
| cancel_booking | Cancel a booking, or only some dates of a recurring one, with an optional reason |
| modify_booking | Change a booking's time, space, title, attendee count, or owner (reassign). Multi-date bookings accept non-date edits only |
| check_in_booking | Check in to a booking |
| check_out_booking | Check out of a booking |
| get_all_bookings | List bookings across the organization: filter by single date, date range (startDate/endDate), "when" shortcut (today/tomorrow/only_future), location, space, booker, title, status, or updatedSince timestamp (access scoped by Bookings: View) |
| get_occupancy_analytics | Organization-wide occupancy and utilization stats for a date range (requires Analytics: Utilization) |
| get_hybrid_work_analytics | In-office / WFH / OOO breakdown per location, with compliance percentages (requires Analytics: Hybrid Work) |
| list_accounts | Paginated list of user accounts: server-side filters for search, location, team, role, activation, suspension, 2FA, provisioning source (requires Workplace: Manage users) |
| get_locations | List office locations |
| get_floors | List floors for a location |
| get_floor_info | Get floor details and spaces |
| get_space_schedule | View a floor's booking timeline for one day: rooms, desks, parking: optionally filtered by space type (formerly get_room_schedule) |
| get_space_types | List space types (Desk, Meeting Room, etc.) |
| list_space_groups | List space groups with their booking rules (strategies, slots, granularity, check-in, incognito/recurrence policy) |
| get_space | Get full metadata for a single space (location, floor, type, group, features, capacity, assigned user, check-in policy, position, image URLs) |
| list_spaces | Paginated list of spaces: filter by name, location, floor, type, group, assigned user, features, or workspace-ness |
| create_space | Create a desk/room/parking (requires Workplace: Manage) |
| update_space | Partial update of any space field; features=[] clears, assignedToAccountId=0/null unassigns (check-in rules live on the space group: use update_space_group) |
| delete_space | Delete a space (requires Workplace: Delete) |
| list_maintenance | List scheduled maintenance windows: filter by location, floor, space group, space, name, or date range (requires Workplace: Maintenance) |
| create_maintenance | Schedule a maintenance window blocking bookings on one or more locations, optionally narrowed to a floor/space group/space |
| update_maintenance | Partially update an existing maintenance window (name, dates, locations, scope) |
| delete_maintenance | Delete a maintenance window, making affected spaces bookable again |
| get_location_schedule | Get operating hours for a location |
| get_booking_options | Get valid booking intervals for a space (resolves booking strategy) |
| get_work_status | View work status (WFH, office, etc.) |
| set_work_status | Set work status for dates |
| register_visitor | Register a visitor |
| list_visitors | List visitors for a date/location |
| cancel_visitor | Cancel a visitor registration |
| get_pending_approvals | List booking requests pending your approval |
| approve_booking | Approve pending booking requests |
| reject_booking | Reject pending booking requests with optional reason |
| search_people | Search for people by name or email |
| get_my_profile | Get your profile: name, email, team, location |
| get_teammates | List members of your team |
| list_teams | List all teams (user groups) in the organization with role tier, member count, managers, and suspension state (requires Workplace: Manage users) |
| get_teammate_status | View a teammate's work status |
| get_teammate_bookings | View a teammate's bookings for a date |
Separate operations
The server exposes 188 tools. Every operation has its own name, input schema and
annotations; there are no model-callable action selectors. Existing manage_*
calls must migrate to the corresponding tool below and omit the action field.
The API continues to enforce the connected account's permissions. Updates send
only supplied fields; list-replacement and confirmation requirements are stated
in the relevant tool descriptions.
| Previous tool | Separate public tools |
| --- | --- |
| manage_users | get_user, create_user, update_user, delete_user, send_user_invitation, activate_user, suspend_user, unsuspend_user, change_user_team, change_user_location, deprovision_user |
| manage_teams | get_team, get_team_defaults, create_team, update_team, delete_team, suspend_team, unsuspend_team |
| manage_roles | list_roles, get_role, create_role, update_role, delete_role |
| get_audit_log | get_audit_log, search_audit_users, get_audit_timezones |
| manage_locations | get_location, get_location_defaults, create_location, update_location, delete_location, get_workplace_limits, get_location_delete_impact, get_location_statistics |
| manage_floors | get_floor_defaults, create_floor, update_floor, delete_floor, get_floor_delete_impact, get_floor_statistics, reorder_floors, get_floor_space_groups |
| manage_floor_areas | list_floor_areas, get_floor_area, create_floor_area, update_floor_area, delete_floor_area |
| manage_floor_pois | list_floor_pois, get_floor_poi, create_floor_poi, update_floor_poi, delete_floor_poi |
| manage_space_groups | get_space_group, get_space_group_defaults, create_space_group, update_space_group, delete_space_group |
| manage_space_types | get_space_type, get_space_type_defaults, create_space_type, update_space_type, delete_space_type, get_available_space_types |
| manage_features | list_features, get_feature, get_feature_defaults, create_feature, update_feature, delete_feature |
| manage_event_types | list_event_types, get_event_type, get_event_type_defaults, create_event_type, update_event_type, delete_event_type |
| manage_reminders | list_reminders, get_reminder, get_reminder_defaults, create_reminder, update_reminder, delete_reminder |
| manage_workflows | list_workflows, get_workflow, create_workflow, update_workflow, delete_workflow, get_workflow_structure, search_workflow_entities, activate_workflow, deactivate_workflow, duplicate_workflow |
| manage_services | list_services, get_service, create_service, update_service, delete_service, add_services_to_locations, get_service_availability, get_service_usage |
| manage_service_categories | list_service_categories, get_service_category, create_service_category, update_service_category, delete_service_category |
| manage_cost_centers | list_cost_centers, get_cost_center, create_cost_center, update_cost_center, delete_cost_center, get_cost_center_options |
| manage_visitor_blacklist | list_visitor_blacklist_entries, get_visitor_blacklist_entry, create_visitor_blacklist_entry, update_visitor_blacklist_entry, delete_visitor_blacklist_entry |
| manage_address_book | list_address_book_entries, get_address_book_entry, create_address_book_entry, update_address_book_entry, delete_address_book_entry, search_address_book, search_visitor_people |
| manage_company_settings | get_company_settings, update_company_settings, get_company_branding, update_company_branding |
| manage_resthooks | list_resthooks, get_resthook, create_resthook, update_resthook, delete_resthook |
| get_services_analytics | get_services_analytics, get_services_analytics_by_cost_center, get_services_analytics_chart, get_services_analytics_cost_centers |
| get_visitor_analytics | get_visitor_analytics, get_daily_presence |
| get_services_dashboard | get_services_dashboard, search_services_dashboard, get_desks_needing_cleaning |
| manage_space_images | add_space_image, remove_space_image, reorder_space_images |
Additional independent tools include update_location_schedule, get_maintenance, and get_pending_bookings.
Resources
| Resource | URI | Description |
|----------|-----|-------------|
| Work Status Options | yarooms://work-status-options | Available status options with IDs |
Configuration (local stdio)
| Variable | Required | Description |
|----------|----------|-------------|
| YAROOMS_API_TOKEN | Yes | Your YAROOMS API token |
| YAROOMS_BASE_URL | Yes | Tenant API URL (e.g. https://your-tenant.yarooms.com/api) |
Development
npm install
npm test # run the test suite
npm run stdio # stdio transport (dev)
npm run build # compileLicense
MIT
