Skip to main content

inaturalist-mcp-server

io.github.cyanheads/inaturalist-mcp-serverVersion 0.3.3

Search iNaturalist sightings, identification threads, phenology, and look-alike species.

Status

Responds289 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:48 UTC
Latency
289 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://inaturalist.caseyjhand.com/mcpResponds289 ms
No sign-in

Claude Code

claude mcp add --transport http inaturalist-mcp-server https://inaturalist.caseyjhand.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: inaturalist-mcp-server
Remote MCP server URL: https://inaturalist.caseyjhand.com/mcp

Cursor

{
  "mcpServers": {
    "inaturalist-mcp-server": {
      "url": "https://inaturalist.caseyjhand.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"inaturalist-mcp-server","type":"http","url":"https://inaturalist.caseyjhand.com/mcp"}'
Streamable HTTP
npm: @cyanheads/inaturalist-mcp-server 0.3.3
Package only

npm (npx)

claude mcp add inaturalist-mcp-server -- npx -y @cyanheads/inaturalist-mcp-server@0.3.3
Streamable HTTP
npm: @cyanheads/inaturalist-mcp-server 0.3.3
Package only

npm (npx)

claude mcp add inaturalist-mcp-server -- npx -y @cyanheads/inaturalist-mcp-server@0.3.3

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

10 tools

Tools of inaturalist-mcp-server
Read-only
Idempotent
Open world
inaturalist_find_placesResolve a place name to a place id, or list places covering a map area. Pass q to match a display-name prefix or all analyzed query terms within it, or all four of nelat, nelng, swlat and swlng for a map area — exactly one of the two, never both. Each result carries its bounding box, place type, and containment chain. Upstream serves at most 20 places per list and may omit more.Not declaredYesNot declaredYes
inaturalist_get_histogramBuild a phenology histogram for a taxon in an area — which months, weeks, or years it is recorded in. The default month_of_year interval answers "when does this bloom or appear here" in twelve buckets; absolute intervals (year, month, week, day, hour) bucket real dates and disclose their window start. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Omit taxon_id to chart every taxon in the area. Narrow to one life stage or reproductive state with an annotation pair (term_id and term_value_id, e.g. Life Stage = Larva, or Flowers and Fruits = Flowers), or to broad groups with iconic_taxa. Defaults to research-grade, wild-only records and echoes those defaults back.Not declaredYesNot declaredYes
inaturalist_get_leaderboardRank the most active observers or identifiers for an area, period, and taxon — who knows this place or this group. kind selects which: observers are ranked by how many observations they recorded, identifiers by how many identifications they made. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Both endpoints rank only the top 500 entries, so page multiplied by per_page must stay at or below 500 — narrow the area, period, or taxon to bring someone further down into reach. For the most-recorded species rather than the most active people, use inaturalist_get_species_counts.Not declaredYesNot declaredYes
inaturalist_get_observationFetch up to 10 distinct observations by id with their community identification thread — who identified what, whether each identification agrees, and the consensus taxon the community landed on. The whole attempted batch costs one upstream request. Records come back in requested order; remaining distinct ids are deferred for another call with the same include. Missing attempted ids appear in unresolved; the call fails only when nothing resolved and no deferred work remains. Identifications, comments, and observation fields are sorted by ascending id (creation order) and share the array_limit budget across resolved records — by default up to 40 entries per array for one record, 4 for a full batch; every record reports the size of each array beside what it kept, and next_array_offset pages the rest.Not declaredYesYesYes
inaturalist_get_similar_speciesList related taxa ranked by observations carrying current identifications of both taxa. This is co-identification evidence, not a directional correction count or an exhaustive list of visually similar organisms. Scope it to an area in exactly one form (place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box), or leave the area off for global results. The taxon must be a genus or finer (genus, species, or below). Resolve the organism name to a taxon id with inaturalist_resolve_name first.Not declaredYesNot declaredYes
inaturalist_get_species_countsRank leaf taxa recorded in an area and period, most-observed first. Includes hybrids and coarser identifications; subspecies roll up to their species. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Narrow to a clade by passing taxon_id, e.g. the birds of a park, or to one observer or one project by user_id, user_login, or project_id. Defaults to research-grade, wild-only records and echoes those defaults back. For the most active people rather than the most recorded taxa, use inaturalist_get_leaderboard.Not declaredYesNot declaredYes
inaturalist_get_taxonFetch a taxon profile: the taxonomic path, per-authority conservation listings, the encyclopedia summary, the photo gallery, immediate children, and observation counts. Resolve a name to a taxon id with inaturalist_resolve_name first. A taxon that overflows the response budget comes back as an outline of its sections with their byte sizes, and naming those sections in a re-call returns only those. The valid section names are summary, taxonomy, children, conservation, photos, and encyclopedia.Not declaredYesYesYes
inaturalist_list_referenceLook up annotation attributes/values, quality grades, licences, ranks, iconic taxa, and conservation codes before filtering; unknown values can silently return nothing. Conservation codes decode the iucn level on taxon listings and, all but NE and DD, are the csi filter values, distinct from authority-specific taxon status text. With topic controlled_terms and taxon_id, also return observed annotation usage and counts.Not declaredYesNot declaredYes
inaturalist_resolve_nameResolve organism, place, project, or observer names to identifiers. Taxon lookup matches word starts within a name, not only its beginning; other types use cross-kind search with limited spelling tolerance. Without page, candidates retain relevance order. Explicit taxon pages browse name matches in ascending taxon-ID order; this can differ from autocomplete matching across languages. A miss returns found false with recovery guidance.Not declaredYesNot declaredYes
inaturalist_search_observationsSearch georeferenced wildlife sightings by area, date, taxon, quality grade, annotation, conservation status, observer, project, and licence. Returns a projected record per sighting with coordinates, licence, first photo, and identification counts. An area is given in exactly one form — place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box — and defaults to research-grade, wild-only records, which are echoed back on every call. Identifications and comments are deliberately not expandable here; fetch them for specific records with inaturalist_get_observation. page walks the first 10,000 results under any ordering; past 10,000, order by id descending (order_by "id", order "desc") and pass each page’s next_cursor as cursor.Not declaredYesNot declaredYes

Details

Registry status
Active
Published
Nov 11, 2026
Updated
Nov 11, 2026
Website
Not given
Categories (suggested)
Search and webSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing