mcpField
P
Pondlog Mushroom Observer

Pondlog Mushroom Observer

Local
github.com/andrewschristisonScience & Education0Updated 3w ago

About Pondlog Mushroom Observer

Pondlog Mushroom Observer is an MCP server for people working with mycology data, providing Mushroom Observer observations, fungal taxonomy, and regional discovery. It packages these data as MCP tools and requires no API key.

Key features

  1. 01Query Mushroom Observer records
  2. 02Explore fungal taxonomy
  3. 03Discover fungal data by region
  4. 04No API key required

Use cases

  1. 01Find fungal observations in a region
  2. 02Review fungal taxonomy and related records
  3. 03Let an AI agent query Mushroom Observer data

MCP support

The MCP server exposes five mycology-focused Mushroom Observer tools to MCP clients. It runs without an API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"andrewschristison-pondlog-mushroomobserver": {
"command": "npx",
"args": [
"-y",
"@pondlog/mcp-mushroomobserver"
]
}
}
}
Run commandnpx -y @pondlog/mcp-mushroomobserver

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@pondlog/mcp-mushroomobserver0.1.5

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
latnumberNoWGS84 latitude in decimal degrees, between -90 and 90. Example: 48.118 for Port Angeles, WA.
lngnumberNoWGS84 longitude in decimal degrees, between -180 and 180. Example: -123.4307 for Port Angeles, WA.
namestringNoFilter by consensus taxon name (substring match against MO's scientific name index). Examples: 'Amanita', 'Cantharellus formosus', 'Boletales'.
pageintegerNo1-indexed page number. MO returns ~100 records per page. Default 1.
detailenumNoDetail level. 'low' (default) returns flat IDs (~1KB/record); 'high' returns nested location/consensus/owner/images objects (~3-4KB/record). Use 'high' only when needed.low | high
regionstringNoMushroom Observer region suffix string. MO models geography as comma-separated location names ending in country (e.g. 'Clallam Co., Washington, USA', 'Marin Co., California, USA', 'Sussex, England, UK'). The filter is a SUFFIX match, provide the most-specific tail you want; broader suffixes match more locations. Use `search_regions` first to discover well-formed suffixes.
date_tostringNoInclusive upper bound on observation date in YYYY-MM-DD format. Example: '2025-12-01'.
date_fromstringNoInclusive lower bound on observation date in YYYY-MM-DD format. Example: '2025-09-01'.
radius_kmnumberNoSearch radius in kilometers. Maximum 500. Default 25. Mushroom Observer is densest in the Pacific Northwest, Northern California, the Northeast US, and Western Europe; use 50–100 km for coverage in sparser regions.
has_imagesbooleanNoIf true, only return observations that have at least one photo. Useful for visual ID workflows.
confidence_minnumberNoMinimum vote-weighted ID confidence in [-3..3]. MO observations carry consensus confidence aggregated from votes by mycology experts and citizen scientists. 1.0+ is a reasonable threshold to filter out uncertain IDs; 2.0+ is strong consensus; negative values mean the consensus name is disputed.
include_subtaxabooleanNoIf true, include observations of subtaxa under the queried name (e.g. all species in a genus). Default false.

Details

From the project README

pondlog

Place-aware nature data for developers. 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 one 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)

By Andrew Christison.

What's in the box

8 data sources. 7 MCP servers. 1 unified CLI. A ~1000-crop garden planner with USDA hardiness zones and companion-planting graph.

PackagenpmWhat it does
pondlognpmUnified CLI
@pondlog/corenpmShared types, Result<T>, rate limiter, USDA zones, crop calendar, companions
@pondlog/source-inaturalistnpmiNaturalist API client
@pondlog/source-ebirdnpmeBird API client (21 endpoints)
@pondlog/source-npnnpmUSA-NPN phenology client
@pondlog/source-usgsnpmUSGS Water Services client
@pondlog/source-nightskynpmLocal night-sky briefing (astronomy-engine)
@pondlog/source-mushroomobservernpmMushroom Observer (mycology) client
@pondlog/source-treflenpmTrefle.io plant taxonomy client
@pondlog/mcp-inaturalistnpmiNaturalist MCP server (9 tools)
@pondlog/mcp-ebirdnpmeBird MCP server (21 tools)
@pondlog/mcp-npnnpmNPN MCP server (8 tools)
@pondlog/mcp-usgsnpmUSGS MCP server (4 tools)
@pondlog/mcp-mushroomobservernpmMushroom Observer MCP server (5 tools, mycology-first)
@pondlog/mcp-gardennpmGarden-planning MCP server (8 tools, calendar + zones + companions + Trefle)
@pondlog/mcp-pondlognpmAggregate MCP server (5 tools, all eight sources)

