历史环境记录查询服务

一个用于查询英格兰和苏格兰历史环境记录的MCP服务器,提供结构化访问28种工具,涵盖10个类别,通过ArcGIS REST API和Heritage Gateway网页抓取查询6个数据源。

  • by IBM
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 chrishayuk/chuk-mcp-her

使用说明

chuk mcp她

MCP服务器历史环境记录 --用于查询英格兰和苏格兰历史环境记录的模型上下文协议(MCP)服务器。通过历史英格兰和历史环境苏格兰的实时ArcGIS REST API搜索列出的建筑、预定古迹、注册公园、战场、受保护的沉船和世界遗产。

这是一个为学习和测试目的而提供的演示项目。

特性

此MCP服务器通过以下方式提供对历史环境记录的结构化访问 28工具 穿过 10个类别,查询 6个数据源 通过实时ArcGIS REST API和Heritage Gateway网络抓取。

关键能力:

  • 源注册表模式 --用于NHLE、AIM、保护区、濒危遗产、遗产网关和苏格兰(HES)的可插拔适配器,具有统一的查询接口
  • 英格兰+苏格兰覆盖范围 --历史英格兰的英格兰遗产,苏格兰历史环境的苏格兰遗产(320000+NRHE记录+指定资产)
  • 空间优先查询 --通过ArcGIS Feature/Map Services进行边界框、点+半径和面积搜索
  • BNG/WGS84坐标支持 --英国国家电网(EPSG:27700)和WGS84(EPSG:4326)之间的自动转换
  • 交互式地图视图 -- her_map 和 her_crossref_map 结构化回报 MapContent 用于在chuk-mcp-ui兼容客户端中渲染
  • 所有工具都返回完全类型化的Pydantic v2模型 用于类型安全、验证和出色的IDE支持
  • 大多数工具支持 output_mode="text" 用于人类可读的输出以及默认的JSON

1.服务器发现(her_status, her_list_sources, her_capabilities)

检查服务器运行状况,列出已注册的数据源,并获得完整功能:

  • 源可用性和状态
  • 每个源支持的查询类型
  • LLM查询规划指南

2.NHLE查询(her_search_monuments, her_get_monument, her_search_listed_buildings, her_search_designations, her_count_features)

搜索英格兰国家遗产名录:

  • 按地点、名称或描述列出的古迹
  • 有等级过滤的上市建筑(I、II*、II)
  • 在所有6种名称类型中进行通用名称搜索
  • 快速功能计数,无需获取完整记录
  • 基于偏移的分页

3.航空测绘(her_search_aerial, her_count_aerial, her_get_aerial_feature)

搜索航测测绘数据:

  • 航空照片和激光雷达的考古特征
  • NHLE中未包含的Cropmarks、土方工程和地物
  • 纪念碑类型和时期过滤
  • 快速功能计数,无需获取完整记录
  • 各个航空测绘功能的完整细节

4.保护区(her_search_conservation_areas, her_count_conservation_areas, her_get_conservation_area)

搜索历史悠久的英格兰8000多个保护区:

  • 按名称、当地规划局或位置搜索
  • 边界框和点+半径空间查询
  • 快速计数,无需获取完整记录
  • 详细信息,包括指定日期和地区

5.濒危遗产(her_search_heritage_at_risk, her_count_heritage_at_risk, her_get_heritage_at_risk)

搜索濒危遗产登记簿:

  • 有损失风险的遗产资产年度登记册
  • 按遗产类别筛选(列入名录的建筑、列入名录的纪念碑等)
  • 通过边界框或点+半径进行空间搜索
  • 每个条目的风险方法细节

6.遗产门户(her_search_heritage_gateway)

通过Heritage Gateway搜索当地历史环境记录:

  • 通过网络抓取尽最大努力访问60多个本地HER
  • 未指定的地点、发现点和HER纪念碑条目
  • 当Gateway不可用时,优雅地返回空结果

7.苏格兰(her_search_scotland, her_get_scotland_record, her_search_scotland_designations)

