io. github. cyanheads/ reference-data-mcp-server
by cyanheads · remote · local (npm) · no sign-in to list tools · v0.1.17 · published by GitHub user cyanheads
Countries, timezones, elements, constants, HTTP status codes, unit conversion, and MIME type lookup.
10 tools: 1 do something that can't be undone, 2 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things2Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http reference-data https://reference-data.caseyjhand.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "ref_timezone_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_timezone_convert" says "convert": a word for a change.
- Warnref_unit_convert
The server marks "ref_unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_unit_convert" says "convert": a word for a change.
- Warnref_mime_type
The server marks "ref_mime_type" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_mime_type" says "type": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Can't be undone 1Claude Code: ask
ref_unit_convertConvert a numeric value between compatible units of measure.1 finding
Why it is in this group
- The name "ref_unit_convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "ref_unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_unit_convert" says "convert": a word for a change.
Description, as the server wrote it Convert a numeric value between compatible units of measure. Supports: length (mm, cm, m, km, in, ft, yd, mi), mass (mcg, mg, g, kg, oz, lb, mt = metric tonne / 1000 kg, t = US short ton / 907.18 kg), volume (ml, cl, dl, l, kl, tsp, Tbs, fl-oz, cup, pnt, qt, gal, m3), temperature (C, F, K, R — non-linear conversions handled), speed (m/s, km/h, knot, ft/s), pressure (Pa, kPa, MPa, hPa, bar, torr, psi), energy (J, kJ, Wh, kWh, MWh), power (W, mW, kW, MW, GW), frequency (Hz, kHz, MHz, GHz), digital storage (b, Kb, Mb, Gb, Tb, B, KB, MB, GB, TB), and angle (deg, rad, grad). Incompatible units (e.g., km to kg) return an error identifying the quantity mismatch.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
Changes things 2Claude Code: ask
ref_mime_typeLook up a MIME type by type string or file extension.1 finding
Why it is in this group
- The name "ref_mime_type" says "type": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "ref_mime_type" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_mime_type" says "type": a word for a change.
Description, as the server wrote it Look up a MIME type by type string or file extension. Accepts "image/webp", ".webp", or "webp". Returns the canonical MIME type, known file extensions, whether the type is compressible (relevant for Content-Encoding decisions), and the data source (iana, apache, nginx). For extension lookups, returns the canonical MIME type — e.g., ".jpg" resolves to "image/jpeg". When multiple types map to an extension, the canonical type is returned first with alternatives listed.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_timezone_convertConvert a local datetime from one timezone to another.1 finding
Why it is in this group
- The name "ref_timezone_convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "ref_timezone_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "ref_timezone_convert" says "convert": a word for a change.
Description, as the server wrote it Convert a local datetime from one timezone to another. Takes a local time string (no UTC offset, e.g., "2026-05-24T15:30:00") interpreted as local time in the source timezone, returns the equivalent local time in the target timezone. Shows both UTC offsets so DST transitions are visible. Accepts full IANA IDs (e.g., "Asia/Tokyo") or unambiguous city names (e.g., "Tokyo").
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
Only reads 7Claude Code: allow
ref_constant_lookupLook up a fundamental physical constant by name, symbol, or common alias.No findings
Why it is in this group
- The name "ref_constant_lookup" says "lookup": a word for reading.
Description, as the server wrote it Look up a fundamental physical constant by name, symbol, or common alias. Returns the CODATA 2022 value, SI unit expression, relative standard uncertainty, and a short description. Recognizes common names and symbols — "speed of light", "c", "Avogadro's number", "N_A", "Planck", "h", "Boltzmann", "k_B" all resolve correctly. Fuzzy matching returns the closest match plus alternatives.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_element_lookupLook up a periodic table element by name, chemical symbol, or atomic number.No findings
Why it is in this group
- The name "ref_element_lookup" says "lookup": a word for reading.
Description, as the server wrote it Look up a periodic table element by name, chemical symbol, or atomic number. Returns the full data record: atomic number, symbol, name, atomic mass (in unified atomic mass units), electron configuration, group, period, block, category (e.g., "noble gas", "transition metal"), Pauling electronegativity, density (g/cm³), melting and boiling points in kelvin, and discovery year. Properties unavailable for synthetic or insufficiently studied elements are returned as null.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_element_searchFilter periodic table elements by category, group, period, atomic number range, or atomic mass range.No findings
Why it is in this group
- The name "ref_element_search" says "search": a word for reading.
Description, as the server wrote it Filter periodic table elements by category, group, period, atomic number range, or atomic mass range. At least one filter is required. Returns matching elements as a summary list. Use ref_element_lookup for the full record on a specific element. Valid categories: alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, reactive nonmetal, noble gas, lanthanide, actinide.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_geo_lookupLook up a country by name, ISO alpha-2 code (2 letters), or ISO alpha-3 code (3 letters).No findings
Why it is in this group
- The name "ref_geo_lookup" says "lookup": a word for reading.
Description, as the server wrote it Look up a country by name, ISO alpha-2 code (2 letters), or ISO alpha-3 code (3 letters). Returns the full record: capital, region, official languages, currencies, calling codes, TLD, flag emoji, and IANA timezone IDs. Accepts fuzzy name matching — "Brasil" and "Brazil" both resolve.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_geo_searchSearch and filter countries by region, subregion, language, currency, or free-text keyword.No findings
Why it is in this group
- The name "ref_geo_search" says "search": a word for reading.
Description, as the server wrote it Search and filter countries by region, subregion, language, currency, or free-text keyword. At least one filter is required. Returns a ranked list of matching country summaries. Use ref_geo_lookup to get the full record for a specific result.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_http_statusLook up an HTTP status code by number or keyword.No findings
Why it is in this group
- The name "ref_http_status" says "status": a word for reading.
Description, as the server wrote it Look up an HTTP status code by number or keyword. Returns the reason phrase, description, category (1xx Informational, 2xx Success, 3xx Redirection, 4xx Client Error, 5xx Server Error), whether the code is cacheable by default, and the defining RFC with section reference. For keyword queries, returns the closest match plus alternatives.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
ref_timezone_lookupGet timezone info by IANA ID, country code, or partial city/region name.No findings
Why it is in this group
- The name "ref_timezone_lookup" says "lookup": a word for reading.
Description, as the server wrote it Get timezone info by IANA ID, country code, or partial city/region name. Returns current UTC offset, standard offset, whether DST is currently active, and major cities in the timezone. When querying by country code (ISO alpha-2), returns all timezones observed in that country. Accepts partial matches — "Tokyo" resolves to "Asia/Tokyo", "NY" resolves to "America/New_York".
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.17. Values in angle brackets are yours to fill in.
claude mcp add --transport http reference-data https://reference-data.caseyjhand.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__reference-data__ref_geo_lookup",
"mcp__reference-data__ref_geo_search",
"mcp__reference-data__ref_timezone_lookup",
"mcp__reference-data__ref_element_lookup",
"mcp__reference-data__ref_element_search",
"mcp__reference-data__ref_constant_lookup",
"mcp__reference-data__ref_http_status"
],
"ask": [
"mcp__reference-data__ref_timezone_convert",
"mcp__reference-data__ref_unit_convert",
"mcp__reference-data__ref_mime_type"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as reference-data. Review it before you use it.
