Npn
MCP server for the USA National Phenology Network (NPN). Eight tools for phenology data: species, stations, observations, site-level phenometrics, and a place-aware 'active phenology' helper. No API key required.
Ask AI about Npn
Powered by Claude Β· Grounded in docs
I know everything about Npn. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
pondlog
Place-aware nature data aggregation. What's happening in nature at
these coordinates right now? Pondlog stitches together free public
APIs β iNaturalist, eBird, USA-NPN, USGS, Mushroom Observer β plus
local astronomy computation (astronomy-engine) and NOAA tides/cloud
cover into a unified data layer with two interfaces:
- A CLI for humans (
pondlog inat nearby --lat 48.118 --lng -123.43) - An MCP server per source for AI agents (Claude Desktop, Cursor)
Packages
| Package | npm | What it does |
|---|---|---|
pondlog | Unified CLI | |
@pondlog/core | Shared types, Result<T>, rate limiter, utils | |
@pondlog/source-inaturalist | iNaturalist API client | |
@pondlog/source-ebird | eBird API client (21 endpoints) | |
@pondlog/source-npn | USA-NPN phenology client | |
@pondlog/source-usgs | USGS Water Services client | |
@pondlog/source-nightsky | Local night-sky briefing (astronomy-engine) | |
@pondlog/source-mushroomobserver | Mushroom Observer (mycology) client | |
@pondlog/source-trefle | Trefle.io plant taxonomy client | |
@pondlog/mcp-inaturalist | iNaturalist MCP server (9 tools) | |
@pondlog/mcp-ebird | eBird MCP server (21 tools) | |
@pondlog/mcp-npn | NPN MCP server (8 tools) | |
@pondlog/mcp-usgs | USGS MCP server (4 tools) | |
@pondlog/mcp-mushroomobserver | Mushroom Observer MCP server (5 tools, mycology-first) | |
@pondlog/mcp-garden | Garden-planning MCP server (5 tools β first plant/garden MCP on any registry) | |
@pondlog/mcp-pondlog | Aggregate MCP server (5 tools, all eight sources) |
Status
| Source | Library | CLI | MCP |
|---|---|---|---|
| iNaturalist | β | β | β |
| eBird | β | β | β |
| NPN (phenology) | β | β | β |
| USGS (water) | β | β | β |
| Mushroom Observer (mycology) | β | β | β |
| Garden (USDA zones + 1000-crop calendar, climate-aware + Trefle) | β | β | β |
Night sky (astronomy-engine) | β | β | β
(via mcp-pondlog) |
Aggregate (pondlog today / mcp-pondlog) | β | β | β |
Quick start
As an AI agent (MCP)
Add to your Claude Desktop config
(~/Library/Application Support/Claude/claude_desktop_config.json on
macOS):
{
"mcpServers": {
"pondlog-inaturalist": {
"command": "npx",
"args": ["-y", "@pondlog/mcp-inaturalist"]
}
}
}
Then ask Claude:
What amphibians have been seen near Port Angeles, WA in the last week?
The same JSON works in ~/.cursor/mcp.json for Cursor.
As a human (CLI)
npm install -g pondlog
pondlog config set-location --lat 48.118 --lng -123.4307 --name "Port Angeles"
pondlog inat nearby
pondlog ebird notable
pondlog npn active
pondlog usgs flow --site 12045500
pondlog nightsky # tonight's curated briefing
--json works on every command for machine output.
Design principles
- One data layer, two interfaces. Each source is a typed library
(Zod-validated, rate-limited, returns
Result<T>). The CLI and MCP servers are thin wrappers β no business logic. - Degrade gracefully. When a source is down, the aggregate still returns whatever else worked, with errors reported in-band.
- Rate limits respected. Each client throttles itself; never trust the caller.
- No keys for what doesn't need them. iNaturalist, NPN, USGS, and
the night-sky source all run keyless. Only eBird requires a key
(
EBIRD_API_KEY). - Local computation when the data isn't external. Astronomy is
pure math β
@pondlog/source-nightskyships zero network calls, zero rate limits, zero failure modes.
Repository
pondlog/
βββ packages/
β βββ core/ Shared types and utilities
β βββ source-inaturalist/ iNaturalist client library
β βββ cli/ `pondlog` CLI
β βββ mcp-inaturalist/ MCP server for AI agents
βββ docs/
β βββ ARCHITECTURE.md
β βββ METHODOLOGY.md
β βββ API_AUDIT.md
β βββ STICKIES.md
β βββ SESSION_HANDOFF.md
βββ CHANGELOG.md
βββ README.md
Contributing
PRs welcome. The build is pnpm-based:
git clone https://github.com/andrewschristison/pondlog.git
cd pondlog
pnpm install
pnpm typecheck
pnpm build
pnpm test
pnpm smoke # live tests against iNaturalist
Each package follows a strict pattern documented in
docs/METHODOLOGY.md. Source clients always
ship before the CLI commands or MCP tools that consume them.
License
MIT β see LICENSE.
