chuk-mcp-her
OfficialIntegration with ArcGIS REST APIs to query Historic Environment Records, including listed buildings, scheduled monuments, conservation areas, heritage at risk, and Scottish heritage data.
Click on "Install 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., "@chuk-mcp-hersearch for listed buildings near Manchester"
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.
chuk-mcp-her
Historic Environment Records MCP Server -- A Model Context Protocol (MCP) server for querying Historic Environment Records across England and Scotland. Searches listed buildings, scheduled monuments, registered parks, battlefields, protected wrecks, and World Heritage Sites via live ArcGIS REST APIs from Historic England and Historic Environment Scotland.
This is a demonstration project provided as-is for learning and testing purposes.
Features
This MCP server provides structured access to Historic Environment Records through 28 tools across 10 categories, querying 6 data sources via live ArcGIS REST APIs and Heritage Gateway web scraping.
Key capabilities:
Source registry pattern -- pluggable adapters for NHLE, AIM, Conservation Areas, Heritage at Risk, Heritage Gateway, and Scotland (HES) with unified query interface
England + Scotland coverage -- English heritage via Historic England, Scottish heritage via Historic Environment Scotland (320,000+ NRHE records + designated assets)
Spatial-first queries -- bounding box, point+radius, and area searches via ArcGIS Feature/Map Services
BNG/WGS84 coordinate support -- automatic conversion between British National Grid (EPSG:27700) and WGS84 (EPSG:4326)
Interactive map views --
her_mapandher_crossref_mapreturn structuredMapContentfor rendering in chuk-mcp-ui-compatible clientsAll tools return fully-typed Pydantic v2 models for type safety, validation, and excellent IDE support
Most tools support
output_mode="text"for human-readable output alongside the default JSON
1. Server Discovery (her_status, her_list_sources, her_capabilities)
Check server health, list registered data sources, and get full capabilities:
Source availability and status
Supported query types per source
LLM guidance for query planning
2. NHLE Queries (her_search_monuments, her_get_monument, her_search_listed_buildings, her_search_designations, her_count_features)
Search the National Heritage List for England:
Scheduled monuments by location, name, or description
Listed buildings with grade filtering (I, II*, II)
Generic designation search across all 6 designation types
Fast feature counts without fetching full records
Pagination with offset-based paging
3. Aerial Mapping (her_search_aerial, her_count_aerial, her_get_aerial_feature)
Search aerial investigation mapping data:
Archaeological features from aerial photographs and LiDAR
Cropmarks, earthworks, and features not in the NHLE
Monument type and period filtering
Fast feature counts without fetching full records
Full details for individual aerial mapping features
4. Conservation Areas (her_search_conservation_areas, her_count_conservation_areas, her_get_conservation_area)
Search Historic England's 8,000+ conservation areas:
Search by name, Local Planning Authority, or location
Bounding box and point+radius spatial queries
Fast counts without fetching full records
Full details including designation date and area
5. Heritage at Risk (her_search_heritage_at_risk, her_count_heritage_at_risk, her_get_heritage_at_risk)
Search the Heritage at Risk Register:
Annual register of heritage assets at risk of loss
Filter by heritage category (Listed Building, Scheduled Monument, etc.)
Spatial search by bounding box or point+radius
Risk methodology details for each entry
6. Heritage Gateway (her_search_heritage_gateway)
Search local Historic Environment Records via Heritage Gateway:
Best-effort access to 60+ local HERs via web scraping
Undesignated sites, findspots, and HER monument entries
Returns empty results gracefully when Gateway unavailable
7. Scotland (her_search_scotland, her_get_scotland_record, her_search_scotland_designations)
Search Historic Environment Scotland records:
320,000+ National Record of the Historic Environment (NRHE) records via Canmore Points
Designated assets: listed buildings, scheduled monuments, gardens and designed landscapes, battlefields, world heritage sites, conservation areas, historic marine protected areas
Site type, broad class, and council area filtering
Full details for individual records by Canmore ID
8. Cross-Referencing (her_cross_reference, her_enrich_gateway, her_nearby)
Spatial matching, enrichment, and proximity search:
Cross-reference candidate locations against known heritage assets
Classify candidates as match, near, or novel
Grid-based spatial indexing for efficient batch processing (O(n+m) amortised)
Optional AIM aerial feature integration (
include_aimparameter)Designation type filtering (single type or comma-separated)
Enriched match output with 11 fields per asset (source, grade, monument_type, period, form, evidence)
Enrich Gateway records with resolved BNG coordinates for cross-referencing
Find nearby heritage assets with distance and bearing
Accepts both WGS84 and BNG coordinates
9. Export (her_export_geojson, her_export_for_lidar)
Export and format results:
GeoJSON FeatureCollection for QGIS, Leaflet, or other GIS tools
LiDAR cross-reference format with enriched metadata per source:
NHLE sites with grade
AIM aerial features with monument_type, period, form, evidence
Gateway sites with monument_type and period
Optional AIM integration (
include_aim) and Gateway sites (gateway_sites) for LiDAR export
10. Map Visualisation (her_map, her_crossref_map)
Interactive heritage maps rendered as structured MapContent for chuk-mcp-ui clients:
her_map-- queries up to five sources in parallel (NHLE, AIM, Conservation Areas, Heritage at Risk, Scotland) and renders each as a distinctly colour-coded layer; NHLE results are split by designation type for visual separationher_crossref_map-- runs the same analysis asher_cross_referencethen renders four colour-coded layers: green (match), amber (near), red (novel/potential new discovery), grey (known assets)Marker clustering, popup templates, and layer toggle controls
Accepts WGS84 bbox or lat/lon/radius_m; BNG candidates for crossref map
Related MCP server: Edinburgh Festivals MCP Server
Tool Reference
All tools accept an optional output_mode parameter ("json" default, or "text" for human-readable output).
Tool | Category | Description | Status |
| Discovery | Server health and source availability | Active |
| Discovery | List registered data sources with capabilities | Active |
| Discovery | Full server capability listing for LLM planning | Active |
| NHLE | Search scheduled monuments by location or name | Active |
| NHLE | Get full details for a specific monument | Active |
| NHLE | Search listed buildings with grade filter | Active |
| NHLE | Search across all designation types | Active |
| NHLE | Fast count of features in an area | Active |
| Aerial | Search aerial investigation mapping data | Active |
| Aerial | Count aerial mapping features in an area | Active |
| Aerial | Get full details of an aerial mapping feature | Active |
| Conservation | Search conservation areas by name, LPA, or location | Active |
| Conservation | Count conservation areas in an area | Active |
| Conservation | Get full details of a conservation area | Active |
| At Risk | Search heritage at risk register entries | Active |
| At Risk | Count heritage at risk entries in an area | Active |
| At Risk | Get full details of a heritage at risk entry | Active |
| Gateway | Search local HER data via Heritage Gateway | Active |
| Scotland | Search Scottish NRHE records (320K+ sites) | Active |
| Scotland | Get full details of a Scottish NRHE record | Active |
| Scotland | Search Scottish designated heritage assets | Active |
| Cross-Ref | Cross-reference candidates against known assets | Active |
| Cross-Ref | Resolve Gateway record coordinates for cross-referencing | Active |
| Cross-Ref | Find NHLE heritage assets near a point (England only) | Active |
| Export | Export results as GeoJSON FeatureCollection | Active |
| Export | Export known sites for LiDAR cross-referencing | Active |
| Map | Multi-source heritage map with colour-coded layers | Active |
| Map | Colour-coded cross-reference map (match/near/novel/known) | Active |
Data Sources
Source | Name | Organisation | Coverage | API Type | Status |
| National Heritage List for England | Historic England | England | ArcGIS Feature Service | Active |
| Aerial Investigation and Mapping | Historic England | England | ArcGIS Feature Service | Active |
| Conservation Areas | Historic England / LPAs | England | ArcGIS Feature Service | Active |
| Heritage at Risk Register | Historic England | England | ArcGIS Feature Service | Active |
| Heritage Gateway (Local HERs) | Historic England / Local HERs | England | Web scraper | Active |
| Historic Environment Scotland | Historic Environment Scotland | Scotland | ArcGIS Map Service | Active |
NHLE Designation Types
Type | Description |
| Listed buildings (Grades I, II*, II) |
| Scheduled monuments |
| Registered parks and gardens |
| Registered battlefields |
| Protected wreck sites |
| World Heritage Sites |
Installation
Using uvx (Recommended -- No Installation Required!)
uvx chuk-mcp-herUsing uv (Recommended for Development)
# Install from PyPI
uv pip install chuk-mcp-her
# Or clone and install from source
git clone <repository-url>
cd chuk-mcp-her
uv sync --devUsing pip (Traditional)
pip install chuk-mcp-herOptional: Sub-metre Coordinate Accuracy
# Install pyproj for sub-metre BNG<->WGS84 conversion
# Without pyproj, Helmert approximation (~5m accuracy) is used
pip install chuk-mcp-her[pyproj]Usage
With Claude Desktop
Option 1: Run Locally with uvx
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"her": {
"command": "uvx",
"args": ["chuk-mcp-her"]
}
}
}Option 2: Run Locally with pip
{
"mcpServers": {
"her": {
"command": "chuk-mcp-her"
}
}
}With Python SDK
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server_params = StdioServerParameters(
command="uvx",
args=["chuk-mcp-her"],
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(
"her_search_monuments",
{"name": "Stonehenge", "max_results": 5},
)Standalone
# STDIO mode (default, for MCP clients)
chuk-mcp-her stdio
# HTTP mode (for web access)
chuk-mcp-her http
chuk-mcp-her http --port 8010
# Auto-detect mode
chuk-mcp-herSTDIO mode is for MCP clients like Claude Desktop and mcp-cli. HTTP mode runs a web server on http://localhost:8010 for HTTP-based MCP clients.
CLI (mcp-cli)
mcp-cli chat --server herExample Usage
Once configured, you can ask questions like:
"List the available heritage data sources"
"Search for scheduled monuments near Stonehenge"
"Find Grade I listed buildings in central London"
"How many heritage assets are in this bounding box?"
"Get the full record for monument 1002345"
"What heritage assets are within 500m of the Tower of London?"
"Export all scheduled monuments in the Maldon area as GeoJSON"
"Cross-reference these LiDAR survey points against known heritage assets"
"Show all heritage assets within 2km of Stonehenge on a map"
"Map my LiDAR candidates against known scheduled monuments and show which are potential new discoveries"
"Search for protected wrecks along the English coast"
"Find registered parks and gardens near Bath"
"Search for all red hills along the north bank of the Blackwater estuary between Heybridge Basin and Tollesbury"
"Find castles in the Scottish Highlands"
"Search for brochs near Inverness"
"What scheduled monuments are in Edinburgh?"
Multi-source queries: The tool descriptions guide LLM agents to combine multiple sources automatically. A query like "find all red hills near the Blackwater" will prompt the agent to search NHLE (designated monuments), AIM (aerial mapping features), and Heritage Gateway (local HER records), then merge the results for comprehensive coverage.
Model-agnostic: The MCP server works with any LLM provider that supports function calling -- Claude, GPT, Gemini, or any other MCP-compatible client. The same tools work identically through Claude Desktop, mcp-cli, or the Python SDK.
Running the Examples
cd examples
python capabilities_demo.py # server capabilities, sources, tools
python quick_start.py # quick intro: status, count, search, nearby
python nhle_search_demo.py # scheduled monument and listed building search
python aerial_search_demo.py # aerial investigation mapping features
python conservation_area_demo.py # conservation area search
python heritage_at_risk_demo.py # heritage at risk register
python nearby_demo.py # find heritage assets near a point
python export_demo.py # GeoJSON export
python gateway_search_demo.py # Heritage Gateway local HER search
python cross_reference_demo.py # cross-reference candidates (with AIM)
python enrichment_pipeline_demo.py # Gateway enrichment + cross-reference
python blackwater_estuary_scenario.py # multi-source scenario
python scotland_search_demo.py # Scottish NRHE search (Canmore)
python scotland_designations_demo.py # Scottish designated heritage assetsScript | Network | Tools Demonstrated |
| No |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes |
|
| Yes | Multi-source scenario using NHLE, AIM, Conservation Areas, Heritage at Risk |
| Yes |
|
| Yes |
|
Architecture
MCP Client (Claude, mcp-cli, etc.)
|
| MCP protocol (stdio / HTTP)
v
+-------------------------------+
| Tool Functions |
| discovery/ nhle/ aerial/ |
| conservation_area/ scotland/ |
| heritage_at_risk/ gateway/ |
| crossref/ export/ map/ |
+-------------------------------+
|
| validate params, format response
v
+-------------------------------+
| SourceRegistry |
| (unified query interface) |
+-------------------------------+
| | | | | |
NHLEAdapter | CA HAR | ScotlandAdapter
AIMAdapter | Adapter Adapter| (2 clients)
| GatewayAdapter
v v v v v
+------------------+ +------------------+ +------------------+
| ArcGIS Client | | Gateway Client | | ArcGIS Client |
| (HE FeatureSvr) | | (httpx, bs4) | | (HES MapServer) |
+------------------+ +------------------+ +------------------+
| | |
v v v
+------------------+ +------------------+ +------------------+
| HE ArcGIS Svc | | Heritage Gateway | | inspire.hes.scot |
| NHLE,AIM,CA,HAR | | (60+ local HERs) | | Canmore, HES Des |
+------------------+ +------------------+ +------------------+Built on top of chuk-mcp-server, this server uses:
Async-First: Native async/await with httpx for all HTTP requests
Type-Safe: Pydantic v2 models with
extra="forbid"for all responsesSource Registry Pattern: Pluggable adapters registered at startup, queried through unified interface
BNG/WGS84 Conversion: Helmert transformation with optional pyproj for sub-metre accuracy
Filesystem Cache: TTL-based per-source caching to reduce API load
Rate Limiting: Per-client rate limiting with exponential backoff on 429/5xx
chuk-view-schemas: Map tools return
MapContentstructured views viachuk_view_schemas.chuk_mcp.map_tooldecoratorDual Output: Most tools support
output_mode="text"for human-readable responses; map tools return structuredMapContentError Messages: All error strings from
ErrorMessagesconstants -- no hardcoded strings
See ARCHITECTURE.md for design principles and data flow diagrams. See SPEC.md for the full tool specification with parameter tables. See ROADMAP.md for the development roadmap and planned features.
Development
Setup
# Clone the repository
git clone <repository-url>
cd chuk-mcp-her
# Install with uv (recommended)
uv sync --dev
# Or with pip
pip install -e ".[dev]"Running Tests
# Run tests
pytest tests/
# Run tests with coverage
pytest tests/ --cov=src/chuk_mcp_her --cov-report=term-missing
# Run a specific test file
pytest tests/test_coordinates.py -vCode Quality
# Lint and format with ruff
ruff check src/ tests/
ruff format src/ tests/
# Type checking
mypy src/
# Security scan
bandit -r src/ -x tests/Building
# Build package
python -m build
# Or with uv
uv buildConfiguration
Environment Variables
Variable | Default | Description |
| - | Set to any value to force stdio mode |
|
| Filesystem cache directory |
|
| NHLE cache TTL in seconds (24 hours) |
|
| AIM cache TTL in seconds (7 days) |
|
| Heritage Gateway cache TTL in seconds (1 hour) |
|
| Max requests per second to ArcGIS |
|
| HTTP request timeout in seconds |
License
Apache License 2.0 -- See LICENSE for details.
References
Historic England -- National Heritage List for England
NHLE ArcGIS Feature Service -- Live data endpoint
ArcGIS REST API -- Query specification
Historic Environment Scotland -- National Record of the Historic Environment
HES ArcGIS MapServer -- Scottish heritage data endpoints
Heritage Gateway -- Federated HER search
Model Context Protocol -- MCP specification
Anthropic -- Claude and MCP support
British National Grid -- EPSG:27700 coordinate reference system
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IBM/chuk-mcp-her'
If you have feedback or need assistance with the MCP directory API, please join our Discord server