Skip to main content
Glama
README.md
<!-- mcp-name: io.github.mohamadreza-rezaei/shab-mcp -->

# shab-mcp

Unofficial **read-only** [MCP](https://modelcontextprotocol.io/) server for [Shab](https://www.shab.ir), Iran's short-term rental marketplace.

Search destinations and stays, inspect photos and reviews, and get a Toman price quote. Nothing here can log in, book or pay — tools return a `listing_url` so the user finishes on shab.ir.

## Install

You need [uv](https://docs.astral.sh/uv/).

```bash
uvx shab-mcp
```

### Claude Code

```bash
claude mcp add shab -- uvx shab-mcp
```

### Cursor / VS Code

```json
{
  "mcpServers": {
    "shab": {
      "command": "uvx",
      "args": ["shab-mcp"]
    }
  }
}
```

Optional: set `SHAB_MCP_PROXY` to an HTTP(S) proxy (system proxy env vars are ignored).

## Tools

| Tool | Purpose |
|------|---------|
| `sh_search_destinations` | Resolve a Persian place name |
| `sh_list_search_filters` | Amenity codes for search |
| `sh_search_accommodations` | Search stays (Toman prices) |
| `sh_get_accommodation` | Stay details + `listing_url` |
| `sh_get_accommodation_photos` | Photo URLs |
| `sh_get_accommodation_reviews` | Guest reviews (untrusted text) |
| `sh_list_neighbourhoods` | Neighbourhoods by city |
| `sh_get_similar_accommodations` | Similar stays |
| `sh_count_accommodations` | Count matches |
| `sh_get_landing_tehran` | Tehran landing filters |
| `sh_check_availability` | Free nights + price quote |
| `sh_listing_url` | Public booking page URL |

Dates are Gregorian `YYYY-MM-DD`. Prices are **Toman**.

## Develop

```bash
uv sync --group dev
uv run ruff check .
uv run pytest -q
```

Live API tests (optional): `uv run pytest -m live -q`.

## License

MIT. Shab and shab.ir are trademarks of their owners; used here for identification only.

TDQS

B3.2/5.0

Scored across 12 tools

Disambiguation4/5

Each tool maps to a distinct resource or action: search vs. count vs. get detail vs. photos vs. reviews vs. similar vs. availability vs. booking URL. The only mild overlap is between sh_list_search_filters and sh_get_landing_tehran, which both surface filter/category metadata, and sh_count_accommodations vs sh_search_accommodations share filters but differ clearly in output.

Naming Consistency4/5

All tools share a consistent `sh_` prefix and follow a verb_noun pattern (list_, get_, search_, count_, check_). Minor deviations: `sh_listing_url` is a noun-only name rather than an action, and `sh_get_landing_tehran` embeds a specific city, which breaks the otherwise generic pattern.

Tool Count5/5

Twelve tools is well within the sweet spot, and each earns its place by covering a distinct step of the stay-search flow (resolve destination → filter/discover → search/count → detail/photos/reviews/similar → availability → booking link). No redundant or filler tools are present.

Completeness4/5

The surface covers the full discovery-to-booking-handoff lifecycle, including search, detail sub-resources, availability quoting, and the external booking URL; booking itself is intentionally delegated to shab.ir. Minor gaps: no geo/coordinate or map data, and the landing/category tool is hardcoded to Tehran, so other cities rely solely on sh_search_destinations.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues