national-parks-mcp-server
Server Details
Plan US National Park Service trips — parks, alerts, campgrounds, things to do, events.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/national-parks-mcp-server
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 6 of 6 tools scored.
Each tool targets a distinct area: parks, campgrounds, events, activities, alerts, and park details. There is no overlap in purpose, making it easy for an agent to select the correct tool.
All tools follow the consistent pattern 'nps_[verb]_[noun]' using snake_case. Verbs are either 'find' for search operations or 'get' for retrieval by park code, with no deviations.
With 6 tools, the server covers essential trip-planning functionality without being overwhelming. Each tool is well-justified and the count feels appropriate for the domain.
The tool set covers parks, campgrounds, events, activities, alerts, and park details. Missing dedicated tools for trails or lodging, but campgrounds partially address lodging and park details provide weather. Overall solid coverage.
Available Tools
6 toolsnps_find_campgroundsnational-parks-mcp-server: find campgroundsRead-onlyInspect
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 — answering "where can I camp at Zion, and can I get an RV hookup?" 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 | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum campgrounds to return (1–50). | |
| query | No | Free-text search across campground names/descriptions (e.g. "river", "group", "rv"). | |
| start | No | Zero-based pagination offset. | |
| parkCode | No | Park code, or comma-separated list (e.g. "zion") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode. | |
| stateCode | No | Two-letter state code, or comma-separated list. Returns campgrounds across all NPS sites in those states. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Limit applied (populated when results were truncated). |
| shown | No | Campgrounds returned in this response (populated when capped by limit). |
| notice | No | Guidance when no campgrounds matched. |
| totalCount | Yes | Total campgrounds matching the filter before the limit was applied. |
| campgrounds | Yes | Campgrounds at the requested park(s)/state(s). |
| appliedFilters | Yes | Echo of parkCode/stateCode/query as applied. |
nps_find_eventsnational-parks-mcp-server: find eventsRead-onlyInspect
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. The events feed is sparser and less consistent than alerts or campgrounds; many parks list few or no events, and an empty result is not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text search across event titles/descriptions (e.g. "ranger", "astronomy", "guided"). | |
| dateEnd | No | End of the date window (YYYY-MM-DD). Use with dateStart. | |
| pageSize | No | Maximum events to return per page (1–50). Paginates by page number, not offset — use with pageNumber to walk through results. | |
| parkCode | No | Park code, or comma-separated list (e.g. "yell") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode. | |
| dateStart | No | 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. | |
| stateCode | No | Two-letter state code, or comma-separated list (e.g. "WY", "WY,MT,ID"). Returns events across NPS sites in those states. | |
| pageNumber | No | 1-based page number. Increment to page through results beyond the first page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Page size applied (populated when results were truncated). |
| shown | No | Events returned on this page (populated when the page was capped by pageSize). |
| events | Yes | Events matching the park/state and date window. |
| notice | No | Guidance when no events matched, or a warning when the upstream envelope reported errors. |
| totalCount | Yes | Total events matching the filter before the page limit. |
| appliedFilters | Yes | Echo of parkCode/stateCode/date window/query as applied. |
nps_find_parksnational-parks-mcp-server: find parksRead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum parks to return (1–50). The full set is ~470 sites; narrow with query/stateCode rather than paging through everything. | |
| query | No | Free-text search across park names and descriptions (e.g. "yosemite", "civil war", "redwood"). Results are re-ranked locally so an exact parkCode or name match leads: NPS returns matches in alphabetical-by-code order with no relevance ranking, so without this the obvious park can sit behind sites that only mention the term in their description. Omit to browse by state. At least one of query or stateCode is recommended; with neither, returns the first page of all ~470 NPS sites. | |
| start | No | Zero-based offset for pagination within the matched set. Use with limit to page through results. | |
| activity | No | Filter to parks offering an activity, matched against each park's activities list (e.g. "hiking", "camping", "stargazing"). Case-insensitive substring match applied locally (the API has no activity param) across every site matching query/stateCode, then paginated with start/limit — so totalCount is the true count of matching parks, not a per-page tally. Use nps_get_park to see a park's full activity list. | |
| stateCode | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to this response (populated when results were truncated). |
| parks | Yes | Matching parks, each carrying the parkCode needed to chain into the detail tools. |
| shown | No | Number of parks returned in this response (populated when the result set was capped by limit). |
| notice | No | Guidance when no parks matched — suggests broadening the query, checking the state code, or dropping the activity filter. |
| totalCount | Yes | Total parks matching the query/state filter before the limit was applied. |
| appliedFilters | Yes | Echo of the filters as the server applied them (query / stateCode / activity), so the agent can see what was searched. |
nps_get_activitiesnational-parks-mcp-server: get activitiesRead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum activities to return (1–50). | |
| query | No | Free-text search across activity titles/descriptions (e.g. "sunrise", "hike", "tour"). | |
| start | No | Zero-based pagination offset. | |
| parkCode | No | 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. | |
| stateCode | No | A single two-letter state code (e.g. "ME"). Returns curated activities across NPS sites in that state. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Limit applied (populated when results were truncated). |
| shown | No | Activities returned in this response (populated when capped by limit). |
| notice | No | Guidance when no curated activities matched. |
| activities | Yes | Curated activities and points of interest for the requested park/state. |
| totalCount | Yes | Total activities matching the filter before the limit was applied. |
| appliedFilters | Yes | Echo of parkCode/stateCode/query as applied. |
nps_get_alertsnational-parks-mcp-server: get alertsRead-onlyInspect
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 the park reports nothing closed or hazardous — good news, not an error. An empty page with a non-zero totalCount only means start ran past the end, so read the notice rather than the empty list. Closures and road conditions change daily — re-check before departure.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum alerts to return (1–50), most-recent first. | |
| query | No | Free-text search within alert titles/descriptions (e.g. "road", "wildfire", "trail"). | |
| start | No | 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. | |
| category | No | Filter to one alert category. "Danger" and "Park Closure" are the high-priority ones for trip safety. Applied locally (the API has no category param) across every alert matching parkCode/stateCode/query, then paginated with start/limit — so totalCount is the true count of matching alerts, not a per-page tally. Omit to see all categories (the default — closures and hazards should not be missed). | |
| parkCode | No | 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-wide. | |
| stateCode | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Limit applied (populated when results were truncated). |
| shown | No | Alerts returned in this response (populated when capped by limit). |
| alerts | Yes | Current alerts, sorted most-recent first. An empty array with totalCount 0 means no active alerts — good news, not an error; with a non-zero totalCount it means start paged past the end of the matches. The notice says which. |
| notice | No | Message when the page is empty — states which case it is: good news (totalCount 0, the park reports nothing closed/hazardous right now) or a paging artifact (start ran past the end of a non-empty matched set). |
| totalCount | Yes | Total alerts matching the filter before the limit was applied. |
| appliedFilters | Yes | Echo of parkCode/stateCode/category/query as applied. |
| categoryBreakdown | Yes | Count of returned alerts per category (e.g. "Park Closure: 3, Caution: 1, Information: 2") — gauge severity without scanning every alert. |
nps_get_parknational-parks-mcp-server: get park detailRead-onlyInspect
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. Up to ten codes are fetched in a single request. Use the fields parameter to trim the payload when you only need certain sections.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | 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 need, say, hours and fees. | |
| parkCode | Yes | One to ten park codes (each a 4-letter lowercase code like "yose", "grca", "zion"). Get codes from nps_find_parks. Multiple codes are fetched in a single request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| parks | Yes | Requested parks with trip-planning detail. |
| notice | No | Guidance when one or more codes did not resolve, or when none did. |
| missingCodes | No | Requested park codes the API returned no record for — likely invalid/misspelled codes. Populated only when some codes did not resolve. |
| returnedCount | Yes | Number of parks the API returned. |
| requestedCount | Yes | Number of park codes requested. |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!