Plan US National Park Service trips — find parks, check alerts and closures, find campgrounds, and browse things to do and events via the NPS Data API. STDIO or Streamable HTTP.
git clone https://github.com/cyanheads/national-parks-mcp-server{
"mcpServers": {
"national-parks": {
"command": "node",
"args": ["/path/to/national-parks-mcp-server/dist/index.js"],
"env": {
"NPS_API_KEY": "<nps_api_key>"
}
}
}
}NPS_API_KEYMCP Servers overview
<div align="center"> <h1>@cyanheads/national-parks-mcp-server</h1> <p><b>Plan US National Park Service trips — find parks, check alerts and closures, find campgrounds, browse things to do and events via the NPS Data API. STDIO or Streamable HTTP.</b> <div>6 Tools</div> </p> </div> <div align="center"> [](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/national-parks-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/national-parks-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/) </div> <div align="center"> [](https://github.com/cyanheads/national-parks-mcp-server/releases/latest/download/national-parks-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=national-parks-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvbmF0aW9uYWwtcGFya3MtbWNwLXNlcnZlciJdLCJlbnYiOnsiTlBTX0FQSV9LRVkiOiJ5b3VyLWFwaS1rZXkifX0=) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22national-parks-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fnational-parks-mcp-server%22%5D%2C%22env%22%3A%7B%22NPS_API_KEY%22%3A%22your-api-key%22%7D%7D) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) </div> --- ## Tools Six tools shaped around the trip-planning workflow — resolve a park, then key the detail tools on its code: | Tool | Description | |:---|:---| | `nps_find_parks` | Resolve a place name, US state, or free-text query to parks — the required first step. Returns each park's `parkCode` plus a trip-planning summary. | | `nps_get_park` | Full detail for up to ten parks in one batched call: description, activities, fees & passes, hours, contacts, directions, weather overview, images. | | `nps_get_alerts` | Current alerts for a park or state — closures, hazards, caution, information — with category and recency surfaced first. | | `nps_find_campgrounds` | Campgrounds at a park or state: amenities, reservable vs. first-come site counts, reservation info, accessibility, and fees. | | `nps_get_activities` | Curated things to do and points of interest: title, duration, location, accessibility, and fee/pet/reservation flags. | | `nps_find_events` | Scheduled events within a date range: dates/times, location, category, fee, and registration links. | Coverage is **US National Park Service sites only** — national parks, monuments, historic sites, seashores — not state parks and not Forest Service or BLM land. ### The `parkCode` spine `parkCode` (e.g. `yose`, `grca`, `zion`) is the join key for the whole API. The workflow is two steps: 1. **`nps_find_parks`** resolves a name / state / query → `parkCode`(s) plus a summary. 2. **`nps_get_park`**, **`nps_get_alerts`**, **`nps_find_campgrounds`**, **`nps_get_activities`**, **`nps_find_events`** key on that `parkCode`. `nps_get_alerts`, `nps_find_campgrounds`, and `nps_find_events` also accept a `stateCode` for statewide queries without a code (e.g. "is anything closed in Montana's parks?"). The coordinates returned by `nps_find_parks` / `nps_get_park` feed weather servers (`nws-weather`, `open-meteo`) for a forecast. --- ### `nps_find_parks` Resolve a place name, US state, or free-text query into NPS parks — the entry point. - Free-text search across park names and descriptions (e.g. `"yosemite"`, `"civil war"`, `"redwood"`) - Filter by two-letter `stateCode` or a comma-separated list (e.g. `"CA"`, `"WY,MT,ID"`) - Optional `activity` filter — case-insensitive substring match applied locally over the returned page (narrows what was fetched; does not search all ~470 sites) - Pagination via `limit` (1–50, default 10) and `start` offset - Summary carries `parkCode`, designation, states, description, coordinates, headline activities, lowest entrance fee, and the NPS page - Enrichment reports `totalCount`, applied-filter echo, and broadening guidance when nothing matched --- ### `nps_get_park` Full trip-planning detail for one or more parks by `parkCode`. - Batch up to **10 codes in a single upstream call** - Always-present core: name, designation, states, description, coordinates, weather overview, NPS page - Optional `fields` selector (`activities`, `topics`, `fees`, `hours`, `contacts`, `directions`, `images`) trims the payload to the sections you need - Entrance fees and passes broken out by category; operating hours by area/season with per-weekday values; phone and email contacts; representative images (capped at 5) - Unresolved codes surface as `missingCodes` enrichment with a correction hint; only a fully-empty result is an error --- ### `nps_get_alerts` Current alerts for a park or a whole state, with category and recency leading. - Filter by `parkCode`, `stateCode`, or free-text `query`; optional `category` (`Danger`, `Caution`, `Information`, `Park Closure`) - Sorted most-recent-first; `format()` orders `Danger` / `Park Closure` ahead of the rest - `categoryBreakdown` enrichment counts returned alerts per category so severity is legible without scanning each one - An empty result is explicitly framed as good news (the park reports nothing closed or hazardous), not an error - `lastIndexedDate` is the recency signal — a stale date may mean the condition has changed --- ### `nps_find_campgrounds` Campgrounds at a park or across a state, flattened to what a camper filters on. - Filter by `parkCode`, `stateCode`, or free-text `query`; `limit` (1–50, default 15) and `start` pagination - Amenity booleans: potable water, showers, RV dump station, toilets, trash collection, RV access — normalized from NPS's mixed array/string amenity fields - Reservable vs. first-come-first-served site counts, total sites, reservation guidance and booking URL (often recreation.gov) - Lowest fee, accessibility summary, coordinates, and the campground's NPS page - Some parks list lodging or backcountry permits instead of NPS-managed campgrounds; an empty result is not an error --- ### `nps_get_activities` Curated things to do and points of interest, backed by the NPS `/thingstodo` list (distinct from a park's raw activity tags). - Accepts a **single** 4-letter `parkCode` or a **single** two-letter `stateCode` — at least one is required - Free-text `query`; `limit` (1–50, default 15) and `start` pagination - Per activity: title, short description, time commitment, location, coordinates, accessibility, season, and the NPS page - Reservation-required and pets-permitted booleans; fee description (absence does not guarantee free) - Not every park has a curated list; an empty result is not an error --- ### `nps_find_events` Scheduled events at a park within a date range — ranger programs, festivals, tours, interpretive events. - Filter by `parkCode`, `stateCode`, or free-text `query`; bound the window with `dateStart` / `dateEnd` (`YYYY-MM-DD`) - **Page-based pagination** (`pageNumber` / `pageSize`), not offset — the `/events` endpoint differs from the rest of the API - Per event: title, date range, time slots, location, category, fee info, and registration / info URLs (HTML stripped to plain text) - The events feed is sparser and less consistent than alerts or campgrounds; many parks list few or no events - A non-empty upstream `errors[]` array folds into the result notice as a warning rather than failing the request ## Features Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): - Declarative tool definitions — single file per tool, framework handles registration and validation - Unified error handling — handlers throw, framework catches, classifies, and formats - Pluggable auth: `none`, `jwt`, `oauth` - Swappable storage backends: `in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1` - Structured logging with optional OpenTelemetry tracing - STDIO and Streamable HTTP transports — same codebase runs locally or on Cloudflare Workers NPS-specific: - One service wrapping the NPS Data API (`developer.nps.gov/api/v1`, `X-Api-Key` auth) across six trip-planning endpoints - Aggressive normalization of NPS's inconsistent payloads — numeric and boolean fields returned as strings, nested values (`campsites.totalSites`), array-typed amenity fields, and the distinct `/events` envelope with lowercased field names — coerced to clean domain types before they reach handlers - `nps_get_park` batches up to ten park codes into a single upstream request - Light retry on transient upstream failures (5xx / network); a missing or invalid key fails loud and names `NPS_API_KEY` Agent-friendly output: - Result-set context on every response — `totalCount`, truncation (`shown` / `cap`), applied-filter echo, and empty-result notices reach both the structured and text surfaces - The `parkCode`-first workflow is encoded in every tool description; `nps_get_park` returns `missingCodes` so a wro
What people ask about national-parks-mcp-server
What is cyanheads/national-parks-mcp-server?
+
cyanheads/national-parks-mcp-server is mcp servers for the Claude AI ecosystem. Plan US National Park Service trips — find parks, check alerts and closures, find campgrounds, and browse things to do and events via the NPS Data API. STDIO or Streamable HTTP. It has 1 GitHub stars and was last updated today.
How do I install national-parks-mcp-server?
+
You can install national-parks-mcp-server by cloning the repository (https://github.com/cyanheads/national-parks-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/national-parks-mcp-server safe to use?
+
cyanheads/national-parks-mcp-server has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains cyanheads/national-parks-mcp-server?
+
cyanheads/national-parks-mcp-server is maintained by cyanheads. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to national-parks-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy national-parks-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-national-parks-mcp-server)<a href="https://claudewave.com/repo/cyanheads-national-parks-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-national-parks-mcp-server" alt="Featured on ClaudeWave: cyanheads/national-parks-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。