<div align="center">
๐ 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.
</div>
---
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"
14 tools across two categories:
| Category | Tools | |----------|-------| | ๐ Search & discovery | search_homes ยท get_home ยท get_home_calendar ยท get_recommendations ยท list_my_homes ยท list_favorites ยท add_favorite ยท remove_favorite ยท list_saved_searches ยท get_user_profile | | ๐ฌ Messaging | list_conversations ยท get_conversation ยท send_message ยท start_conversation |
---
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 & discovery messaging
(10 tools) (4 tools)
โ โ
โโโโโโโโโโโฌโโโโโโโโโโโโโ
โ
api.homeexchange.com
bff.homeexchange.com
Auth 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 chromium
2. Capture your session
npm run login
A 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.
3. Start the MCP server
npm run mcp
---
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.ts
Cursor
~/.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 | |-----------|------|----------|---------|-------------| | location | string | No | โ | City, region, or country | | checkin | string | No | โ | YYYY-MM-DD | | checkout | string | No | โ | YYYY-MM-DD | | guests | number | No | โ | Number of guests | | exchange_type | string | No | โ | GuestPoints ยท simultaneous ยท non_simultaneous | | home_type | string | No | โ | house ยท apartment ยท other | | limit | number | No | 20 | Results per page (max 36) | | offset | number | No | 0 | Pagination offset |
get_home
Full details for a listing.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | home_id | string | Yes | Numeric home ID |
get_home_calendar
Availability calendar โ blocked and open dates for a home.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | home_id | string | Yes | Numeric home ID |
get_recommendations
Personalised picks based on your profile and history.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | limit | number | No | 8 | Number of results |
list_my_homes
Your own listings. No parameters.
list_favorites
Your saved homes.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | limit | number | No | 20 | Number of results |
add_favorite
Save a home to your favourites.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | home_id | string | Yes | Home ID |
remove_favorite
Remove a home from your favourites.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | home_id | string | Yes | Home ID |
list_saved_searches
Your saved search filters.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | limit | number | No | 100 | Number of results |
get_user_profile
A member's public profile.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | user_id | string | Yes | Numeric user ID |
---
๐ฌ Messaging
list_conversations
Your conversation inbox.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | filter | string | No | ALL | ALL ยท UNANSWERED ยท ARCHIVED | | limit | number | No | 20 | Threads to return | | after | string | No | โ | Pagination cursor from previous response |
get_conversation
All messages in a thread.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | conversation_id | string | Yes | Conversation ID |
send_message
Reply in an existing conversation.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | conversation_id | string | Yes | Conversation ID | | text | string | Yes | Message text |
start_conversation
Open a new conversation about a home.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | home_id | string | Yes | The home you're enquiring about | | text | string | Yes | Opening message |
---
Scripts
| Script | Description | |--------|-------------| | npm run login | Capture auth session via browser โ start here | | npm run mcp | Start the local MCP server | | npm run record | Full network recorder with HAR capture (API exploration) | | npm run analyze | Analyze a .har file โ api-map.json | | npm run build | Compile TypeScript | | npm run check | Typecheck + lint |
---
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 10 search & discovery tools
messaging.ts 4 messaging tools
---
Roadmap
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
main - Make your changes โ keep commits conventional (
fix:,feat:,chore:etc.) - Open a pull request โ CI must 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.
---
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.






