Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/cern-opendata-mcp-server

REMOTE · CERN-OPENDATA.CASEYJHAND.COM · 2 COMPONENTS

Search CERN Open Data, fetch records, files, analysis environments, CMS good-run lists, HLT paths.

+4 this week 89 Trust /100

Last scanned (44 minutes ago)

Scores higher than 97% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3154 tokens (~394/item across 8 items; 7 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 1 Nov 26 +1
    • Stability: 0.97 → pass security
  • 30 Oct 26 +3
    • Schema quality: 454 → 394 ▲ functional
    • First check of Schema quality: 100 functional
    • New resource “cern-opendata-guide” functional
    • Server version: 0.2.1 → 0.3.0 functional
    • “cern_opendata_search_records” reworded the description of “magnet_polarity” cosmetic
    • “cern_opendata_search_records” reworded the description of “availability” cosmetic
    • “cern_opendata_search_records” reworded the description of “category” cosmetic
    • “cern_opendata_search_records” reworded the description of “collection” cosmetic
    • “cern_opendata_search_records” reworded the description of “collision_energy” cosmetic
    • “cern_opendata_search_records” reworded the description of “collision_type” cosmetic
    • “cern_opendata_search_records” reworded the description of “experiment” cosmetic
    • “cern_opendata_search_records” reworded the description of “file_type” cosmetic
    • “cern_opendata_search_records” reworded the description of “keywords” cosmetic
    • “cern_opendata_search_records” reworded the description of “query” cosmetic
    • “cern_opendata_search_records” reworded the description of “stripping_stream” cosmetic
    • “cern_opendata_search_records” reworded the description of “stripping_version” cosmetic
    • “cern_opendata_search_records” reworded the description of “type” cosmetic
    • “cern_opendata_search_records” reworded the description of “year_from” cosmetic
    • “cern_opendata_search_records” reworded the description of “year_to” cosmetic
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://cern-opendata.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 2 Nov 2026 31 Jan 2027 ECDSA 256 ECDSA-SHA256 995a30681ab772540e934241ca1d576c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of cern-opendata.caseyjhand.com. — Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
cern-opendata.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://cern-opendata.caseyjhand.com/mcp Verified 200
http (plaintext) http://cern-opendata.caseyjhand.com/mcp HTTPS enforced 301 https://cern-opendata.caseyjhand.com/mcp
MCP tools · 7 exposed · ~2,734 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cern_opendata_get_analysis_env ~154

Assemble what is needed to analyse a record: its container images, CMSSW release and global tag; the condition-data, VM and validated-run records for its run periods; example software that declares it works with the record; and quoted sections of the guides the record links (the first two are fetched). Container images, software and guide code are licensed separately from the CC0 data. Use cern_opendata_list_files for the record's files.

NameTypeReqDescription
recidstringyesRecord id: up to 12 digits (6004), optionally after a lowercase experiment prefix (cms-93956). cern_opendata_search_records and cern_opendata_get_records return it.
NameTypeReqDescription
environment_recordsarray–Condition, VM and validation records for the run periods, and others linking here.
errorobject–Present when the call failed. Absent on success.
example_softwarearray–Software records that declare they work with this record.
experimentarray–Experiments the record belongs to.
guidesarray–Every portal guide linked in the usage section.
license_notestring–How the environment is licensed.
noticestring–Gaps and next steps: empty environment, unread or excess linked records, unfetched/missing/cut guides or unmatched guide anchors; absent when none.
other_linksarray–Other usage links, e.g. getting-started pages.
recidstring–The record id.
run_periodarray–Run periods the record covers, such as Run2012B.
separately_licensedboolean–Images, software and guide code have separate licenses from CC0 data.
softwareobject–The record's own software environment (system_details).
titlestring–Record title.
typeobject–Portal record classification.

No examples provided.

cern_opendata_get_records ~320

Fetch full metadata for 1-20 records in one call, by recid, DOI, CMS dataset path (/Primary/Era/TIER) or documentation slug. Returns the description, run periods, collision and distribution details, related records, a software-environment summary, the license and a ready citation, plus what a record states of its variable dictionary, physics category, pile-up, keywords, and LHCb magnet polarity and stripping. Documentation and news pages include their markdown body in slices of at most 30,000 characters; body_offset with that one id reads on from where a slice stops. Each response holds to 64,000 bytes, except that the first record always comes back whole: records past the budget, and ids past the first 20, are listed under deferred, to pass back as ids. File lists are not included; use cern_opendata_list_files. Identifiers that do not resolve come back under missing with guidance; they do not fail the call.

NameTypeReqDescription
body_offsetinteger–With exactly one documentation or news id: where its body slice starts, in characters (UTF-16 code units), usually the body_next_offset an earlier call returned. 0 (the default) is the body's start a…
idsarrayyesIdentifiers to resolve: up to 100, of which the first 20 distinct are looked up and the rest returned under deferred. Forms may be mixed; exact duplicates collapse.
NameTypeReqDescription
deferredarray–Continuation ids: budget-omitted records in input order, then ids past the first 20, not looked up. The response budget is 64,000 bytes; the first record is always whole even when larger. Pass as ids…
errorobject–Present when the call failed. Absent on success.
missingarray–Identifiers that resolved to no record; empty when every id resolved.
noticestring–Continuation calls for a cut documentation body, budget-deferred records or ids past the first 20 left unread; absent when none.
recordsarray–Resolved records, in the order of their first matching input.

No examples provided.

cern_opendata_get_validated_runs ~393

Get a CMS validated-run (good-run) list, which certifies the luminosity sections that are good for physics in each run. Select it by a CMS collision dataset recid, a validated-run list recid, or a run period such as Run2012B (give exactly one of recid and run_period). Choose the full validation or the muons-only variant, and narrow to a run range; a dataset recid defaults the range to the first and last run the dataset lists. Returns the runs with their luminosity-section ranges and the list file download URL. CMS only.

NameTypeReqDescription
limitinteger–Runs to return, 1-2000. A value above 2000 is served at 2000.
recidstring–A CMS collision dataset recid (its linked list is used) or a validated-run list recid (used as named): up to 12 digits, optionally after a lowercase experiment prefix (cms-93956). Give this or run_pe…
run_maxinteger–Highest run to return, inclusive. Defaults with run_min for a dataset recid.
run_mininteger–Lowest run to return, inclusive. With a dataset recid and neither bound set, run_min and run_max default to the first and last run the dataset lists; run_bounds echoes the range applied.
run_periodstring–A CMS run period such as Run2012B, matched case-insensitively; 2012B also matches Run2012B. Give this or recid. cern_opendata_list_reference with topic run_periods lists them.
variantstring–full (every detector certified) or muons_only (certified for muon physics). Omitted: a list recid is used as named; a dataset recid or run_period selects full.
NameTypeReqDescription
capnumber–The page size (limit) applied to this call.
datasetobject–The dataset, when recid named a dataset rather than a list.
errorobject–Present when the call failed. Absent on success.
listobject–The selected list, when exactly one matched.
matched_listsarray–All selector matches in the requested variant. If several, none was read: call again with one recid.
noticestring–Continuation, empty-result guidance or result caveats; absent when none.
run_boundsobject–Run filter range; absent when unbounded.
runsarray–Certified runs ascending within run_bounds, capped at limit; empty unless one list was selected.
shownnumber–Number of items returned on this page.
summaryobject–The whole selected list, before run_bounds.
totalCountnumber–Runs in the selected list inside run_bounds.
truncatedboolean–True when more results remain past this page; notice says how to reach them.

No examples provided.

cern_opendata_list_files ~255

List one record's files: its file indexes (groups of up to ~1,500 files) with their XRootD URI-list URLs, and per file the XRootD URI, HTTPS download URL, size, adler32 checksum and availability. Without index, returns the record's indexes and its regular files; with index, reads only that index and pages through its files. Files marked on demand sit on tape and must be requested on the record's portal page before download.

NameTypeReqDescription
cursorstring–next_cursor from the previous page, unchanged, with the same recid and index. Omit for the first page.
indexstring–A file index key from the indexes list, matched exactly (a .txt ending is read as .json). Omit to list the record's indexes and regular files.
limitinteger–Files per page, 1-500. A value above 500 is served at 500.
recidstringyesRecord id: up to 12 digits (6004), optionally after a lowercase experiment prefix (atlas-160006). cern_opendata_search_records and cern_opendata_get_records return it.
NameTypeReqDescription
availabilitystring–Record-level availability: online, partial, ondemand or requested.
availability_detailsobject–File counts by availability state for the whole record.
capnumber–The page size (limit) applied to this call.
childrenarray–Child recids of a fileless umbrella record; empty otherwise.
errorobject–Present when the call failed. Absent on success.
filesarray–This page: regular files in record scope, index files in index scope.
has_moreboolean–True when more files remain past this page.
indexesarray–Every file index in record scope; only the selected one in index scope.
next_cursorstring–Pass as cursor, with the same recid and index, for the next page.
noticestring–Continuation, empty-result guidance or result caveats; absent when none.
portal_urlstring–The record page, where on-demand (tape) files are requested.
recidstring–The record id.
scopestring–record: the record's indexes and regular files; index: one index's files.
shownnumber–Number of items returned on this page.
titlestring–Record title.
totalCountnumber–Files in scope: regular files in record scope, index files in index scope.
truncatedboolean–True when more results remain past this page; notice says how to reach them.

No examples provided.

cern_opendata_list_reference ~141

Decode the vocabulary the other cern_opendata tools accept: experiments, record types, collision energies and types, file formats and data tiers, availability states, physics categories, LHCb magnet polarities and stripping streams and versions, identifier forms, query syntax, licensing, and the CMS run periods that have validated-run lists. Static and offline; omit topic for every table.

NameTypeReqDescription
topicstring–One table to return: experiments, record_types, collision_energies, collision_types, file_types, availability, categories, lhcb, identifiers, query_syntax, licensing or run_periods. Omit for every ta…
NameTypeReqDescription
errorobject–Present when the call failed. Absent on success.
topicsarray–The requested table, or every table when topic is omitted.

No examples provided.

cern_opendata_search_records ~971

Search the CERN Open Data Portal's datasets, software, environments, documentation and supplementary records with exact-vocabulary filters and an optional full-text query. The filters are experiment, record type, physics category, keyword, collision energy and type, file format, data-taking year, event count, availability, collection, and LHCb magnet polarity, stripping stream and stripping version. Returns compact hits with recids plus live facet counts. Each facet ignores its own filter, so its counts show the alternatives under the other filters. Filter values are exact upstream; common spellings are normalized, and cern_opendata_list_reference lists the vocabulary. Paging reaches the first 10,000 matches.

NameTypeReqDescription
availabilityarray–Up to 4 availability states (OR): online, partial, ondemand (tape; request before download), requested.
categoryarray–Up to 20 simulated-dataset categories (OR): primary (Exotica, Higgs Physics, Standard Model Physics, Supersymmetry) or Primary::Secondary (Higgs Physics::Standard Model). Case/separator normalized. C…
collectionarray–Up to 10 exact, case-sensitive collections (OR), e.g. CMS-Validated-Runs; copy a record's collections spellings.
collision_energyarray–Up to 15 energies (OR), e.g. 7TeV, 8TeV, 13TeV, 5.02TeV. "13TeV, 13.6TeV" is one value/item.
collision_typearray–Up to 6 collision types (OR): pp, PbPb, pPb, e+e-, Interfill. PbPb also matches Pb-Pb.
experimentarray–Up to 9 experiments (OR): ALICE, ATLAS, CMS, DELPHI, JADE, LHCb, OPERA, PHENIX, TOTEM. Case normalized.
file_typearray–Up to 20 formats/data tiers (OR): nanoaod, miniaod, aod, root, DAOD_PHYSLITE, csv, etc. Known-value case normalized.
keywordsarray–Up to 10 verbatim, case-sensitive keywords (OR); Education differs from education. A comma within a keyword stays in one item.
limitinteger–Hits per page, 1-50. A value above 50 is served at 50.
magnet_polarityarray–Up to 2 LHCb collision-dataset polarities (OR): MagDown, MagUp. Case normalized.
max_eventsinteger–Maximum number of events, inclusive.
min_eventsinteger–Minimum number of events, inclusive.
pageinteger–Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000.
querystring–Verbatim OpenSearch query_string: AND between terms, double weight for title matches. Supports title:"…", recid:(1 OR 2), run_period:("Run2012B"); cern_opendata_list_reference topic query_syntax list…
sortstring–bestmatch (relevance), mostrecent (by date_published, newest first), title (A-Z) or title_desc (Z-A). Omitted: bestmatch with a query, mostrecent (newest first) without.
stripping_streamarray–Up to 11 LHCb stripping streams (OR), e.g. BHADRON, CHARM, DIMUON, EW, LEPTONIC; also matches stripping docs. Case normalized. cern_opendata_list_reference topic lhcb lists them.
stripping_versionarray–Up to 12 LHCb stripping versions (OR), e.g. stripping21, stripping21r1p2. Case normalized.
typearray–Up to 7 types (OR): Dataset, Documentation, Environment, Software, Supplementaries, News, or Primary::Secondary (Dataset::Collision, Dataset::Simulated). Omit for all six primaries; Glossary is exclu…
year_frominteger–Inclusive earliest data-taking year; alone means onward. For one year, set both year bounds to it.
year_tointeger–Inclusive latest data-taking year; alone means through this year.
NameTypeReqDescription
applied_filtersobject–The filters as the server applied them.
capnumber–The page size (limit) applied to this call.
errorobject–Present when the call failed. Absent on success.
facetsobject–Live counts under all other filters: each facet ignores its own filter. Terms list 10 values alphabetically (file_type: 100); type and category buckets list 10 secondary values. Overflow fields sum c…
has_moreboolean–Next page has matches within the first 10,000; false at the reachable end even if more exist (see truncated/notice).
hitsarray–Matching records on this page.
noticestring–Continuation, empty-result guidance or result caveats; absent when none.
pagenumber–The page returned.
shownnumber–Number of items returned on this page.
totalCountnumber–Total matches for the query and filters.
truncatedboolean–True when more results remain past this page; notice says how to reach them.

No examples provided.

cern_opendata_search_trigger_paths ~500

Look up CMS High-Level Trigger paths by exact name (HLT_IsoMu24) or prefix pattern (HLT_IsoMu*), optionally for one data-taking year. Paths outside the HLT_ family, such as AlCa_EcalPi0, DST_ and DQM_ paths, output modules and HLTriggerFinalPath, are found by their own names, in the case given. Each match is a per-year path record parsed into the primary datasets its title names, the first and last run the path was seen online, per-version run ranges, the L1 seed, and links to the HLT menu records. Covers CMS open data from 2011-2016. Prescale factors are not returned: each HLT menu record holds a configuration file (cern_opendata_list_files with a menu_recid) whose PrescaleService block lists the prescale in each column of every path it prescales (a path it leaves out has prescale 1), and the CMS luminosity records (collection CMS-Luminosity-Information) hold prescale files that log which column applied by run and luminosity section.

NameTypeReqDescription
limitinteger–Records per page, 1-50. A value above 50 is served at 50.
pageinteger–Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000.
pathstringyesTrigger path name (HLT_IsoMu24, AlCa_EcalPi0) or prefix with one trailing wildcard (HLT_IsoMu*): a letter or digit, then letters, digits and underscores. A path starting HLT_ in any case is searched…
yearinteger–Data-taking year, such as 2012. Trigger records cover 2011-2016.
NameTypeReqDescription
capnumber–The page size (limit) applied to this call.
effectiveQuerystring–The query sent, after normalization (version suffix dropped): an HLT_ path as given; any other path as title clauses matching it as a record path name, OR HLT_ plus the path.
errorobject–Present when the call failed. Absent on success.
has_moreboolean–Next page has matches within the first 10,000; false at the reachable end even if more exist (see truncated/notice).
noticestring–Continuation, empty-result guidance or result caveats; absent when none.
pagenumber–The page returned.
shownnumber–Number of items returned on this page.
totalCountnumber–Trigger path records matching the path (and year).
triggersarray–Matching trigger path records on this page.
truncatedboolean–True when more results remain past this page; notice says how to reach them.

No examples provided.

Install

How do I install the io.github.cyanheads/cern-opendata-mcp-server server?

io.github.cyanheads/cern-opendata-mcp-server is a hosted endpoint at https://cern-opendata.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · cern-opendata.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-cern-opendata-mcp-server 'https://cern-opendata.caseyjhand.com/mcp'
Common questions

What is the io.github.cyanheads/cern-opendata-mcp-server server?

io.github.cyanheads/cern-opendata-mcp-server is listed in the public MCP registry as io.github.cyanheads/cern-opendata-mcp-server. Search CERN Open Data, fetch records, files, analysis environments, CMS good-run lists, HLT paths. This page covers its hosted endpoint (https://cern-opendata.caseyjhand.com/mcp).

Is the io.github.cyanheads/cern-opendata-mcp-server server safe to use?

io.github.cyanheads/cern-opendata-mcp-server scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/cern-opendata-mcp-server server expose?

io.github.cyanheads/cern-opendata-mcp-server exposes 7 tools: cern_opendata_search_records, cern_opendata_get_records, cern_opendata_list_files, cern_opendata_get_analysis_env, cern_opendata_get_validated_runs, and 2 more. Their descriptions and schemas cost roughly 2,734 tokens of context every time the server is loaded.

Does the io.github.cyanheads/cern-opendata-mcp-server server require authentication?

No. We connected to io.github.cyanheads/cern-opendata-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/cern-opendata-mcp-server server still maintained?

io.github.cyanheads/cern-opendata-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.