homeexchange-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@homeexchange-mcpSearch homes in Paris for 2 guests in June."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ homeexchange-mcp
An unofficial MCP server for HomeExchange
Search homes ยท Read messages ยท Manage favourites ยท All from your AI client
Unofficial project. Not affiliated with or endorsed by HomeExchange SAS. Personal use only โ see disclaimer.
What you can do
Once connected, ask your AI client things like:
"Find homes in Lisbon for 2 guests in July, GuestPoints only"
"Show me my unanswered messages"
"Send a message to conversation 12345 asking about parking"
"What homes have I favourited?"
"Show the availability calendar for home 1950607"
20 tools across three categories:
Category | Tools |
๐ Search & discovery |
|
๐ฌ Messaging |
|
๐ค Users |
|
Related MCP server: Homebox MCP Server
How it works
npm run login
โ
Browser opens โ you log in once
โ
session.json (token + cookies, stays local)
โ
npm run mcp
โ
MCP Server (local, stdio)
โ
โโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
search & messaging users
discovery (8 tools) (3 tools)
(9 tools) โ โ
โ โโโโโโโโโโฌโโโโโโโโ
โโโโโโโโโโโโโโโโโโ
โ
api.homeexchange.com
bff.homeexchange.comAuth is captured once via your real browser session โ no credentials stored in code. The MCP server runs locally and makes direct API calls on your behalf. Works with any MCP-compatible client.
Quick start
1. Install
npm install
npx playwright install chromium2. Capture your session
npm run loginA browser opens. Log in to HomeExchange, then press Ctrl+C. Your session is saved locally to session.json (git-ignored).
Tokens expire after a few days. Re-run
npm run loginwhen tools start returning 401s.
Optional location search configuration
Searching homes by a place name needs a personal geocoding token to resolve that name to a HomeExchange search location. Use .env.example as a reference, then export HOMEEXCHANGE_GEOCODING_TOKEN before starting the MCP server. Keep the token out of version control.
3. Start the MCP server
npm run mcpLocal MCP testing
The project includes a local end-to-end smoke test. It builds the server, starts it over stdio, performs the MCP handshake, and confirms that all tools are available. It does not need a HomeExchange session and makes no network requests.
npm run test:mcpTo run the built server in the same form used by the smoke test:
npm run mcp:localAfter completing npm run login, you can also validate one read-only
HomeExchange call without displaying any account data:
npm run test:mcp -- --liveThe live check calls list_my_homes. Do not use it for testing changes that
write data, and never commit session.json or .env.
Client setup
Works with any MCP client that supports stdio transport.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"homeexchange": {
"command": "npx",
"args": ["ts-node", "src/mcp.ts"],
"cwd": "/path/to/homeexchange-mcp"
}
}
}Claude Code
claude mcp add homeexchange -- npx ts-node src/mcp.tsCursor
~/.cursor/mcp.json:
{
"mcpServers": {
"homeexchange": {
"command": "npx",
"args": ["ts-node", "src/mcp.ts"],
"cwd": "/path/to/homeexchange-mcp"
}
}
}Zed
.zed/settings.json:
{
"context_servers": {
"homeexchange": {
"command": { "path": "npx", "args": ["ts-node", "src/mcp.ts"] }
}
}
}Tool reference
๐ Search & discovery
search_homes
Search listings by location, dates, guests, and exchange type.
Parameter | Type | Required | Default | Description |
| string | No | โ | City, region, or country |
| string | No | โ |
|
| string | No | โ |
|
| number | No | โ | Number of guests |
| string | No | โ |
|
| string | No | โ |
|
| number | No |
| Results per page (max 36) |
| number | No |
| Pagination offset |
get_home
Full details for a listing.
Parameter | Type | Required | Description |
| string | Yes | Numeric home ID |
get_home_calendar
Availability calendar โ blocked and open dates for a home.
Parameter | Type | Required | Description |
| string | Yes | Numeric home ID |
get_recommendations
Personalised picks based on your profile and history.
Parameter | Type | Required | Default | Description |
| number | No |
| Number of results |
list_my_homes
Your own listings. No parameters.
list_favorites
Your saved homes.
Parameter | Type | Required | Default | Description |
| number | No |
| Number of results |
add_favorite
Save a home to your favourites.
Parameter | Type | Required | Description |
| string | Yes | Home ID |
remove_favorite
Remove a home from your favourites.
Parameter | Type | Required | Description |
| string | Yes | Home ID |
list_saved_searches
Your saved search filters.
Parameter | Type | Required | Default | Description |
| number | No |
| Number of results |
๐ฌ Messaging
list_conversations
Your conversation inbox.
Parameter | Type | Required | Default | Description |
| string | No |
|
|
| number | No |
| Threads to return |
| string | No | โ | Pagination cursor from previous response |
get_conversation
Extended information about a conversation, including exchange details.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
get_messages
All messages in a conversation thread.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
get_exchange_request
Exchange request details attached to a conversation.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
send_message
Reply in an existing conversation.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
| string | Yes | Message text |
start_conversation
Open a new conversation about a home.
Parameter | Type | Required | Description |
| string | Yes | The home you're enquiring about |
| string | Yes | Opening message |
pre_approve_exchange
Pre-approve an exchange request.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
archive_conversation
Archive a conversation.
Parameter | Type | Required | Description |
| string | Yes | Conversation ID |
๐ค Users
get_user_profile
A member's public profile.
Parameter | Type | Required | Description |
| string | Yes | Numeric user ID |
get_user_ratings
Ratings left for a member.
Parameter | Type | Required | Description |
| string | Yes | Numeric user ID |
get_user_achievements
Achievements earned by a member.
Parameter | Type | Required | Description |
| string | Yes | Numeric user ID |
Scripts
Script | Description |
| Capture auth session via browser โ start here |
| Start the local MCP server |
| Full network recorder with HAR capture (API exploration) |
| Analyze a |
| Compile TypeScript |
| Typecheck + lint + tests |
Project layout
src/
login.ts browser auth capture
record.ts full network recorder with HAR output
analyze.ts HAR โ api-map.json analysis
api.ts authenticated HTTP client
mcp.ts MCP stdio server
tools/
search.ts 9 search & discovery tools
messaging.ts 8 messaging tools
user.ts 3 user toolsRoadmap
Tracked as GitHub Issues โ upvote or comment to influence priority:
#9 Calendar integration โ query and update availability, surface conflicts across requests
#10 Remote MCP โ hosted endpoint, no local setup required
#11 Token expiry detection โ auto-prompt on 401 (good first issue)
#12 Saved search alerts โ notify when new homes match your saved searches
Contributing
Ideas, bug reports, and pull requests are welcome.
Got a feature idea or found a bug? Open an issue โ describe what you were trying to do and what happened (or didn't).
Want to contribute code?
Fork the repo and create a branch from
mainMake your changes โ keep commits conventional (
fix:,feat:,chore:etc.)Open a pull request with a conventional title, such as
feat: add calendar filteringorfix(api): handle expired sessionsEnsure all required checks pass before merge
Good first issues are tagged good first issue โ start there if you're new to the codebase.
Note: This project reverse-engineers a private API. New tools may break if HomeExchange changes their endpoints. Please check existing issues before reporting an API breakage.
Releases
Release Please collects conventional commits on main into a release pull request. A maintainer reviews that pull request and merges it when the project is ready to publish. Merging it updates CHANGELOG.md, package.json, and package-lock.json, then creates the version tag and GitHub Release.
Before 1.0.0, feat: and breaking changes increase the minor version, while fix:, perf:, and revert: increase the patch version. The release workflow consumes the organization Actions secret named RELEASE_TOKEN so its pull requests receive the normal required CI checks. Organization administrators must include this repository in the secret's selected-repository access policy. The underlying credential needs permission to write contents and pull requests, and an expiration that complies with organization policy.
Pull request titles are validated against the Conventional Commits format. Squash merges use the validated title as the commit subject so Release Please can calculate the correct version and changelog entry.
Disclaimer
This is an unofficial, community project with no affiliation with HomeExchange SAS.
Uses your own HomeExchange account credentials, exactly as your browser does
Personal, non-commercial use only โ not for scraping, reselling, or commercial exploitation of HomeExchange data
Subject to HomeExchange's Terms of Service
The HomeExchange API is private and undocumented โ endpoints may change without notice
The intent is to build a genuinely useful tool for the HomeExchange community, and ideally to partner with HomeExchange to do this officially. If you work at HomeExchange and are interested in collaborating on a proper integration, please open an issue or get in touch.
License
MIT โ personal and non-commercial use.
HomeExchangeยฎ is a registered trademark of HomeExchange SAS. This project is independent and not endorsed by HomeExchange SAS.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Vacation rental discovery, direct booking, and property protection for AI agents.
Personal AI travel agent. Points optimization, live flight/hotel/award search, trip planning.
Read and update your Everway trips and itineraries from any MCP-compatible AI assistant.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to browse properties, manage conversations, update availability calendars, and track exchanges on the PeopleLikeUs home exchange platform via natural language, with 28 MCP tools and auto-login support.26MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with a Homebox inventory system to search, create, update, and manage items, locations, and labels.
- AlicenseAqualityDmaintenanceEnables AI agents to control Homey smart home devices, trigger flows, and query zones via the Homey API.1922MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search Dutch housing listings on Kamernet.nl, retrieve full listing details, and optionally reply to landlords; designed for personal use in finding rooms, studios, and apartments.31MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/osloer-industries/homeexchange-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server