OurFamilyWizard MCP
Hemnet MCP lets Claude search, inspect, and analyze Swedish real-estate listings on hemnet.se — for-sale and sold — plus run local Swedish mortgage math.
Resolve locations — turn a free-text place name (e.g. "Vasastan", "Malmö") into Hemnet location ids with
hemnet_autocomplete_location.Search for-sale listings — filter by location, price (SEK), rooms, living area (m²), property-type group (villa, lägenhet, radhus, fritidshus, tomt), keywords, with sorting and pagination (
hemnet_search_listings).Get full listing detail — price, monthly fee (avgift), running costs, m², rooms, tenure, build year, energy class, broker, description, coordinates, and gallery photos, by id or
/bostad/URL (hemnet_get_listing,hemnet_get_listing_photos).Search sold prices (slutpriser) — sold comps with final price, asking price, and over/under-asking %, plus full detail per sold listing (
hemnet_search_sold,hemnet_get_sold_listing).Compute market statistics — median/average final price, price-per-m², and average over/under-asking % for a location and filters (
hemnet_get_market_stats).Compare listings — fetch and normalise up to 20 active listings side-by-side, in input order, with per-row error capture (
hemnet_compare_listings).Resolve a street address — match free-text street + city to a live for-sale listing, returning match score and method (
hemnet_get_by_address).Calculate Swedish mortgage costs — local, no-network monthly cost with interest, amorteringskrav, BRF fee, operating cost, gross and after-tax totals (
hemnet_calculate_mortgage).Diagnose connectivity — healthcheck the Hemnet GraphQL endpoint and report transport (direct fetch vs. browser bridge), bridge role/port/extension-link state, and a classified error hint (
hemnet_healthcheck).
All tools are read-only; no configuration or API key is needed, though a browser-bridge extension may be required if Cloudflare blocks requests.
Click on "Deploy 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., "@OurFamilyWizard MCP What's on the kids' calendar this week?"
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.
Hemnet MCP
An MCP server for hemnet.se, Sweden's largest real-estate portal. Search for-sale listings, look up sold prices (slutpriser), pull full listing detail and photos, compute market statistics, resolve addresses, and run a Swedish mortgage calculation — all from Claude.
⚠️ This project is built and maintained by AI (Claude). It reads hemnet.se through its public GraphQL API. Use at your own discretion and within hemnet.se's terms of service.
Highlights
No configuration. Hemnet serves its read queries anonymously — no login, no API key.
npx hemnet-mcpjust works (a browser extension is only needed if Hemnet serves a Cloudflare challenge — see below).Sold prices (slutpriser). Hemnet's signature dataset: achieved final price, asking price, and over/under-asking percentage — the comps an agent needs to value a home.
Swedish-native. Money in SEK, areas in m², rooms,
bostadsrättfees (avgift), energy class, and a mortgage model that follows Swedish rules (amorteringskrav, ränteavdrag).Embeddable. Ships as a standalone MCP server and as a library so it can be composed into a larger multi-portal server.
Related MCP server: OurFamilyWizard MCP
Install
Claude Code / Claude Desktop (npx)
{
"mcpServers": {
"hemnet": {
"command": "npx",
"args": ["-y", "hemnet-mcp"]
}
}
}If Hemnet serves a Cloudflare challenge
Hemnet sometimes fronts its GraphQL API with a Cloudflare bot challenge.
When that happens the server switches (under the default
HEMNET_TRANSPORT=auto) to a browser bridge that sends the same anonymous
queries from a www.hemnet.se tab in your own browser — no Hemnet login
needed. That needs the ContextMint Bridge extension, installed from
its releases:
in Chrome, unzip the chrome zip and load it unpacked, then approve the
pairing prompt the first time. Safari isn't available yet (it will ship
inside the ContextMint app, which has no public download), so use Chrome
for now.
ContextMint Bridge is the fetchproxy browser extension under its new name,
from the same maintainer — fetchproxy's own README
(https://github.com/chrischall/fetchproxy#extension) points to it. Its source
is public at https://github.com/nullnet-app/contextmint-bridge: build it
yourself, or check a release zip against the .sha256 file published beside
it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).
From source
git clone https://github.com/chrischall/hemnet-mcp
cd hemnet-mcp
npm install
npm run build
node dist/index.jsTools
Tool | What it does |
| Resolve a place name ( |
| Search active for-sale listings by location + filters (price SEK, rooms, m², property type, keywords). |
| Full detail for one listing (price, fee, running costs, m², rooms, tenure, energy class, broker, description, photos). |
| Just the gallery photo URLs. |
| Search sold listings with final price, asking price, and over/under-asking %. |
| Full detail for one sold listing. |
| Median/average final price and price-per-m² for a location, over the most recent |
| Fetch several listings at once for side-by-side comparison. |
| Resolve a free-text street address to a live listing. |
| Local Swedish monthly-cost calculator (interest + amortisation + fee, gross & after-tax). No network. |
| Verify the Hemnet GraphQL endpoint is reachable. Reports which transport served the probe ( |
Example flow
1. hemnet_autocomplete_location { query: "Vasastan" }
→ location_id 925970
2. hemnet_search_listings { location_ids: ["925970"], rooms_min: 2, price_max: 6000000 }
→ listing summaries
3. hemnet_get_market_stats { location_ids: ["925970"], housing_form_groups: ["APARTMENTS"] }
→ median final price, price-per-m²
4. hemnet_calculate_mortgage { price: 4695000, interest_rate: 3.9, monthly_fee: 2800 }
→ monthly cost, gross and after-taxOr pass a free-text location to any search tool and it resolves the top
hit for you.
Money & units
All output records use numbers: price / final_price /
fee_monthly in SEK, living_area_sqm / land_area_sqm in m², rooms
as a number. A derived price_per_sqm is always included when price and
living area allow it (even when Hemnet omits it, common on houses). The
original Hemnet-formatted strings are kept alongside as *_formatted.
Library use
hemnet-mcp is also importable, so it can serve as a Hemnet portal source inside a larger project (e.g. a cross-portal realty orchestrator):
import { createHemnetClient, computeMarketStats } from 'hemnet-mcp';
const hemnet = createHemnetClient();
const { cards } = await hemnet.searchSales({ locationIds: ['925970'] }, { limit: 50 });
const stats = computeMarketStats(cards.map(formatSaleCard));The library entry (import … from 'hemnet-mcp') re-exports the client,
the normalised record types, the pure derivations
(computeMarketStats, calculateSwedishMortgage, money/url helpers),
and every tool registrar (registerHemnetTools(server, client) to graft
the tools onto your own MCP server).
Development
npm test # vitest (mocked transport, no network)
npm run test:coverage # 100% coverage enforced on src/**
npm run typecheck
npm run buildTests drive every tool and the client through an in-memory fake
transport — no live hemnet.se calls. See CLAUDE.md for architecture,
the GraphQL quirks, and contribution conventions.
License
MIT
Available Tools
11 toolshemnet_autocomplete_locationResolve a place name to Hemnet location idsARead-onlyIdempotent
Look up Hemnet location ids for a free-text place name (municipality, district, or area). Returns ranked hits with location_id, full_name, and parent_full_name. Feed a location_id into hemnet_search_listings / hemnet_search_sold. Read-only.
Inputs: query (required), limit.
hemnet_calculate_mortgageCalculate a Swedish monthly mortgage costARead-onlyIdempotent
Local-only Swedish mortgage calculator (all amounts SEK). Returns the monthly cost broken into interest, mandated amortisation (amorteringskrav from LTV, rules as of 1 April 2026), BRF fee (avgift), and operating cost — with both gross and after-tax (ränteavdrag) totals. Provide down_payment OR down_payment_percent (defaults to the legal 10% minimum). No network call.
Inputs: price (required), interest_rate (required), monthly_fee, down_payment, +4 more.
hemnet_compare_listingsCompare several Hemnet listingsARead-onlyIdempotent
Fetch and normalise multiple active for-sale Hemnet listings at once (by id or /bostad/ URL) for side-by-side comparison. Up to 20 targets; input order preserved; per-row errors captured. Read-only.
Inputs: ids (required).
hemnet_get_by_addressResolve a street address to a Hemnet listingARead-onlyIdempotent
Resolve a free-text Swedish street address to a live Hemnet for-sale listing. Give the address (street + number) and a location (city/area/municipality). Returns the matched listing with a matched: true, the match score, and matched_via, or { resolved: false } when nothing matches. Scans up to 500 listings in the location; a miss with truncated: true is not definitive — pass price_min/price_max or a smaller location to narrow it. Read-only.
Inputs: address (required), location (required), price_max, price_min.
hemnet_get_listingGet a Hemnet for-sale listing by id or URLARead-onlyIdempotent
Fetch the full detail of a single active for-sale listing by its Hemnet id or a /bostad/ URL. Returns price, monthly fee, yearly running costs, living/land area in m², rooms, tenure, construction year, energy class, broker, description, status labels, coordinates, and gallery photo URLs. For a SOLD listing use hemnet_get_sold_listing instead. Read-only.
Inputs: id (required), photo_limit.
hemnet_get_listing_photosGet photo URLs for a Hemnet listingARead-onlyIdempotent
Return the gallery photo URLs for an active for-sale Hemnet listing by id or /bostad/ URL. Read-only.
Inputs: id (required), limit.
hemnet_get_market_statsHemnet sold-price market statisticsARead-onlyIdempotent
Aggregate median/average statistics from recent SOLD listings for a location (and optional property-type/size filters): median & average final price, median & average price-per-m², and average over/under-asking percentage. The stats cover the most recent max_sales sales (default 200, max 500), not necessarily every match — compare sampled_sales with total_matching_sales. Provide location_ids or a free-text location. Read-only.
Inputs: sort, limit, offset, keywords, +10 more.
hemnet_get_sold_listingGet a Hemnet sold listing by id or URLARead-onlyIdempotent
Fetch the full detail of a single SOLD listing by its Hemnet id or a /salda/ URL. Returns final price, asking price, price change, m², rooms, tenure, broker, and coordinates. Read-only.
Inputs: id (required).
hemnet_healthcheckVerify the ContextMint Bridge connection end-to-endARead-onlyIdempotent
Round-trips a small public www.hemnet.se URL (/graphql) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real www.hemnet.se-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.
Inputs: no named parameters.
hemnet_search_listingsSearch Hemnet for-sale listingsARead-onlyIdempotent
Search active for-sale property listings on hemnet.se by location and optional filters (price band in SEK, rooms, living area in m², property-type groups, keywords). Returns listing summaries with price, fee, m², rooms, price-per-m², and coordinates. Provide location_ids (from hemnet_autocomplete_location) or a free-text location. Read-only.
Inputs: sort, limit, offset, keywords, +9 more.
hemnet_search_soldSearch Hemnet sold listings (slutpriser)ARead-onlyIdempotent
Search SOLD property listings ("slutpriser") on hemnet.se by location and optional filters. Each result carries the achieved final price, the asking price, and the over/under-asking percentage — the core comps signal for valuation. Provide location_ids (from hemnet_autocomplete_location) or a free-text location. Read-only.
Inputs: sort, limit, offset, keywords, +9 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Tools are cleanly separated by resource and action: get_listing vs get_sold_listing, search_listings vs search_sold, plus distinct utilities like compare, mortgage, healthcheck. No overlapping purposes.
Consistent snake_case with hemnet_ prefix and verb_noun pattern throughout (get_*, search_*, autocomplete_*, calculate_*, healthcheck). Predictable and readable.
11 tools is well-scoped for a real-estate data server covering search, detail, sold comps, comparison, address resolution, calculator, and diagnostics.
Complete read-only real-estate lifecycle: search/list/sold/stats/compare/mortgage/healthcheck. Minor gaps like saved searches, broker contact, or listing alerts, but core workflows are fully covered.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
Official Fibery MCP server: query and update your workspace from any AI client via OAuth.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that integrates Google Calendar with Claude Desktop, enabling users to manage calendar events (view, create, update, delete) through natural language.590 npm59MIT
- AlicenseAqualityAmaintenanceConnects Claude to OurFamilyWizard for natural-language access to co-parenting messages, calendar, expenses, and journal.10298 npmMIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude (or any MCP client) to read and write Clio Manage data—contacts, matters, activities—directly from chat, with flat-fee billing support in one call.-
- AlicenseAqualityAmaintenanceA Model Context Protocol server that connects Claude to OurFamilyWizard, giving you natural-language access to your co-parenting messages, calendar, expenses, and journal.302,283 npm15MIT