A Model Context Protocol (MCP) server that provides access to the OwnerRez API v2.0 with OAuth2 authentication. This server enables AI assistants like Claude to interact with your OwnerRez vacation rental management data.
- OAuth2 Authentication: Secure authentication flow following OAuth 2.0 Authorization Code Grant
- Comprehensive API Coverage: 30+ tools covering all major OwnerRez API endpoints
- Property Management: List, search, and retrieve property information
- Booking Management: Create, update, and query bookings
- Guest Management: Full CRUD operations for guest records
- Quotes & Inquiries: Access quotes and inquiry data
- Webhooks: Manage webhook subscriptions
- Reviews & Listings: Access property reviews and listing content
- Custom Fields & Tags: Manage tags and custom field definitions
- OwnerRez Account: Active OwnerRez account
- OAuth App: Create an OAuth app in OwnerRez (see Setup Guide)
- Node.js: Version 18 or higher
- MCP Client: Claude Desktop or another MCP-compatible client
npm install -g ownerrez-mcp-server
# Clone the repository
git clone <repository-url>
cd ownerrez-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
Before using this MCP server, you need to create an OAuth app in OwnerRez:
- Contact OwnerRez: Email
partnerhelp@ownerrez.com
to let them know you're creating an integration - Create OAuth App:
- Go to https://app.ownerrez.com/settings/api
- Click "Create App"
- Fill in the required fields:
- Name: Your app name (e.g., "Claude MCP Integration")
- Homepage URL: Your homepage or landing page
- OAuth Redirect URL: For local testing, use
http://localhost:3000/oauth/callback
- Webhook URL/User/Password: Optional, for receiving webhooks
- Save Credentials:
- Copy your Client ID (starts with
c_
) - Copy your Client Secret (starts with
s_
) - save this immediately as you won't be able to see it again!
- Copy your Client ID (starts with
Create a .env
file in the project directory:
cp .env.example .env
Edit .env
with your OAuth credentials:
OWNERREZ_CLIENT_ID=c_your_client_id_here
OWNERREZ_CLIENT_SECRET=s_your_client_secret_here
OWNERREZ_REDIRECT_URI=http://localhost:3000/oauth/callback
OWNERREZ_ACCESS_TOKEN=
To use the MCP server, you need to obtain an access token through the OAuth flow:
- Configure the MCP server in your client (see below)
- Use the
get_oauth_url
tool to get the authorization URL - Visit the URL in your browser and authorize the application
- Exchange the authorization code for an access token (manual process)
- Add the token to your
.env
file asOWNERREZ_ACCESS_TOKEN
# 1. Get the authorization URL
# Replace CLIENT_ID and REDIRECT_URI with your values
https://app.ownerrez.com/oauth/authorize?response_type=code&client_id=c_your_client_id&redirect_uri=http://localhost:3000/oauth/callback
# 2. Visit the URL and authorize
# 3. You'll be redirected to: http://localhost:3000/oauth/callback?code=tc_xxxxx
# 4. Exchange the code for a token (replace values)
curl -u c_your_client_id:s_your_secret \
-d code=tc_xxxxx \
-d grant_type=authorization_code \
-d redirect_uri=http://localhost:3000/oauth/callback \
-X POST https://api.ownerrez.com/oauth/access_token
# 5. Copy the access_token from the response to your .env file
Add to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"ownerrez": {
"command": "node",
"args": ["/absolute/path/to/ownerrez-mcp-server/build/index.js"],
"env": {
"OWNERREZ_CLIENT_ID": "c_your_client_id",
"OWNERREZ_CLIENT_SECRET": "s_your_secret",
"OWNERREZ_REDIRECT_URI": "http://localhost:3000/oauth/callback",
"OWNERREZ_ACCESS_TOKEN": "at_your_access_token"
}
}
}
}
Restart Claude Desktop after updating the configuration.
get_oauth_url
- Get OAuth authorization URL
list_bookings
- Query bookings with filtersget_booking
- Get single booking detailscreate_booking
- Create new bookingupdate_booking
- Update existing booking
list_properties
- List all propertiesget_property
- Get single property detailssearch_properties
- Search properties with availability
list_guests
- Query guestsget_guest
- Get guest detailscreate_guest
- Create new guestupdate_guest
- Update guestdelete_guest
- Delete guest
list_quotes
- Get all quotesget_quote
- Get quote detailslist_inquiries
- Get all inquiriesget_inquiry
- Get inquiry details
list_owners
- List all ownersget_owner
- Get owner details
get_current_user
- Get authenticated user info
list_webhook_subscriptions
- List webhook subscriptionsget_webhook_subscription
- Get webhook detailscreate_webhook_subscription
- Create webhookdelete_webhook_subscription
- Delete webhookget_webhook_categories
- Get available webhook categories
list_reviews
- Get property reviewsget_review
- Get review detailslist_listings
- Get property listingsget_listing
- Get listing details
list_tag_definitions
- Get tag definitionsget_tag_definition
- Get tag definitioncreate_tag_definition
- Create tag definitionlist_field_definitions
- Get field definitions
Once configured, you can interact with OwnerRez through your MCP client:
"Show me all active properties"
"List bookings for property ID 12345 from January 2025"
"Get details for booking 67890"
"Search for properties with 3+ bedrooms that allow pets"
"Show me recent inquiries"
"Create a new guest record for John Doe"
npm run dev
- Install Fly CLI: https://fly.io/docs/hands-on/install-flyctl/
- Login:
flyctl auth login
- Create app:
flyctl launch
- Set secrets:
flyctl secrets set OWNERREZ_CLIENT_ID=c_your_id flyctl secrets set OWNERREZ_CLIENT_SECRET=s_your_secret flyctl secrets set OWNERREZ_REDIRECT_URI=https://your-app.fly.dev/oauth/callback
- Deploy:
flyctl deploy
For OAuth callback testing during development:
# Install ngrok: https://ngrok.com/download
ngrok http 3000
# Update your OAuth app's redirect URI to the ngrok URL
# Example: https://abc123.ngrok.io/oauth/callback
403 errors often occur due to:
- Missing User-Agent header (handled automatically by this server)
- Blocked IP address
- Invalid credentials
Contact OwnerRez support if you suspect your IP is blocked.
- Check that your
OWNERREZ_ACCESS_TOKEN
is set correctly - Verify the token hasn't been revoked
- Ensure you completed the OAuth flow successfully
Access tokens from OwnerRez are long-lived and don't expire unless revoked. If your token stops working:
- Check if the user revoked access in OwnerRez
- Complete the OAuth flow again to get a new token
- Check Claude Desktop logs for errors
- Verify the path to
build/index.js
is correct and absolute - Ensure all environment variables are set
- Restart Claude Desktop
OwnerRez implements rate limiting on their API. The server will return appropriate error messages if you hit rate limits. See: https://www.ownerrez.com/support/articles/api-rate-limiting
- Never commit your
.env
file or expose your Client Secret - Store access tokens securely
- Use HTTPS for production redirect URIs
- Regularly rotate your Client Secret if compromised
Some endpoints require premium OwnerRez features:
- Messaging: Requires messaging partnership agreement
- Listings: Requires WordPress Plugin + Integrated Websites feature
Contact OwnerRez at partnerhelp@ownerrez.com
for access.
# Watch mode for development
npm run watch
# Build
npm run build
# Run
npm start
MIT
For issues with:
- This MCP Server: Open an issue on GitHub
- OwnerRez API: Contact help@ownerrez.com
- OAuth Setup: Contact partnerhelp@ownerrez.com