搜索苏格兰历史环境记录:

  • 通过坎莫尔点记录了320000多个国家历史环境记录(NRHE)
  • 指定资产:列入名录的建筑物、预定古迹、花园和设计景观、战场、世界遗产地、保护区、历史海洋保护区
  • 站点类型、大类和议会区域过滤
  • Canmore ID个人记录的完整详细信息

8.交叉引用(her_cross_reference, her_enrich_gateway, her_nearby)

空间匹配、丰富和邻近搜索:

  • 将候选地点与已知遗产资产进行对照
  • 将候选人分为匹配、接近或新颖
  • 基于网格的空间索引,用于高效批处理(O(n+m)摊销)
  • 可选AIM天线功能集成(include_aim 参数)
  • 标识类型过滤(单类型或逗号分隔)
  • 每个资产有11个字段(来源、等级、纪念碑类型、时期、形式、证据)的丰富匹配输出
  • 使用解析的BNG坐标丰富Gateway记录,以便进行交叉引用
  • 查找附近具有距离和方位的遗产资产
  • 接受WGS84和BNG坐标

9.出口(her_export_geojson, her_export_for_lidar)

导出和格式化结果:

  • 用于QGIS、传单或其他GIS工具的GeoJSON FeatureCollection
  • LiDAR交叉参考格式,每个来源都有丰富的元数据:
    • NHLE场地等级
    • 目的:具有纪念碑类型、时期、形式、证据的航空特征
    • 具有monument_type和句点的网关站点
  • 可选AIM集成(include_aim)和网关站点(gateway_sites)用于激光雷达出口

10.地图可视化(her_map, her_crossref_map)

交互式遗产地图呈现为结构化 MapContent 对于chuk mcp ui客户:

  • her_map --并行查询多达五个来源(NHLE、AIM、保护区、濒危遗产、苏格兰),并将每个来源呈现为一个明确的颜色编码层;NHLE结果按指定类型划分,以便进行视觉分离
  • her_crossref_map --运行与相同的分析 her_cross_reference 然后渲染四个颜色编码层:绿色(匹配)、琥珀色(接近)、红色(新发现/潜在新发现)、灰色(已知资产)
  • 标记聚类、弹出模板和图层切换控件
  • 接受WGS84 bbox或lat/lon/radius_m;BNG交叉参考地图候选人

工具参考

所有工具都接受可选 output_mode 参数("json" 违约,或 "text" 用于人类可读输出)。

工具 类别 描述 状态
her_status 发现 服务器运行状况和源可用性 活动
her_list_sources 发现 列出具有功能的已注册数据源 活动
her_capabilities 发现 LLM规划的完整服务器功能列表 活动
her_search_monuments NHLE 按地点或名称搜索预定古迹 活动
her_get_monument NHLE 获取特定纪念碑的完整细节 活动
her_search_listed_buildings NHLE 使用等级过滤器搜索列出的建筑 活动
her_search_designations NHLE 搜索所有名称类型 活动
her_count_features NHLE 快速统计某个区域的特征 活动
her_search_aerial 航空 搜索航空调查测绘数据 活动
her_count_aerial 航空 统计一个地区的航空测绘特征 活动
her_get_aerial_feature 航空 获取航空测绘功能的完整细节 活动
her_search_conservation_areas 保护 按名称、LPA或位置搜索保护区 活动
her_count_conservation_areas 保护 统计一个地区的保护区 活动
her_get_conservation_area 保护 获取保护区的完整详细信息 活动
her_search_heritage_at_risk 有风险 搜索有风险遗产登记条目 活动
her_count_heritage_at_risk 有风险 统计一个地区的有风险遗产条目 活跃
her_get_heritage_at_risk 有风险 获取有风险遗产的完整详细信息 活动
her_search_heritage_gateway 网关 通过Heritage Gateway搜索本地HER数据 活动
her_search_scotland 苏格兰 搜索苏格兰NRHE记录(320K多个网站) 活跃
her_get_scotland_record 苏格兰 获取苏格兰NRHE记录的完整细节 活跃
her_search_scotland_designations 苏格兰 搜索苏格兰指定遗产资产 活跃
her_cross_reference 交叉引用 将候选对象与已知资产进行交叉引用 活动
her_enrich_gateway 交叉引用 解析网关记录坐标以进行交叉引用 活动
her_nearby 交叉引用 查找某点附近的NHLE遗产资产(仅限英格兰) 活动
her_export_geojson 导出 将结果导出为GeoJSON FeatureCollection 活动
her_export_for_lidar 导出 导出已知站点以进行LiDAR交叉引用 活动
her_map 地图 带颜色编码图层的多源遗产地图 活动
her_crossref_map 地图 颜色编码的交叉参考地图(匹配/接近/新颖/已知) 活动

