MCP 서버

UK Property Data

io.github.paulieb89/property-shared
비즈니스 및 운영 부동산 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Provides UK property listings, comparable sales, EPC records, rental analysis, yields, planning links, Companies House searches, and stamp duty calculations.

company_search
Search Companies House for a company by name.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
epc_certificate
Fetch a single EPC certificate by its GOV.UK certificate number. Use after property_epc_summaries has listed the candidates and you have picked one — this is faster than property_epc(postcode, address) as it makes a direct lookup with no address matching or postcode re-fetch. The parameter is named lmk_key as a compatibility alias; pass the certificate number, which is returned in every property_epc_summaries row. (property_epc_search is deprecated and raises — do not call it.) Returns the full EPC certificate, or null only when no such certificate is lodged. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['lmk_key'], 'properties': {'lmk_key': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}]}}, 'x-fastmcp-wrap-result': True}
planning_search
Find the council planning portal URL for a postcode.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'postcode': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
ppd_transactions
Land Registry Price Paid transactions for a postcode, most recent first. Returns up to `limit` most recent transactions **within snapshot coverage** (`coverage_from`-`coverage_to` in the response's `provenance`). Unfiltered by default -- category-B bulk transfers and commercial sales are included. Pass `property_type` (F=flat, D=detached, S=semi, T=terraced, O=other) to restrict the result to a single type. **Not a complete property history.** Check `provenance.older_records_exist` and `provenance.sample_complete` before saying anything about what a property has or has not sold for. An empty result means "no sales within the stated coverage" -- never "never sold". For clean residential comparable sales, use `property_comps`.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'limit': {'type': 'integer', 'default': 10}, 'postcode': {'type': 'string'}, 'property_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
property_blocks
Property block analysis — identify buildings with multiple flat sales (block-buy opportunities).
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'months': {'type': 'integer', 'default': 24, 'minimum': 1, 'description': 'Number of calendar months ending today; default 24. Results are limited to available coverage.'}, 'postcode': {'type': 'string'}, 'search_level': {'type': 'string', 'default': 'sector'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
property_comps
Comparable sales from Land Registry Price Paid Data. Defaults return the standard residential set: - property_type=None means residential (F+D+S+T). Pass "F"/"D"/"S"/"T"/"O" for a single type, or "ALL" to disable type filtering (firehose). - transaction_category defaults to "A" (standard sales). Pass None to include category-B (bulk transfers, non-standard conveyances). - filter_outliers=False by default; set True for IQR-trimmed stats AND transaction list (1.5*IQR rule, needs >=4 prices). limit caps returned transactions (max 200). enrich_epc attaches EPC floor area and price-per-sqft to each transaction — slower but richer.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'limit': {'type': 'integer', 'default': 50}, 'months': {'type': 'integer', 'default': 24, 'minimum': 1, 'description': 'Number of calendar months ending today; default 24. Results are limited to available coverage.'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'postcode': {'type': 'string'}, 'enrich_epc': {'type': 'boolean', 'default': False}, 'search_level': {'type': 'string', 'default': 'sector'}, 'property_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'filter_outliers': {'type': 'boolean', 'default': False}, 'transaction_category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': 'A'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
property_epc
Energy Performance Certificate data for a UK property or postcode area. With address: returns the matched EPC certificate for that specific property. Without address: returns the record count and, when the bounded response contains every matching summary, the rating distribution. Property-type breakdown and floor-area statistics are NOT available — the EPC service exposes them only on individual certificates. Returns null only when no certificates are lodged for the postcode. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'postcode': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}]}}, 'x-fastmcp-wrap-result': True}
property_epc_search
DEPRECATED — use property_epc_summaries then epc_certificate. This tool returned score, floor_area, property_type, habitable_rooms and inspection_date for every certificate at a postcode. The EPC service no longer exposes those fields in a search: they exist only on a full certificate. Reproducing the old response would require one upstream request per certificate, so this tool is unsupported rather than silently degraded or silently expensive.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'postcode': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}]}}, 'x-fastmcp-wrap-result': True}
property_epc_summaries
List EPC certificate summaries at a postcode — for candidate selection. Returns one bounded page. Each entry contains only what the EPC search exposes: certificate_number, address, uprn (often absent), energy band, registration_date and schema_type. Energy score, floor area and property type are NOT available here — fetch a specific certificate for those. Workflow when a Rightmove listing has no house number: 1. property_epc_summaries(postcode) to list candidates. 2. Narrow by address text and, where present, uprn. 3. epc_certificate(lmk_key=<certificate_number>) for the chosen one, then cross-check its floor_area against the listing. 4. If several candidates remain equally plausible, present them all — do not guess. Selecting arbitrarily attaches another property's data. `complete` is false when the postcode holds more records than this page returns. Upstream page traversal is not snapshot-stable, so a multi-page result is a bounded sample, not a guaranteed-complete set. An empty `results` list means no certificates are lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'page': {'type': 'integer', 'default': 1}, 'postcode': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
property_yield
Gross rental yield for a UK postcode. Combines Land Registry sale comps (median sale price) with Rightmove rental listings (median monthly rent) to produce a gross yield percentage.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'months': {'type': 'integer', 'default': 24, 'minimum': 1, 'description': 'Number of calendar months ending today; default 24. Results are limited to available coverage.'}, 'postcode': {'type': 'string', 'description': 'UK postcode (e.g. "NG1 2NS").'}, 'search_level': {'type': 'string', 'default': 'sector', 'description': 'PPD search granularity — "postcode", "sector" (default),\nor "district".'}, 'auto_escalate': {'type': 'boolean', 'default': True, 'description': 'Compatibility parameter. Does NOT widen the search area on\nthe live source (see `warnings`); previously postcode→\nsector→district. Default True. Set False for strict-locality only.'}, 'property_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter sales by type. None (default) = residential set\n(F+D+S+T). Pass "F"/"D"/"S"/"T"/"O" for one type, "ALL" for firehose.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
rental_analysis
Rental market analysis and achievable rent estimate. auto_escalate widens the Rightmove search RADIUS when fewer than 5 listings are found (thin market). This is rental-radius escalation and is unaffected by the PPD geography containment: it does not change a postcode's outcode or sector, so it carries none of the limit-dependence that disabled PPD auto-widening. Response includes thin_market, escalated_from, escalated_to fields when escalation occurs.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'radius': {'type': 'number', 'default': 0.5}, 'postcode': {'type': 'string'}, 'auto_escalate': {'type': 'boolean', 'default': True}, 'purchase_price': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
rightmove_listing
Full detail for a single Rightmove listing. property_id is the numeric Rightmove property ID (the digits at the end of a rightmove.co.uk/properties/... URL), max 12 digits. Full URLs are not accepted. include_images fetches and embeds photos and floorplans as MCP image content. max_images caps the number of property photos (default 3); floorplans always included.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['property_id'], 'properties': {'max_images': {'type': 'integer', 'default': 3}, 'property_id': {'type': 'string'}, 'include_images': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
rightmove_search
Fetch Rightmove listings for a postcode. listing_type: "sale" or "rent". sort_by: "newest", "most_reduced", "price_asc", "price_desc". Images are excluded from results.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['postcode'], 'properties': {'radius': {'type': 'number', 'default': 0.5}, 'sort_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'postcode': {'type': 'string'}, 'max_pages': {'type': 'integer', 'default': 3}, 'max_price': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None}, 'listing_type': {'type': 'string', 'default': 'sale'}, 'min_bedrooms': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None}, 'property_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}}, 'x-fastmcp-wrap-result': True}
stamp_duty
UK Stamp Duty Land Tax (SDLT) calculation with full breakdown.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['price'], 'properties': {'price': {'type': 'integer'}, 'non_resident': {'type': 'boolean', 'default': False}, 'first_time_buyer': {'type': 'boolean', 'default': False}, 'additional_property': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'additionalProperties': True}
추가됨
ppd_transactions
2026년 9월 17일 12:45 PM
추가됨
planning_search
2026년 9월 17일 12:45 PM
추가됨
company_search
2026년 9월 17일 12:45 PM
추가됨
property_blocks
2026년 9월 17일 12:45 PM
추가됨
rightmove_listing
2026년 9월 17일 12:45 PM
추가됨
rightmove_search
2026년 9월 17일 12:45 PM
추가됨
stamp_duty
2026년 9월 17일 12:45 PM
추가됨
epc_certificate
2026년 9월 17일 12:45 PM
추가됨
property_epc_summaries
2026년 9월 17일 12:45 PM
추가됨
property_epc_search
2026년 9월 17일 12:45 PM
추가됨
property_epc
2026년 9월 17일 12:45 PM
추가됨
rental_analysis
2026년 9월 17일 12:45 PM
추가됨
property_yield
2026년 9월 17일 12:45 PM
추가됨
property_comps
2026년 9월 17일 12:45 PM