# io.github.cyanheads/gbif-biodiversity-mcp-server (remote · gbif-biodiversity.caseyjhand.com)

Search GBIF species taxonomy, occurrence records, datasets, and publishers.

- Trust score: 69/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `gbif-biodiversity.caseyjhand.com`: 69/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity.md), [page](https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity)
- npm · `@cyanheads/gbif-biodiversity-mcp-server`: 35/100, [markdown](https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/cyanheads-gbif-biodiversity-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/cyanheads-gbif-biodiversity-mcp-server)

## Channel facts

- Endpoint: `https://gbif-biodiversity.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 13 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3171 tokens (~243/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http cyanheads-gbif-biodiversity-mcp-server https://gbif-biodiversity.caseyjhand.com/mcp
```

### Codex

```toml
[mcp_servers.cyanheads-gbif-biodiversity-mcp-server]
url = "https://gbif-biodiversity.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-gbif-biodiversity-mcp-server": {
      "type": "remote",
      "url": "https://gbif-biodiversity.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-gbif-biodiversity-mcp-server --url https://gbif-biodiversity.caseyjhand.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-gbif-biodiversity-mcp-server:
    url: "https://gbif-biodiversity.caseyjhand.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-gbif-biodiversity-mcp-server": {
      "type": "http",
      "url": "https://gbif-biodiversity.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 67, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 66, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 63)

First indexed and scored.

## MCP tools (13)

### `gbif_match_species` (~272 tokens)

Match Species Name

Match a scientific name against the GBIF backbone taxonomy. Returns the best-matching taxon with full classification and a confidence score (0–100). This is the mandatory first step for any GBIF workflow — it resolves synonyms and returns the backbone taxonKey required by gbif_search_occurrences, gbif_count_occurrences, and gbif_occurrence_facets. Below confidence 80, the match should be reviewed. matchType NONE means no usable match was found — try removing the strict flag or broadening the name.

Input parameters:

- `kingdom` (string): Narrow the match to a specific kingdom (e.g., "Animalia", "Plantae", "Fungi") to disambiguate names that appear in multiple kingdoms.
- `name` (string, required): Scientific name to match. Examples: "Parus major", "Agaricus bisporus", "Homo sapiens". Fuzzy matching handles minor spelling variations. Common names are not supported — use gbif_search_species for…
- `rank` (string): Expected taxonomic rank. Use to avoid matching a genus when you expect a species.
- `strict` (boolean): When true, only return an exact match. When false (default), GBIF applies fuzzy matching — useful for minor spelling variations and abbreviated names.

Output parameters:

- `canonicalName` (string): Scientific name without authorship.
- `class` (string): Class of the matched taxon.
- `classKey` (number): Backbone taxon key for the class.
- `confidence` (number): Match confidence score 0–100. Below 80 warrants review.
- `family` (string): Family of the matched taxon.
- `familyKey` (number): Backbone taxon key for the family.
- `genus` (string): Genus of the matched taxon.
- `genusKey` (number): Backbone taxon key for the genus.
- `kingdom` (string): Kingdom of the matched taxon.
- `kingdomKey` (number): Backbone taxon key for the kingdom.
- `matchType` (string): EXACT, FUZZY, HIGHERRANK, or NONE. NONE means no usable match.
- `order` (string): Order of the matched taxon.
- `orderKey` (number): Backbone taxon key for the order.
- `phylum` (string): Phylum of the matched taxon.
- `phylumKey` (number): Backbone taxon key for the phylum.
- `rank` (string): Taxonomic rank of the matched taxon.
- `scientificName` (string): Full scientific name with authorship.
- `species` (string): Species canonical name of the matched taxon.
- `speciesKey` (number): Backbone taxon key for the species.
- `status` (string): Taxonomic status: ACCEPTED, SYNONYM, or DOUBTFUL.
- `taxonKey` (number): GBIF backbone taxon key. Use this in downstream tools. Absent when matchType is NONE.

### `gbif_bulk_match_species` (~216 tokens)

Bulk Match Species Names

Resolve up to 50 scientific names to GBIF backbone taxon keys in one call — the batch counterpart to gbif_match_species for checklist, inventory, and species-list workflows that would otherwise need one round trip per name. Each name is matched independently and results are returned in input order, one entry per name. A name with no backbone match yields matchType NONE (no taxonKey) instead of failing the batch; a per-name lookup failure yields matchType ERROR with the reason, leaving the rest of the batch intact. Resolves synonyms to the accepted backbone key. Common names are not supported — use gbif_search_species for vernacular searches. Below confidence 80, review the match.

Input parameters:

- `names` (array, required): Scientific names to match against the GBIF backbone. 1–50 per call, matched in parallel.
- `strict` (boolean): When true, require an exact match for every name (no fuzzy matching). When false (default), GBIF applies fuzzy matching to tolerate minor misspellings.

Output parameters:

- `results` (array): One result per input name, in input order.

### `gbif_get_species` (~128 tokens)

Get Species Record

Fetch a single backbone taxon by its GBIF taxon key. Returns full classification, authorship, taxonomic status, vernacular name, descendant count, and publication reference. Use after gbif_match_species when you need the complete record rather than the match summary. When taxonomicStatus is SYNONYM, acceptedKey and accepted fields identify the accepted taxon. The extinct field is absent (not false) on most records — only present on explicitly flagged taxa.

Input parameters:

- `taxonKey` (number, required): GBIF backbone taxon key from gbif_match_species or another taxonomy tool.

Output parameters:

- `accepted` (string): Scientific name of the accepted taxon when this record is a synonym.
- `acceptedKey` (number): Backbone key of the accepted taxon when this record is a synonym.
- `authorship` (string): Taxonomic authorship of the name.
- `canonicalName` (string): Scientific name without authorship.
- `class` (string): Class classification.
- `classKey` (number): Taxon key for the class.
- `extinct` (boolean): True when the taxon is explicitly flagged as extinct. Absent on most records.
- `family` (string): Family classification.
- `familyKey` (number): Taxon key for the family.
- `genus` (string): Genus classification.
- `genusKey` (number): Taxon key for the genus.
- `key` (number): GBIF backbone taxon key.
- `kingdom` (string): Kingdom classification.
- `kingdomKey` (number): Taxon key for the kingdom.
- `numDescendants` (number): Count of child taxa in the backbone under this taxon.
- `numOccurrences` (number): Occurrence record count in GBIF.
- `order` (string): Order classification.
- `orderKey` (number): Taxon key for the order.
- `parent` (string): Name of the immediate parent taxon.
- `parentKey` (number): Taxon key of the immediate parent.
- `phylum` (string): Phylum classification.
- `phylumKey` (number): Taxon key for the phylum.
- `publishedIn` (string): Original description citation when available.
- `rank` (string): Taxonomic rank (SPECIES, GENUS, FAMILY, etc.).
- `scientificName` (string): Full scientific name with authorship.
- `species` (string): Species canonical name.
- `speciesKey` (number): Taxon key for the species.
- `taxonomicStatus` (string): ACCEPTED, SYNONYM, DOUBTFUL, etc. SYNONYM means acceptedKey/accepted are populated.
- `vernacularName` (string): English common name when available.

### `gbif_search_species` (~248 tokens)

Search Species Taxonomy

Search or browse the GBIF backbone taxonomy. Accepts scientific name fragments, rank filters, and higher-taxon constraints. Useful for exploring what species exist under a higher taxon (e.g., "list all families of Coleoptera"), for simple name-fragment searches, or when gbif_match_species returns too narrow a result. Paginated — use limit and offset to walk through results.

Input parameters:

- `datasetKey` (string): Scope to a specific checklist dataset UUID. Omit to search the GBIF backbone.
- `family` (string): Scope search to a family name.
- `genus` (string): Scope search to a genus name.
- `isExtinct` (boolean): Filter to extinct (true) or extant (false) taxa.
- `kingdom` (string): Scope search to a kingdom (e.g., "Animalia", "Plantae").
- `limit` (number): Number of records to return (default 20, max 1000).
- `offset` (number): Pagination offset.
- `q` (string): Name fragment to search for. Matches scientific and vernacular names.
- `rank` (string): Filter to a specific taxonomic rank.

Output parameters:

- `endOfRecords` (boolean): True when there are no more results after this page.
- `limit` (number): Records returned in this page.
- `notice` (string): Guidance when results are empty or paging overshot. Absent on successful result pages.
- `offset` (number): Current pagination offset.
- `taxa` (array): Matching taxa.
- `totalCount` (number): Total matches before pagination.

### `gbif_get_species_classification` (~142 tokens)

Get Species Classification

Return the parent chain for a taxon — from kingdom (or domain) down to the immediate parent of the queried taxon — as an ordered array. Each entry has its rank, canonical name, and taxon key. The array is returned root-first (kingdom → phylum → class → … → immediate parent of the queried taxon); the queried taxon itself is not included — call gbif_get_species for its own record. Useful for building taxonomic trees or understanding placement without navigating the backbone level-by-level.

Input parameters:

- `taxonKey` (number, required): GBIF backbone taxon key from gbif_match_species or another taxonomy tool.

Output parameters:

- `classification` (array): Classification chain ordered from root (kingdom) to the immediate parent of the queried taxon. The queried taxon itself is not included — call gbif_get_species for its own record.

### `gbif_get_species_children` (~114 tokens)

Get Species Children

List direct children of a backbone taxon — genera within a family, species within a genus, subspecies within a species. Paginated. Use gbif_match_species to get the taxonKey first, then iterate with offset for large groups.

Input parameters:

- `limit` (number): Number of children to return (default 20, max 1000).
- `offset` (number): Pagination offset.
- `taxonKey` (number, required): GBIF backbone taxon key from gbif_match_species or another taxonomy tool.

Output parameters:

- `cap` (number): Limit applied when the result was truncated. Re-call with offset to page on.
- `children` (array): Direct child taxa.
- `endOfRecords` (boolean): True when there are no more results after this page.
- `limit` (number): Records returned in this page.
- `notice` (string): Agent guidance — a no-children note for a valid taxon, or a pagination note when the page was capped. Absent on a complete single page.
- `offset` (number): Current pagination offset.
- `shown` (number): Children returned in this page when the result was truncated.
- `truncated` (boolean): True when more children exist beyond this page. Absent on the final page.

### `gbif_search_occurrences` (~732 tokens)

Search Occurrences

Search 2.4B+ GBIF occurrence records with Darwin Core filters. Use taxonKey from gbif_match_species for reliable results — it resolves synonyms automatically. Accepts country (ISO 3166-1 alpha-2), bounding box (decimalLatitude/decimalLongitude ranges), WKT polygon geometry, year range, month, basis of record, coordinate filter, and dataset key. Pagination is capped at approximately offset+limit=100,000 — use gbif_occurrence_facets for aggregate counts across large result sets.

Input parameters:

- `basisOfRecord` (string): Filter by how the occurrence was recorded. HUMAN_OBSERVATION covers citizen science. PRESERVED_SPECIMEN covers natural history collections.
- `coordinateUncertaintyInMeters` (string): Filter by coordinate uncertainty radius in meters. Range format: "min,max" (e.g., "0,1000" for sub-kilometer precision). Both endpoints inclusive.
- `country` (string): ISO 3166-1 alpha-2 country code (e.g., "GB", "US", "DE", "SE").
- `datasetKey` (string): Restrict results to a single dataset by its GBIF dataset UUID. Obtain one from gbif_search_datasets, gbif_get_dataset, a DATASET_KEY facet (gbif_occurrence_facets), or the datasetKey field on an occu…
- `decimalLatitude` (string): Latitude range as "min,max" (e.g., "47.0,48.5"). Decimal degrees, WGS84. Combine with decimalLongitude for a bounding box.
- `decimalLongitude` (string): Longitude range as "min,max" (e.g., "8.0,9.5"). Decimal degrees, WGS84. Combine with decimalLatitude for a bounding box.
- `geometry` (string): WKT polygon for geographic filtering (e.g., POLYGON((8 47, 9 47, 9 48, 8 48, 8 47))). Coordinates are longitude latitude. Takes precedence over decimalLatitude/decimalLongitude.
- `hasCoordinate` (boolean): When true, return only georeferenced records (those with coordinates). When false, return ONLY records without coordinates. Omit the parameter entirely to include all records regardless of coordinate…
- `isInCluster` (boolean): Filter to records flagged as likely duplicates (true) or exclude them (false). Omit to include all. Note: GBIF does not expose a cluster identifier — only the membership flag. To de-duplicate, set is…
- `limit` (number): Number of records to return (default 20, max 300).
- `month` (number): Calendar month (1–12). Useful for seasonal distribution queries.
- `offset` (number): Pagination offset. GBIF caps offset+limit at approximately 100,000 — use gbif_occurrence_facets for aggregate analysis beyond this.
- `scientificName` (string): Scientific name filter. Less precise than taxonKey — does not match synonyms. Use taxonKey from gbif_match_species for reliable results.
- `taxonKey` (number): GBIF backbone taxon key from gbif_match_species. Preferred over scientificName — matches all synonyms automatically. Matches the given taxon and all descendant taxa (subspecies, varieties, etc.).
- `year` (string): Year or year range. Single year: "2024". Range: "2020,2024". Filters by observation year. Both endpoints inclusive.

Output parameters:

- `endOfRecords` (boolean): True when there are no more results after this page.
- `limit` (number): Records returned in this page.
- `notice` (string): Guidance when results are empty or paging overshot. Absent on successful result pages.
- `occurrences` (array): Occurrence records matching the filters.
- `offset` (number): Current pagination offset.
- `totalCount` (number): Total matching occurrences before pagination.

### `gbif_count_occurrences` (~205 tokens)

Count Occurrences

Count occurrences matching a taxon + location filter without fetching records. Use for quick totals ("how many Aves records in Sweden?") or before deciding whether to paginate a full search. Accepts taxonKey, country, isGeoreferenced, datasetKey, and year.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 country code (e.g., "GB", "US").
- `datasetKey` (string): Filter to a specific dataset UUID.
- `isGeoreferenced` (boolean): When true, count only georeferenced records. When false, count only non-georeferenced records.
- `taxonKey` (number): GBIF backbone taxon key from gbif_match_species. Matches the given taxon and all descendant taxa (subspecies, varieties, etc.).
- `year` (string): Year or year range (e.g., "2024" or "2020,2024"). Both endpoints inclusive.

Output parameters:

- `count` (number): Total occurrences matching the supplied filters.

### `gbif_get_occurrence` (~90 tokens)

Get Occurrence Record

Fetch a single occurrence record by its GBIF occurrence key. Returns the complete Darwin Core record — all coordinates, administrative geography (GADM), dates, collections metadata, collector identifiers, media links, and quality issue flags. Use the occurrence key from gbif_search_occurrences results to fetch full detail.

Input parameters:

- `occurrenceKey` (number, required): GBIF occurrence key from gbif_search_occurrences results.

Output parameters:

- `basisOfRecord` (string): How the occurrence was recorded.
- `canonicalName` (string): Canonical name without authorship.
- `catalogNumber` (string): Catalog number within the collection. May be absent.
- `class` (string): Class classification. May be absent.
- `classKey` (number): Backbone taxon key for the class. May be absent.
- `collectionCode` (string): Collection code within the institution. May be absent.
- `continent` (string): Continent name. May be absent.
- `coordinateUncertaintyInMeters` (number): Coordinate uncertainty radius in meters. May be absent.
- `country` (string): Country name. May be absent.
- `countryCode` (string): ISO 3166-1 alpha-2 country code. May be absent.
- `datasetKey` (string): UUID of the source dataset.
- `day` (number): Observation day. May be absent.
- `decimalLatitude` (number): Latitude in decimal degrees (WGS84). May be absent.
- `decimalLongitude` (number): Longitude in decimal degrees (WGS84). May be absent.
- `eventDate` (string): Observation date as ISO 8601 string. May be absent.
- `family` (string): Family classification.
- `gadm` (object): GADM administrative geography — stable GIDs and names at levels 0–2. May be absent.
- `genus` (string): Genus classification.
- `identifiedBy` (string): Identifier name(s). May be absent.
- `identifiers` (array): Alternative record identifiers from the source. May be absent.
- `individualCount` (number): Number of individuals. May be absent.
- `institutionCode` (string): Code of the contributing institution. May be absent.
- `issues` (array): GBIF data quality issue flags.
- `key` (number): GBIF occurrence key.
- `kingdom` (string): Kingdom classification.
- `lifeStage` (string): Life stage of the individual(s). May be absent.
- `locality` (string): Locality description. May be absent.
- `media` (array): Associated media (images, audio, video). May be absent.
- `month` (number): Observation month (1–12). May be absent.
- `occurrenceID` (string): Darwin Core occurrenceID — the source record identifier, often a URL back to the origin record. May be absent.
- `order` (string): Order classification.
- `phylum` (string): Phylum classification.
- `publishingCountry` (string): Country code of the publishing organization.
- `recordedBy` (string): Collector name(s). May be absent.
- `scientificName` (string): Scientific name from occurrence record.
- `sex` (string): Sex of the individual(s). May be absent.
- `species` (string): Species canonical name.
- `stateProvince` (string): State or province. May be absent.
- `taxonKey` (number): Backbone taxon key.
- `taxonRank` (string): Taxonomic rank of the identified taxon.
- `year` (number): Observation year. May be absent.

### `gbif_occurrence_facets` (~428 tokens)

Occurrence Facet Aggregation

Aggregate occurrence counts across a dimension (COUNTRY, STATE_PROVINCE, YEAR, BASIS_OF_RECORD, DATASET_KEY, KINGDOM_KEY, etc.). Returns the top-N facet values ranked by count — no record payloads returned. Core tool for distribution analysis and trend queries: "which countries have the most records for this species?", "how has observation volume changed since 2010?". Scope the aggregation with taxonKey, country, year, geometry, basisOfRecord, or datasetKey filters.

Input parameters:

- `basisOfRecord` (string): Scope to a specific basis of record.
- `country` (string): ISO 3166-1 alpha-2 country code to scope to one country.
- `datasetKey` (string): Scope the aggregation to a single dataset by its GBIF dataset UUID. Obtain one from gbif_search_datasets, gbif_get_dataset, a DATASET_KEY facet, or the datasetKey field on an occurrence record.
- `facet` (string, required): Dimension to aggregate by (e.g., COUNTRY, YEAR, BASIS_OF_RECORD, SPECIES_KEY).
- `facetLimit` (number): Maximum number of facet values to return (default 10, max 100).
- `facetOffset` (number): Zero-based offset into the ranked facet values, for paging past the first facetLimit values on high-cardinality dimensions like DATASET_KEY. Advance by facetLimit to fetch the next page (0, then face…
- `geometry` (string): WKT polygon to scope the aggregation to a geographic area (e.g., POLYGON((8 47, 9 47, 9 48, 8 48, 8 47))). Coordinates are longitude latitude.
- `taxonKey` (number): Backbone taxon key to scope the aggregation. Matches the given taxon and all descendant taxa (subspecies, varieties, etc.).
- `year` (string): Year or year range (e.g., "2020,2024") to scope the aggregation. Both endpoints inclusive.

Output parameters:

- `counts` (array): Facet values ranked by count descending (top facetLimit entries).
- `facet` (string): The facet dimension aggregated.
- `facetLimit` (number): Maximum facet values requested.
- `facetOffset` (number): Zero-based offset applied to the ranked facet values.
- `moreValuesLikely` (boolean): Heuristic continuation flag: true when this page returned a full facetLimit of values, so more distinct values may exist past facetOffset + facetLimit (re-call with facetOffset advanced by facetLimit…
- `notice` (string): Guidance when no facet values were returned. Absent when counts are non-empty.
- `totalOccurrences` (number): Total matching occurrences across all facet values.

### `gbif_search_datasets` (~184 tokens)

Search Datasets

Search GBIF datasets by keyword, type, country, or publishing organization. Returns dataset title, description, license, record count, and DOI. Use to find the source dataset behind a set of records, or to explore what data collections are available for a taxon, country, or organization.

Input parameters:

- `hostingOrg` (string): UUID of the hosting organization. From gbif_search_publishers results.
- `limit` (number): Number of datasets to return (default 20, max 1000).
- `offset` (number): Pagination offset.
- `publishingCountry` (string): ISO 3166-1 alpha-2 country code of the publishing organization.
- `q` (string): Free-text search across dataset title and description.
- `type` (string): Filter by dataset type. OCCURRENCE for observation records, CHECKLIST for species lists.

Output parameters:

- `datasets` (array): Matching datasets.
- `endOfRecords` (boolean): True when there are no more results after this page.
- `limit` (number): Datasets returned in this page.
- `notice` (string): Guidance when results are empty or paging overshot. Absent on successful result pages.
- `offset` (number): Current pagination offset.
- `totalCount` (number): Total matching datasets before pagination.

### `gbif_get_dataset` (~165 tokens)

Get Dataset

Fetch full dataset metadata by UUID key — title, description, citation text, contacts, license, DOI, numConstituents (sub-datasets), and temporal/geographic coverage. Use after gbif_search_datasets or when an occurrence record's datasetKey needs provenance detail. Contacts are capped by contactLimit (default 10); contactsTotal and contactsReturned report the full count.

Input parameters:

- `contactLimit` (integer): Maximum number of contacts to include (default 10, max 100). Set to 0 to omit contact detail while still reporting contactsTotal — useful when citation, license, and record count are all you need fro…
- `datasetKey` (string, required): Dataset UUID from gbif_search_datasets or an occurrence record.

Output parameters:

- `citationText` (string): Full citation text for academic reference. May be absent.
- `contacts` (array): Dataset contacts, capped at contactLimit. Absent when the dataset has no contacts or contactLimit is 0.
- `contactsReturned` (number): Number of contacts included in this response (≤ contactLimit). Present when the dataset has any contacts.
- `contactsTotal` (number): Total contacts on the dataset before applying contactLimit. Present when the dataset has any contacts.
- `description` (string): Full dataset description. May be absent.
- `doi` (string): DOI for citation. May be absent.
- `geographicCoverages` (array): Geographic coverage descriptions declared by the dataset. May be absent.
- `key` (string): Dataset UUID.
- `license` (string): License identifier. May be absent.
- `numConstituents` (number): Number of constituent sub-datasets. May be absent.
- `publishingCountry` (string): Country code of the publishing organization.
- `recordCount` (number): Number of records in the dataset. May be absent.
- `temporalCoverages` (array): Temporal coverage ranges declared by the dataset. May be absent.
- `title` (string): Dataset title.
- `type` (string): Dataset type (OCCURRENCE, CHECKLIST, etc.).

### `gbif_search_publishers` (~124 tokens)

Search Publishers

Search organizations registered with GBIF by name fragment or country. Returns organization key, title, and country — sufficient to chain into gbif_search_datasets with hostingOrg, or to understand who publishes data for a region.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 country code to filter organizations by country.
- `limit` (number): Number of organizations to return (default 20, max 1000).
- `offset` (number): Pagination offset.
- `q` (string): Name fragment to search for. Matches organization names.

Output parameters:

- `endOfRecords` (boolean): True when there are no more results after this page.
- `limit` (number): Organizations returned in this page.
- `notice` (string): Guidance when results are empty or paging overshot. Absent on successful result pages.
- `offset` (number): Current pagination offset.
- `publishers` (array): Matching organizations.
- `totalCount` (number): Total matching organizations before pagination.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 68
- 2026-08-01: 68
- 2026-07-31: 67
- 2026-07-30: 66
- 2026-07-29: 65
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 63

## Links

- Remote endpoint: https://gbif-biodiversity.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/gbif-biodiversity-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity/changelog.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-gbif-biodiversity-mcp-server/gbif-biodiversity