数据源

来源 名称 组织 覆盖范围 API类型 状态
nhle 英格兰国家遗产名录 历史英格兰 英格兰 ArcGIS Feature Service 活动
aim 航空调查和制图 历史英格兰 英格兰 ArcGIS Feature Service 活动
conservation_area 保护区 历史英格兰/LPA 英格兰 ArcGIS Feature Service 活动
heritage_at_risk 濒危遗产登记册 历史英格兰 英格兰 ArcGIS Feature Service 活动
heritage_gateway 遗产门户(当地HER) 历史悠久的英格兰/当地HER 英格兰 网络爬虫 活跃
scotland 苏格兰历史环境 苏格兰历史环境 ArcGIS地图服务 活动

NHLE标识类型

类型 描述
listed_building 上市建筑(一级、二级*、二级)
scheduled_monument 预定古迹
park_and_garden 注册公园和花园
battlefield 注册战场
protected_wreck 受保护的沉船遗址
world_heritage_site 世界遗产

安装

使用uvx(推荐-无需安装!)

uvx chuk-mcp-her

使用紫外线(建议用于开发)

# 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 --dev

使用pip(传统)

pip install chuk-mcp-her

可选:亚米坐标精度

# Install pyproj for sub-metre BNG<->WGS84 conversion
# Without pyproj, Helmert approximation (~5m accuracy) is used
pip install chuk-mcp-her[pyproj]

用法

使用克劳德桌面

选项1:使用uvx在本地运行

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "her": {
      "command": "uvx",
      "args": ["chuk-mcp-her"]
    }
  }
}

选项2:使用pip在本地运行

{
  "mcpServers": {
    "her": {
      "command": "chuk-mcp-her"
    }
  }
}

使用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},
        )

独立

# 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-her

STDIO模式 适用于Claude Desktop和MCP-cli等MCP客户端。 HTTP模式 在上运行web服务器http://localhost:8010用于基于HTTP的MCP客户端。

CLI(mcp-CLI)

mcp-cli chat --server her

示例用法

配置后,您可以提出以下问题:

  • “列出可用的遗产数据源”
  • “寻找巨石阵附近的预定古迹”
  • “查找伦敦市中心的一级保护建筑”
  • “这个边界框中有多少遗产资产?”
  • “获得1002345纪念碑的完整记录”
  • “伦敦塔500米范围内有哪些遗产?”
  • “将Maldon地区的所有预定古迹导出为GeoJSON”
  • “将这些激光雷达测量点与已知遗产进行交叉参考”
  • “在地图上显示巨石阵2公里范围内的所有遗产资产”
  • “将我的激光雷达候选者与已知的预定古迹进行对比,并显示哪些是潜在的新发现”
  • “在英国海岸搜寻受保护的沉船”
  • “查找巴斯附近的注册公园和花园”
  • “寻找海布里奇盆地和托尔斯伯里之间黑水河口北岸的所有红色山丘”
  • “在苏格兰高地寻找城堡”
  • “搜索因弗内斯附近的兄弟”
  • “爱丁堡有哪些预定的纪念碑?”

