Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Rce Cho

БесплатноНе проверен

Enables querying the Dutch RCE Cultural Heritage Objects linked data endpoint via SPARQL, with ontology guidance and query validation for safe, accurate results

GitHubEmbed

Описание

Enables querying the Dutch RCE Cultural Heritage Objects linked data endpoint via SPARQL, with ontology guidance and query validation for safe, accurate results.

README

MCP server for querying the Dutch RCE Cultural Heritage Objects Linked Data ecosystem.

This project helps LLM clients such as Claude Desktop, ChatGPT, LM Studio and Cursor work with the RCE Linked Data environment without guessing classes, properties, graphs or modelling patterns.

The goal is not only SPARQL execution, but reliable interaction with Dutch cultural heritage linked data.

Status

Beta (v0.2.0-beta).

Not affiliated with the Rijksdienst voor het Cultureel Erfgoed.

Goals

  • Reduce hallucinations when working with RCE linked data.
  • Expose ontology knowledge to clients.
  • Expose thesaurus and concept knowledge to clients.
  • Expose dataset semantics to clients.
  • Make graph boundaries explicit.
  • Keep query generation transparent and inspectable.

Features

  • Query the public RCE CHO SPARQL endpoint.
  • Search and inspect the CEO ontology.
  • Resolve SKOS labels to concept URIs.
  • Fuzzy-search concepts (with synonyms) across the NDE Network of Terms, including external thesauri (Wikidata, AAT).
  • Inspect resource URIs.
  • Validate SPARQL queries before execution.
  • Execute SPARQL SELECT and ASK queries.
  • Provide dataset semantics for important modelling patterns.
  • Detect known Virtuoso-specific query pitfalls before execution.
  • Report live dataset statistics (triples, entities, per-class and per-property counts).
  • Explore actual query paths from/to a class via sampling, independent of what the ontology declares.

Linked Data philosophy

The MCP assumes the following workflow:

human question
    ↓
concept discovery
    ↓
URI resolution
    ↓
ontology inspection
    ↓
dataset semantics
    ↓
query validation
    ↓
SPARQL execution

Not:

human question
    ↓
guess a property name
    ↓
run query

Linked Data model

The RCE linked data ecosystem consists of several layers.

Ontology

Defines classes and properties.

Examples:

  • ceo:Rijksmonument
  • ceo:heeftFunctie
  • ceo:heeftNaam

Thesauri and SKOS concepts

Provide meanings and labels.

Examples:

  • municipalities
  • provinces
  • monument functions
  • legal statuses

Human language should first be translated to concept URIs.

Dataset graphs

Contain the actual cultural heritage data.

Relevant triples may be spread across multiple named graphs.

MCP tools

Discovery

  • ping
  • graphs_list
  • ontology_statistics
  • ontology_search

Ontology

  • ontology_describe_class
  • ontology_describe_property

Live dataset statistics

  • dataset_statistics
  • class_instance_counts
  • property_usage_counts
  • explore_class
  • explore_incoming

Unlike the ontology tools above (which describe what is defined in the bundled CEO ontology), these tools query the live endpoint for what is actually present in the data: instance counts per class/property (including ontology classes with zero instances), and empirical forward/backward path discovery based on a sample of real instances.

dataset_statistics, class_instance_counts and property_usage_counts report live counts from the current dataset (~58M triples), refreshed daily. These are full-dataset scans; dataset_statistics can take a couple of minutes.

explore_class finds which predicates lead out of a class and to what; explore_incoming finds which classes and predicates point into it (the reverse direction). Both are sample-based and fast (a few seconds) — useful for paths not yet covered by dataset semantics. Counts only apply within the sample, not dataset-wide.

Dataset semantics

  • semantics_list_topics
  • semantics_describe_topic

Resolver

  • resolve_concept_label
  • describe_resource_uri

Concept search (NDE Network of Terms)

  • zoek_concept_termennetwerk
  • lookup_termennetwerk_uri

