OneGoodArea
Official@oga-mcp/server
OneGoodArea is the intelligence layer for place: sourced, dated facts, explained scores, change monitoring and typed queries for every neighbourhood in Great Britain, served by one API with the methodology version on every response.
This package is one way to deliver it. It puts the same API inside Claude Desktop, Cursor, Claude Code, Windsurf or any MCP-compatible client: resolve any postcode, name or code to a permanent place id, score a place for one of four presets, read the signals catalog, ask in natural language, find peers, watch portfolios for material change and generate audience-shaped briefs. Every answer is composed on the server from the engine. No client-side prose synthesis: every line of output cites real engine state.
Data policy
Training-data capture is off by default. Nothing you ask through this server is used to improve OneGoodArea's own models unless you switch capture on for a key.
What capture would store, if you opt in: natural-language questions to
find_areas, and fullscore_postcoderequests and responses when explain is on. Operational logs (which tool was called, when, by whom) are kept either way.How to opt in or out: sign in at https://www.onegoodarea.com/api-usage and use the "Training" switch next to any of your keys. It takes effect on the next request from any client using that key.
Where the state is shown: on every start this server logs
[oga-mcp] Training-data capture: OFF | ONfor the key in use.Retention: captured data is purged automatically after 365 days.
Full policy: https://www.onegoodarea.com/legal/data-policy
Related MCP server: PlaceScout
Install
Two ways to connect, same twelve tools, same key.
Hosted endpoint, nothing to install
The API serves the tools itself at https://api.onegoodarea.com/mcp (Streamable HTTP). Nothing runs on your machine.
Sign in, no key to copy
In Claude (web and apps): Settings, Connectors, Add custom connector. Name it OneGoodArea, paste https://api.onegoodarea.com/mcp, keep the detected defaults and connect. Sign in to OneGoodArea, click Allow access, and the tools are in your next chat.
In Claude Code:
claude mcp add --transport http onegoodarea https://api.onegoodarea.com/mcpthen type /mcp, pick onegoodarea and choose Authenticate. Your browser opens the same sign-in.
Approving creates an API key named after the app in your account (for example "Claude connector"). It carries your plan and allowance like any other key, and revoking it from your dashboard disconnects the app. Any client that supports MCP sign-in (OAuth) works the same way from the URL alone.
Or send your API key in a header
Claude Code:
claude mcp add --transport http onegoodarea https://api.onegoodarea.com/mcp --header "Authorization: Bearer oga_xxx"Cursor, in .cursor/mcp.json:
{
"mcpServers": {
"onegoodarea": {
"url": "https://api.onegoodarea.com/mcp",
"headers": { "Authorization": "Bearer oga_xxx" }
}
}
}Any other client: point its remote MCP server setting at the URL above and add the header. Each tool call is metered exactly like a direct API call under your key. ChatGPT follows once the server is listed in the OpenAI apps directory.
Local package
The server is also an npm package your client spawns with npx. It is listed in the official MCP Registry as com.onegoodarea/oga-mcp; clients that install from the registry can add it by that name. Everything else uses one of the config blocks below.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"onegoodarea": {
"command": "npx",
"args": ["-y", "@oga-mcp/server"],
"env": {
"OOGA_API_KEY": "oga_xxx"
}
}
}
}Restart Claude Desktop. The OneGoodArea tools appear when you start a conversation about a UK location.
Cursor
Add to .cursor/mcp.json in your project (or global config):
{
"mcpServers": {
"onegoodarea": {
"command": "npx",
"args": ["-y", "@oga-mcp/server"],
"env": { "OOGA_API_KEY": "oga_xxx" }
}
}
}Claude Code (CLI)
One command:
claude mcp add onegoodarea -e OOGA_API_KEY=oga_xxx -- npx -y @oga-mcp/serverClaude plugin
The plugin/ folder is a Claude plugin: the hosted connector plus four skills that teach Claude how to use the tools well (area research for lenders, site comparison for retail, reading confidence and dates, portfolio watch). Once it is listed in the Claude directory, installing the plugin connects you with a sign-in. To try it before then, run claude --plugin-dir ./plugin from a checkout of this repository. Details in plugin/README.md.
Get an API key
Sign up at https://www.onegoodarea.com/sign-up.
Create an API key; it starts with
oga_.Paste it after
Bearerin the hosted header, or into theOOGA_API_KEYenv var for the local package. If your client signs in instead, skip this: the key is created for you when you allow access.
Tools
Twelve tools across seven surfaces. Every response is composed server-side from the deterministic engine, with no client-side prose synthesis.
Places
resolve_place(query): Resolve a place
One input, the permanent place it names. Accepts a postcode, a place name, an official neighbourhood code or an oga_pl_ place id and returns the id, type, name, country and nation, how it resolved, and for a postcode whether it is live or retired. A retired postcode still resolves to the neighbourhood it was in, with the month it was retired. Several matches come back as candidates with their ids; nothing comes back with the reason.
Scores
score_postcode(area, preset): Score a place for a decision
Score a UK postcode or place name for a preset (moving, business, investing, research). Returns the 0-100 score, seven weighted dimensions with engine-grounded reasoning + confidence, a one-paragraph summary, recommendations, and data sources.
compare_postcodes(areas, preset): Compare places side by side
Score 2-8 areas side-by-side for the same preset. Returns a sorted comparison table with per-area summaries. Partial failures surface inline.
Signals
get_area_signals(area): All signals for a place
Full signals catalog across all seven categories (crime, deprivation, property, schools, amenities, transport, environment). Each signal carries value + unit, percentile when store-backed, confidence with engine-grounded reason, source attribution, and observation period.
get_signals_by_category(area, category): Signals in one category
Same shape as get_area_signals, narrowed to one category. Use when the LLM needs to focus on a single data domain.
Intelligence
find_areas(question): Ask a question about places
Ask in natural language. The planner translates the question into a typed plan (one of seven ops: rank_areas, get_area, score_area, compare_areas, find_peers, find_insights, find_forecast); the database executes it. The response returns the emitted plan + results, so every answer carries the query that produced it and can be run again.
find_peers(area, k?): Find similar neighbourhoods
k-nearest-neighbour peers for a UK area by normalised signal values. Returns the target's geo_code, the signal dimensions used in the comparison, and a ranked peers list with distance (0 = identical, 1 = maximally distant) and n_dims_used.
Monitor
watch_portfolio(name, areas): Watch a portfolio of places
One-shot setup: creates a tracked portfolio and adds areas. Returns the new portfolio_id and the area list. If the add step fails after the create, the response surfaces the partial state so the LLM can act.
get_portfolio_changes(portfolio_id, threshold_pct?, baseline?, min_transactions?): Material changes in a portfolio
Check a portfolio for material signal changes between two time-series periods. Returns scope, counts, and a per-area table of material moves with direction, from/to values, delta, and percent change. Probe calls don't fire customer webhooks.
Brief
area_brief(area, audience): Brief on a place for an audience
One audience-shaped advisory document per area. Audience ∈ {lender, insurer, retailer, investor}. Composes the full signals catalog with the audience's scoring preset (with explain mode), then renders an audience-specific brief: overall verdict, audience-relevant dimensions, audience-relevant signals with provenance, recommendations, and data sources.
Reference
methodology_for(dimension): Methodology for a scoring dimension
Methodology for any scoring dimension: data source, scoring function summary, per-preset weights. Static lookup: no network, no quota cost.
engine_version(): Engine version and releases
Current engine version and the most recent methodology releases, read live from the API. The live engine version is also stamped on every score_postcode and get_area_signals response.
Pricing
The MCP server is free. API calls go through your OneGoodArea plan; current tiers and any MCP-specific terms live at https://www.onegoodarea.com/pricing.
Development
cd mcp
npm install
npm run dev # run via tsx, reads OOGA_API_KEY from env
npm test # vitest
npm run build # tsc to dist/Override the API base for local dev against the standalone API server:
OOGA_API_BASE=http://localhost:4000 OOGA_API_KEY=oga_dev npm run devSource
The source lives at https://github.com/OneGoodArea/oga-mcp, a read-only mirror of the mcp/ folder in OneGoodArea's monorepo, updated on every change. Open issues there. Code changes are made upstream and arrive with the next sync.
License
MIT. © 2026 OneGoodArea. Full text in LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
UK area & property intelligence for AI agents: reports, EPC, comparables, with source provenance.
UK property research tools - crime stats, schools, demographics, valuations for AI.
- geoOAuthco.thinair
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
Evidence-backed opportunity intelligence for small businesses, built for authorised AI agents.
Related MCP Servers
- -licenseNot gradedqualityCmaintenanceProvides real-time London area intelligence including postcode data, crime, schools, transport, and investment metrics, enabling AI assistants to answer property-related queries.-
- FlicenseNot gradedqualityDmaintenanceTurns open places data into AI-assisted local market intelligence, enabling search of 4.4 million UK places by category, location, and proximity, and saving promising results to a prospecting pipeline.-
- AlicenseAqualityCmaintenanceUK planning application data for AI agents. Search, look up, and geo-query every UK planning application from Claude, Cursor, or any MCP client — conversationally.426 npmMIT
- AlicenseAqualityAmaintenanceUK property area intelligence: validated trajectory scores, gentrification early-warning and area screening for 2,292 England & Wales postcode districts, from 30+ government data sources.7MIT