多源查询: 工具描述指导LLM代理进行组合 多个来源自动。一个类似“找到附近的所有红色山丘”的查询 “黑水”将提示特工搜查NHLE(指定古迹)、AIM (航空测绘特征)和Heritage Gateway(当地HER记录),然后 合并结果以实现全面覆盖。

模型无关: MCP服务器可与任何支持以下功能的LLM提供程序配合使用 函数调用——Claude、GPT、Gemini或任何其他兼容MCP的客户端。 通过Claude Desktop、mcp-cli或 Python SDK。

运行示例

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 assets
脚本 网络 演示工具
capabilities_demo.py 没有 her_capabilities, her_list_sources, her_status
quick_start.py 是的 her_status, her_count_features, her_search_monuments, her_get_monument, her_nearby
nhle_search_demo.py 是的 her_search_monuments, her_get_monument, her_search_listed_buildings, her_search_designations, her_count_features
aerial_search_demo.py 是的 her_search_aerial, her_count_aerial, her_get_aerial_feature
conservation_area_demo.py 是的 her_search_conservation_areas, her_count_conservation_areas, her_get_conservation_area
heritage_at_risk_demo.py 是的 her_search_heritage_at_risk, her_count_heritage_at_risk, her_get_heritage_at_risk
nearby_demo.py 是的 her_nearby
export_demo.py 是的 her_export_geojson, her_export_for_lidar
gateway_search_demo.py 是的 her_search_heritage_gateway
cross_reference_demo.py 是的 her_cross_reference (与 include_aim)
enrichment_pipeline_demo.py 是的 her_enrich_gateway, her_search_heritage_gateway, her_cross_reference, her_count_features
blackwater_estuary_scenario.py 是 使用NHLE、AIM、保护区、濒危遗产的多源情景
scotland_search_demo.py 是的 her_search_scotland, her_get_scotland_record
scotland_designations_demo.py 是的 her_search_scotland_designations, her_search_scotland

建筑

                    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 |
        +------------------+  +------------------+  +------------------+

该服务器基于chuk-mcp服务器构建,使用:

  • 异步优先:所有HTTP请求都使用httpx进行本地async/await
  • 类型安全:Pydantic v2型号 extra="forbid" 对于所有回复
  • 源注册表模式:可插拔适配器在启动时注册,通过统一界面查询
  • BNG/WGS84转换:赫尔默特变换,可选pyproj,亚米精度
  • 文件系统缓存:基于TTL的逐源缓存,以减少API负载
  • 速率限制:429/5xx上采用指数回退的每客户端速率限制
  • chuk视图模式:地图工具返回 MapContent 结构化视图通过 chuk_view_schemas.chuk_mcp.map_tool 装饰器
  • 双输出:大多数工具支持 output_mode="text" 用于人类可读的响应;地图工具返回结构化 MapContent
  • 错误消息:来自的所有错误字符串 ErrorMessages 常量--没有硬编码字符串

看 建筑.md 用于设计原则和数据流图。 看 规格.md 查看带有参数表的完整刀具规格。 看 ROADMAP.md 了解开发路线图和计划功能。

发展

设置

# 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]"

运行测试

# 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 -v

代码质量

# Lint and format with ruff
ruff check src/ tests/
ruff format src/ tests/

# Type checking
mypy src/

# Security scan
bandit -r src/ -x tests/

建筑

# Build package
python -m build

# Or with uv
uv build

配置

环境变量

变量 默认值 描述
MCP_STDIO - 设置为任何值以强制stdio模式
HER_CACHE_DIR ~/.cache/chuk-mcp-her 文件系统缓存目录
HER_NHLE_CACHE_TTL 86400 NHLE缓存TTL(秒)(24小时)
HER_AIM_CACHE_TTL 604800 AIM缓存TTL(秒)(7天)
HER_HG_CACHE_TTL 3600 Heritage Gateway缓存TTL(秒)(1小时)
HER_RATE_LIMIT 5.0 每秒对ArcGIS的最大请求数
HER_TIMEOUT 30.0 HTTP请求超时(秒)

许可证

Apache许可证2.0——请参阅 许可证 了解详情。

参考文献