io.github.cyanheads/national-parks-mcp-server
REMOTE · NATIONAL-PARKS.CASEYJHAND.COM · 2 COMPONENTS
Plan US National Park Service trips — parks, alerts, campgrounds, things to do, events.
Available components
Last scanned (6 hours ago)
Scores higher than 97% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Maps and Location
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 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 2051 tokens (~293/item across 7 items; 6 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 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 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
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
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.
- 5 Nov 26 +1
- Stability: 0.97 → pass security
- 4 Nov 26 −1
- Stability: pass → 0.97 functional
- 28 Oct 26 +2
- Tool “nps_find_campgrounds” rewrote its description, which is the text the model reads security
- Schema quality: 334 → 293 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- New resource “national-parks-guide” functional
- Server version: 0.2.2 → 0.3.0 functional
- 25 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Server version: 0.2.1 → 0.2.2 functional
- 10 Oct 26 0
- Server version: 0.2.0 → 0.2.1 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 0
- Tool “nps_get_park” rewrote its description, which is the text the model reads security
- Tool “nps_find_events” rewrote its description, which is the text the model reads security
- Tool “nps_get_alerts” rewrote its description, which is the text the model reads security
- Server version: 0.1.7 → 0.2.0 functional
- “nps_find_parks” reworded the description of “query” cosmetic
- “nps_find_parks” reworded the description of “activity” cosmetic
- “nps_get_park” reworded the description of “parkCode” cosmetic
- “nps_get_alerts” reworded the description of “category” cosmetic
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://national-parks.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 national-parks.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| caseyjhand.com. | DS published | 2371 | 13 | Verified |
| national-parks.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://national-parks.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://national-parks.caseyjhand.com/mcp | HTTPS enforced | 301 | https://national-parks.caseyjhand.com/mcp |
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 →
nps_find_campgrounds national-parks-mcp-server: find campgrounds ~240
Campgrounds at a park or across a state: amenities (potable water, showers, RV dump station, toilets, trash collection, RV access), reservable vs. first-come-first-served site counts, reservation guidance and booking URL, accessibility, and fees. Check the linked campground page for RV hookups and date-specific availability. Get park codes from nps_find_parks. Some parks list lodging or backcountry permits instead of NPS-managed campgrounds; an empty result is not an error.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum campgrounds to return (1–50). |
| parkCode | string | – | Park code, or comma-separated list (e.g. "zion") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode. |
| query | string | – | Free-text search across campground names/descriptions (e.g. "river", "group", "rv"). |
| start | integer | – | Zero-based pagination offset. |
| stateCode | string | – | Two-letter state code, or comma-separated list. Returns campgrounds across all NPS sites in those states. |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | string | – | Echo of parkCode/stateCode/query as applied. |
| campgrounds | array | – | Campgrounds at the requested park(s)/state(s). |
| cap | number | – | Limit applied (populated when results were truncated). |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance on the result set: where else to look when no campgrounds matched, the start value for the next page when more matched, or the way back when start ran past the end. |
| shown | number | – | Campgrounds returned in this response (populated when capped by limit). |
| totalCount | number | – | Total campgrounds matching the filter before the limit was applied. |
| truncated | boolean | – | True when more campgrounds matched than this response returned; absent on a complete result. |
No examples provided.
nps_find_events national-parks-mcp-server: find events ~330
Scheduled events at a park within a date range — ranger programs, festivals, tours, interpretive events — answering "what's happening at Yellowstone this weekend?" with title, dates and times, location, category, fee, and registration links. Get park codes from nps_find_parks. Paginates by page number, not offset. Many parks list few or no events; an empty result is not an error.
| Name | Type | Req | Description |
|---|---|---|---|
| dateEnd | string | – | End of the date window (YYYY-MM-DD). Use with dateStart. |
| dateStart | string | – | Start of the date window (YYYY-MM-DD). Combine with dateEnd to bound the search (e.g. a weekend). Omit for upcoming events from today. |
| pageNumber | integer | – | 1-based page number. Increment to page through results beyond the first page. |
| pageSize | integer | – | Maximum events to return per page (1–50). Paginates by page number, not offset — use with pageNumber to walk through results. |
| parkCode | string | – | Park code, or comma-separated list (e.g. "yell") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode. |
| query | string | – | Free-text search across event titles/descriptions (e.g. "ranger", "astronomy", "guided"). |
| stateCode | string | – | Two-letter state code, or comma-separated list (e.g. "WY", "WY,MT,ID"). Returns events across NPS sites in those states. |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | string | – | Echo of parkCode/stateCode/date window/query as applied. |
| cap | number | – | Page size applied (populated when results were truncated). |
| error | object | – | Present when the call failed. Absent on success. |
| events | array | – | Events matching the park/state and date window. |
| notice | string | – | Guidance on the result set: how to widen a search that matched nothing, the pageNumber for the next page when more events matched, the way back when pageNumber ran past the end, and a warning when NP… |
| shown | number | – | Events returned on this page (populated when the page was capped by pageSize). |
| totalCount | number | – | Total events matching the filter before the page limit. |
| truncated | boolean | – | True when more matching events follow this page; absent on the last page of the result. |
No examples provided.
nps_find_parks national-parks-mcp-server: find parks ~424
Resolve a place name, US state, or free-text query to National Park Service parks — the required first step before the detail tools. Returns each park's parkCode (the key nps_get_park, nps_get_alerts, nps_find_campgrounds, nps_get_activities, and nps_find_events all use) plus a compact trip-planning summary (designation, states, description, coordinates, headline activities, entrance fee, NPS page). Coverage is US NPS sites only — national parks, monuments, historic sites, seashores — not state parks and not Forest Service or BLM land.
| Name | Type | Req | Description |
|---|---|---|---|
| activity | string | – | Filter to parks offering an activity, matched against each park's activities list (e.g. "hiking", "camping", "stargazing"). Case-insensitive substring match, combined with query/stateCode and applied… |
| limit | integer | – | Maximum parks to return (1–50). The full set is ~470 sites; narrow with query/stateCode rather than paging through everything. |
| query | string | – | Free-text search across park names and descriptions (e.g. "yosemite", "civil war", "redwood"). Exact parkCode or name matches lead, then other name matches, then parks that only mention the term in t… |
| start | integer | – | Zero-based offset for pagination within the matched set. Use with limit to page through results. |
| stateCode | string | – | Two-letter US state/territory code, or comma-separated list (e.g. "CA", "WY,MT,ID"). Filters to parks located in those states. Combine with query to narrow. |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | string | – | Echo of the filters as applied (query / stateCode / activity). |
| cap | number | – | The limit applied to this response (populated when results were truncated). |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance on the result set: how to broaden a search that matched nothing, the start value for the next page when more parks matched, the way back when start ran past the end, and a best-effort disclo… |
| parks | array | – | Matching parks, each carrying the parkCode needed to chain into the detail tools. |
| shown | number | – | Number of parks returned in this response (populated when the result set was capped by limit). |
| totalCount | number | – | Total parks matching every filter, before start/limit were applied. |
| truncated | boolean | – | True when more parks matched than this response returned; absent on a complete result. |
No examples provided.
nps_get_activities national-parks-mcp-server: get activities ~253
Curated things to do and points of interest at a park — title, description, time commitment, location, accessibility, and fee/pet/reservation flags — answering "what should I do at Acadia?" Covers the NPS editorially-curated activity list (distinct from a park's raw activity tags in nps_get_park). Accepts a single 4-letter park code or a single two-letter state code, and at least one is required. Not every park has a curated list; an empty result is not an error.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum activities to return (1–50). |
| parkCode | string | – | A single 4-letter lowercase park code (e.g. "acad"). Get it from nps_find_parks. Accepts one park code, not a list. Provide parkCode or stateCode. |
| query | string | – | Free-text search across activity titles/descriptions (e.g. "sunrise", "hike", "tour"). |
| start | integer | – | Zero-based pagination offset. |
| stateCode | string | – | A single two-letter state code (e.g. "ME"). Returns curated activities across NPS sites in that state. |
| Name | Type | Req | Description |
|---|---|---|---|
| activities | array | – | Curated activities and points of interest for the requested park/state. |
| appliedFilters | string | – | Echo of parkCode/stateCode/query as applied. |
| cap | number | – | Limit applied (populated when results were truncated). |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance on the result set: where else to look when no curated activities matched, the start value for the next page when more matched, or the way back when start ran past the end. |
| shown | number | – | Activities returned in this response (populated when capped by limit). |
| totalCount | number | – | Total activities matching the filter before the limit was applied. |
| truncated | boolean | – | True when more activities matched than this response returned; absent on a complete result. |
No examples provided.
nps_get_alerts national-parks-mcp-server: get alerts ~401
Current alerts for a park or a whole state — closures, hazards, caution notices, and information — with category and recency surfaced first so "is anything closed at Glacier right now?" is answered at a glance. Get park codes from nps_find_parks, or pass a stateCode for a statewide "what's closed" sweep. Returns most-recent-first. An empty result with totalCount 0 means no active alerts match the request (with category or query set, alerts outside that filter may still be active); an empty page with a non-zero totalCount means start ran past the end of the matches. Closures and road conditions change daily.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter to one alert category. "Danger" and "Park Closure" are trip-affecting. Combined with parkCode/stateCode/query and applied before start/limit, so totalCount counts every matching alert, not one… |
| limit | integer | – | Maximum alerts to return (1–50), most-recent first. |
| parkCode | string | – | Park code, or comma-separated list (e.g. "glac", "yose,zion") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode; with neither, returns recent alerts service-wid… |
| query | string | – | Free-text search within alert titles/descriptions (e.g. "road", "wildfire", "trail"). |
| start | integer | – | Zero-based offset for pagination within the matched set. Use with limit to page through results — when totalCount exceeds what was returned, re-request with start advanced by limit. |
| stateCode | string | – | Two-letter state code, or comma-separated list (e.g. "MT", "WY,MT,ID"). Returns alerts for all NPS sites in those states — use for a statewide sweep rather than one park. |
| Name | Type | Req | Description |
|---|---|---|---|
| alerts | array | – | Current alerts, most-recent first. Empty with totalCount 0 means no active alerts match the request; empty with a non-zero totalCount means start ran past the end of the matches. |
| appliedFilters | string | – | Echo of parkCode/stateCode/category/query as applied. |
| cap | number | – | Limit applied (populated when results were truncated). |
| categoryBreakdown | string | – | Count of returned alerts per category, most severe first (e.g. "Park Closure: 3, Caution: 1, Information: 2"). |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance on the result set: whether an empty page means no active alerts match (totalCount 0) or start ran past the end of the matches, the start value for the next page when more alerts matched, and… |
| shown | number | – | Alerts returned in this response (populated when capped by limit). |
| totalCount | number | – | Total alerts matching the filter before the limit was applied. |
| truncated | boolean | – | True when more alerts matched than this response returned; absent on a complete result. |
No examples provided.
nps_get_park national-parks-mcp-server: get park detail ~193
Full trip-planning detail for one or more parks by parkCode: description, activities and topics, entrance fees and passes, operating hours by area/season, contacts, directions, a free-text weather overview, representative images, and the NPS page for everything else. Get codes from nps_find_parks. Accepts up to ten codes per call. Use the fields parameter to return only the sections you need.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Optional detail sections to include beyond the always-present core (name, designation, states, description, coordinates, weather, url). Omit for all sections. Narrow to reduce payload when you only n… |
| parkCode | array | yes | One to ten park codes per call, each a 4-letter lowercase code (e.g. "yose", "grca", "zion"). Get codes from nps_find_parks. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| missingCodes | array | – | Requested park codes that matched no NPS site — likely misspelled. Populated only when some codes did not resolve. |
| notice | string | – | Guidance when one or more codes did not resolve, or when none did. |
| parks | array | – | Requested parks with trip-planning detail. |
| requestedCount | number | – | Number of park codes requested. |
| returnedCount | number | – | Number of requested parks found. |
No examples provided.
How do I install the io.github.cyanheads/national-parks-mcp-server server?
io.github.cyanheads/national-parks-mcp-server is a hosted endpoint at https://national-parks.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 · national-parks.caseyjhand.com
claude mcp add --transport http cyanheads-national-parks-mcp-server 'https://national-parks.caseyjhand.com/mcp'
What is the io.github.cyanheads/national-parks-mcp-server server?
io.github.cyanheads/national-parks-mcp-server is listed in the public MCP registry as io.github.cyanheads/national-parks-mcp-server. Plan US National Park Service trips, parks, alerts, campgrounds, things to do, events. This page covers its hosted endpoint (https://national-parks.caseyjhand.com/mcp).
Is the io.github.cyanheads/national-parks-mcp-server server safe to use?
io.github.cyanheads/national-parks-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/national-parks-mcp-server server expose?
io.github.cyanheads/national-parks-mcp-server exposes 6 tools: nps_find_parks, nps_get_park, nps_get_alerts, nps_find_campgrounds, nps_get_activities, nps_find_events. Their descriptions and schemas cost roughly 1,841 tokens of context every time the server is loaded.
Does the io.github.cyanheads/national-parks-mcp-server server require authentication?
No. We connected to io.github.cyanheads/national-parks-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/national-parks-mcp-server server still maintained?
io.github.cyanheads/national-parks-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.
What did VerifyMCP test on the io.github.cyanheads/national-parks-mcp-server server?
VerifyMCP ran 13 checks on io.github.cyanheads/national-parks-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.