Status

SourceLibraryCLIMCP
iNaturalist✅✅✅
eBird✅✅✅
NPN (phenology)✅✅✅
USGS (water)✅✅✅
Mushroom Observer (mycology)✅✅✅
Garden (USDA zones + ~5,000-crop calendar + companions + Trefle)✅✅✅
Night sky (astronomy-engine)✅✅✅ (via mcp-pondlog)
Aggregate (pondlog today / mcp-pondlog)n/a✅✅

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. Run any MCP server in one command:

npx -y @pondlog/mcp-inaturalist          # no key
npx -y @pondlog/mcp-garden               # offline garden tools
EBIRD_API_KEY=... npx -y @pondlog/mcp-ebird
npx -y @pondlog/mcp-pondlog              # aggregate of all eight sources
As a human (CLI)
npm install -g pondlog
pondlog config set-location --lat 48.118 --lng -123.4307 --name "Port Angeles"
pondlog today                          # unified briefing
pondlog inat nearby
pondlog ebird notable
pondlog npn active
pondlog usgs flow --site 12045500
pondlog nightsky                       # tonight's curated briefing
pondlog garden now                     # what to plant this week

--json works on every command for machine output.

Architecture

                          ┌─────────────────────────┐
                          │      @pondlog/core      │
                          │  types, Result<T>,      │
                          │  RateLimiter, withRetry,│
                          │  USDA zones, crops,     │
                          │  companion graph        │
                          └────────────┬────────────┘
                                       │
        ┌──────────┬──────────┬────────┼─────────┬──────────┬──────────┐
        ▼          ▼          ▼        ▼         ▼          ▼          ▼
 source-inat  source-ebird  source-npn  source-usgs  source-mo  source-trefle  source-nightsky
        │          │          │        │         │          │          │
        └──────────┴──────────┴────────┼─────────┴──────────┴──────────┘
                                       │
                  ┌────────────────────┴────────────────────┐
                  ▼                                         ▼
            pondlog (CLI)                       7 × @pondlog/mcp-* servers
            ├─ pondlog today (aggregate)         ├─ mcp-inaturalist
            ├─ pondlog inat/ebird/...             ├─ mcp-ebird
            └─ pondlog garden/nightsky            ├─ mcp-npn / mcp-usgs
                                                  ├─ mcp-mushroomobserver
                                                  ├─ mcp-garden
                                                  └─ mcp-pondlog  ◀── aggregate

Source clients do all the work (Zod validation, rate limiting, retry, normalization). The CLI and MCP servers are thin wrappers around them.

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 in them.
  • 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, Mushroom Observer, and the night-sky source all run keyless. Only eBird and Trefle require free keys.
  • Local computation when the data isn't external. Astronomy is pure math; @pondlog/source-nightsky ships zero network calls, zero rate limits, zero failure modes. The garden calendar, zones, and companion graph are bundled JSON, all offline.

Related: CropGraph

CropGraph is a sibling HTTP API exposing the same ~1000-crop planting calendar, USDA hardiness zones, and companion-planting graph used by @pondlog/core and @pondlog/mcp-garden. Use CropGraph when you want the data over HTTP from any language. The schemas are kept in lockstep with this repo.

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
Crop calendar / companion-planting data

The crop calendar (packages/core/src/data/crop-calendar.json) and companion graph (packages/core/src/data/companions.json) accept community PRs. Both have JSON Schemas alongside the data:

  • packages/core/src/data/crop-calendar.schema.json
  • packages/core/src/data/companions.schema.json

When adding a crop entry, include a per-entry source citing a real extension service (USDA, Cornell, WSU, Oregon State, UMass, UF/IFAS, etc.). When adding a companion edge, include evidence (strong or moderate) and a citation URL. Zod validation runs at module load, so a malformed PR breaks import "@pondlog/core" immediately.

Code

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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.