zoek_concept_termennetwerk does a relevance-ranked, synonym-aware search across published terminology sources (CHT, ABR by default; Wikidata and AAT available) via the public, unauthenticated Network of Terms GraphQL API — unlike resolve_concept_label, which only does an exact skos:prefLabel match within our own named graphs.
lookup_termennetwerk_uri resolves external concept URIs (e.g. a skos:exactMatch target found via describe_resource_uri) back to labels.

Validation

  • validate_query
  • validate_query_structured

Validation checks include:

  • unsafe label filters (silent zero-result risk)
  • untyped numeric literals on string properties (e.g. ceo:huisnummer 19 instead of ceo:huisnummer "19", also a silent zero-result risk)
  • missing DISTINCT or COUNT alias
  • SELECT/FROM/WHERE ordering
  • suspicious/non-existent prefixes (ceosp:, ceox:) and manual language filters (LANG()/LANGMATCHES())
  • GeoSPARQL relations that cause structural timeouts on Virtuoso (geof:sfWithin etc.)
  • GROUP BY on long text fields that trigger Virtuoso overflow errors
  • ORDER BY combined with OPTIONAL joins, which causes a consistent HTTP 504 on this endpoint
  • multiple independent OPTIONAL blocks in one query, which produces a cartesian product instead of separate facts

Execution

  • query_sparql
  • query_sparql_json
  • query_sparql_geojson
  • convert_rd_to_wgs84

query_sparql returns readable text with classified error codes on failure.
query_sparql_json returns raw SPARQL JSON for agents, tables, benchmarks and follow-up processing.
query_sparql_geojson converts SELECT results with a WKT geometry variable into a GeoJSON FeatureCollection.
convert_rd_to_wgs84 converts a single RD New (EPSG:28992) coordinate pair to WGS84.

Endpoints

By default, queries go to the "Speedy" endpoint (standards-compliant SPARQL 1.1). If that endpoint is unreachable or returns a gateway-level error (502/503/504), execute_sparql() automatically retries once against the "Virtuoso" endpoint, which supports GeoSPARQL but has the query quirks listed above. Override with the SPARQL_ENDPOINT and SPARQL_FALLBACK_ENDPOINT environment variables.

Why dataset semantics?

The RCE linked data environment contains more than ontology definitions.

Clients also need guidance about interpretation patterns.

Examples:

  • use ceo:hoofdfunctie when multiple functions exist
  • prefer ceo:huidigeNaam over historical names
  • use legal status concepts when counting active monuments
  • use municipality concept URIs instead of string matching

Without this knowledge, LLMs often generate plausible but incorrect SPARQL.

Example questions

  • How many active rijksmonuments are located in Zeist?
  • Which churches are located in Roermond?
  • Which properties belong to Rijksmonument?
  • Resolve the label Utrecht in the OWMS graph.
  • Which monument functions occur in Maastricht?
  • Which archaeological sites occur in Limburg?

Claude Desktop configuration

{
  "mcpServers": {
    "rce-cho": {
      "command": "C:\\Python314\\python.exe",
      "args": [
        "-m",
        "rce_cho_mcp.server"
      ],
      "cwd": "C:\\AI\\rce-cho-mcp"
    }
  }
}

Design principle

The MCP exposes capabilities, not workflows.

The client decides how ontology discovery, concept resolution, semantics, validation and execution are combined.

License

EUPL-1.2

from github.com/jolietjakeblues/rce-cho-mcp

Установка Rce Cho

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/jolietjakeblues/rce-cho-mcp

FAQ

Rce Cho MCP бесплатный?

Да, Rce Cho MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Rce Cho?

Нет, Rce Cho работает без API-ключей и переменных окружения.

Rce Cho — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Rce Cho в Claude Desktop, Claude Code или Cursor?

Открой Rce Cho на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Rce Cho with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development