About booli-mcp
booli-mcp is an MCP server for querying Swedish property listings and market data from Booli. It provides read-only searches and statistics, using a signed-in Booli browser session through ContextMint Bridge when direct access is blocked.
Key features
- 01Search active property listings
- 02Look up sold listings and prices
- 03Resolve place names to area IDs
- 04Get property details and market statistics
- 05Check data access and bridge status
Use cases
- 01Find homes for sale in a specified area
- 02Compare sold prices and area-level statistics
- 03Retrieve details for a particular property
MCP support
Exposes Booli area, listing, sold-price, property-detail, market-statistics, and health-check tools to MCP clients. Queries can use direct access or route through ContextMint Bridge using a signed-in Booli browser tab.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @chrischall/booli-mcpBOOLI_TRANSPORTSelects the path: auto (default — direct fetch first, browser-bridge fallback when walled), fetchproxy (always the bridge), or direct.BOOLI_WS_PORTOverride the fetchproxy WebSocket port (the fleet shares 37149).FETCHPROXY_WS_HOSTBridge bind interface, a literal IP only (default 127.0.0.1). Keep on loopback; exists for a hosted child in its own network namespace.FETCHPROXY_IDENTITY_DIRAbsolute path for the long-term bridge identity keypair (default ~/.fetchproxy/identity/). Exists for a host that runs a separate child per caller.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
6Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | Max results (default 10). |
| query | string | Yes | Place-name search string (e.g. "Nacka", "Södermalm"). |
Details
From the project READMEbooli-mcp
An MCP server for Booli, the Swedish property portal — search active for-sale listings, sold prices (slutpriser), resolve areas, and compute market statistics, all from Claude.
Developed and maintained by AI (Claude Code). Use at your own discretion and within booli.se's terms of use.
How it works
Booli fronts www.booli.se — including its GraphQL API — with a Cloudflare bot wall that blocks server-side clients. booli-mcp therefore reads Booli's consumer GraphQL API by routing each query through your own signed-in www.booli.se browser tab via the fetchproxy bridge (the ContextMint Bridge browser extension), reusing your Cloudflare-cleared session. No Booli login is required — just a normal page view. All tools are read-only.
BOOLI_TRANSPORT selects the path: auto (default — direct fetch first,
browser-bridge fallback when walled), fetchproxy (always the bridge), or
direct. The fetchproxy fleet shares WS port 37149 (BOOLI_WS_PORT).
Setup
-
Install ContextMint Bridge from its releases page — Chrome: download the chrome zip, unzip it, and load it unpacked at
chrome://extensions(Developer mode). Safari isn't available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now. Keep a www.booli.se tab open.ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the
.sha256file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256). -
On the first request, approve the one-time pairing prompt in ContextMint Bridge.
-
Run
booli_healthcheckto confirm the path is working. Itstransportfield says which leg served the probe (directorfetchproxy) and, once the bridge exists,bridge.session_statesays whether the extension islinked,pair_pending(approve the pair code it names), orextension_disconnected.
Install
// mcp config
{
"mcpServers": {
"booli": {
"command": "npx",
"args": ["-y", "@chrischall/booli-mcp"]
}
}
}
Tools
| Tool | What it does |
|---|---|
booli_search_areas | Resolve a place name to Booli area ids |
booli_search_listings | Search active for-sale listings by area + filters |
booli_get_listing | Full detail for one property (active or sold) by residence id |
booli_search_sold | Search sold listings (slutpriser) with final prices |
booli_market_stats | Median/average sold-price statistics for an area |
booli_healthcheck | Probe the data path and report transport (direct / fetchproxy, the BOOLI_TRANSPORT mode) and, once the bridge is up, bridge (role, port, extension link session_state, pending pair code) with a next-step hint |
Searches scope by area_id (from booli_search_areas) or a free-text
location. Money is SEK, areas m². See
docs/BOOLI-API.md for the underlying GraphQL API.
Development
npm install
npm test # vitest, no network
npm run build # tsc + esbuild bundle
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.