cyanheads avatar

Gbif Biodiversity Mcp Server

cyanheads/gbif-biodiversity-mcp-server

Connects Claude to the Global Biodiversity Information Facility's 2.4 billion occurrence records and backbone taxonomy. You get 12 tools: fuzzy match scientific names to taxon keys, search occurrences by species, country, bounding box, or year range, pull full Darwin Core records with coordinates and media, aggregate counts by dimension (country, year, basis of record), browse taxonomic hierarchies, and search datasets and publishers. Useful when you're building species distribution queries, validating taxonomy, or need georeferenced observation data without writing raw GBIF API calls. Runs over stdio or streamable HTTP, and there's a public hosted endpoint if you want to skip local setup.

GitHub stars
1
tools
13
transport
STDIO, HTTP
env vars
10
last updated
Nov 12, 2026

Install

From registry metadata
$ npx add-mcp https://gbif-biodiversity.caseyjhand.com/mcp --name gbif-biodiversity

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http gbif-biodiversity https://gbif-biodiversity.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 13 tools

Verified live against the running server on Nov 6, 2026.

gbif_match_speciesMatch 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 returns the backbone taxonKey required by gbif_search_occurrences, g...4 params

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 returns the backbone taxonKey required by gbif_search_occurrences, g...

Parameters* required
kingdomstring
Narrow the match to a specific kingdom (e.g., "Animalia", "Plantae", "Fungi") to disambiguate names that appear in multiple kingdoms. Omit the field to match against the whole backbone — a blank or...
name*string
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 fo...
rankstring
Expected taxonomic rank. Use to avoid matching a genus when you expect a species.one of KINGDOM · PHYLUM · CLASS · ORDER · FAMILY · GENUS
strictboolean
When true, only return an exact match. When false (default), GBIF applies fuzzy matching — useful for minor spelling variations and abbreviated names.default: false
gbif_bulk_match_speciesResolve 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 re...2 params

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 re...

Parameters* required
names*array
Scientific names to match against the GBIF backbone. Up to 50 are matched in parallel; additional names are returned in unprocessedNames when read-limit clamping is enabled (default). Every submitt...
strictboolean
When true, require an exact match for every name (no fuzzy matching). When false (default), GBIF applies fuzzy matching to tolerate minor misspellings.default: false
gbif_get_speciesFetch 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 taxo...1 params

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 taxo...

Parameters* required
taxonKey*integer
GBIF backbone taxon key from gbif_match_species or another taxonomy tool.
gbif_search_speciesSearch or browse the GBIF backbone taxonomy by default, or an explicit checklist datasetKey. 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"), f...9 params

Search or browse the GBIF backbone taxonomy by default, or an explicit checklist datasetKey. 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"), f...

Parameters* required
datasetKeystring
Scope to a specific checklist dataset UUID (8-4-4-4-12 hex). Omit the field to search the GBIF backbone — an empty string is rejected rather than read as no scope, because GBIF answers a blank data...
familystring
Scope the search to a family, by name — "Paridae", "Fagaceae". Resolved to its backbone key before the search runs, so an alternative family name lands on the taxon it is a synonym of ("Compositae"...
genusstring
Scope the search to a genus, by name — "Quercus", "Parus". Resolved to its backbone key before the search runs, and it is the narrowest of the three, so it is what scopes when kingdom or family is...
isExtinctboolean
Filter to extinct (true) or extant (false) taxa.
kingdomstring
Scope the search to a kingdom, by name — "Animalia", "Plantae", "Fungi". Resolved to its backbone key before the search runs, and matched exactly: capitalize it as GBIF writes it, since "animalia"...
limitinteger
Number of records to return (default 20, max 1000).default: 20
offsetinteger
Pagination offset.default: 0
qstring
Name fragment to search for. Matches scientific and vernacular names. Omit the field to browse without a name term — a blank or whitespace-only value is rejected rather than sent, because GBIF answ...
rankstring
Filter to a specific taxonomic rank.one of KINGDOM · PHYLUM · CLASS · ORDER · FAMILY · GENUS
gbif_get_species_classificationReturn 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...1 params

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...

Parameters* required
taxonKey*integer
GBIF backbone taxon key from gbif_match_species or another taxonomy tool.
gbif_get_species_childrenList 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.3 params

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.

Parameters* required
limitinteger
Number of children to return (default 20, max 1000).default: 20
offsetinteger
Pagination offset.default: 0
taxonKey*integer
GBIF backbone taxon key from gbif_match_species or another taxonomy tool.
gbif_search_occurrencesSearch GBIF occurrence records with Darwin Core filters. Use taxonKey from gbif_match_species for reliable results — it resolves synonyms automatically. Accepts country (uppercase ISO 3166-1 alpha-2, where the record was observed), publishingCountry (the publishing organizatio...24 params

Search GBIF occurrence records with Darwin Core filters. Use taxonKey from gbif_match_species for reliable results — it resolves synonyms automatically. Accepts country (uppercase ISO 3166-1 alpha-2, where the record was observed), publishingCountry (the publishing organizatio...

Parameters* required
basisOfRecordstring
Filter by how the occurrence was recorded. HUMAN_OBSERVATION covers citizen science. PRESERVED_SPECIMEN covers natural history collections.one of HUMAN_OBSERVATION · MACHINE_OBSERVATION · PRESERVED_SPECIMEN · LIVING_SPECIMEN · MATERIAL_SAMPLE · MATERIAL_CITATION
catalogNumberstring
Catalog number a collection assigned to the specimen or record (e.g. "L.1592880"), matched as the whole value, case-insensitively. Not unique across collections — one number can name records in sev...
coordinateUncertaintyInMetersstring
Filter by coordinate uncertainty radius in meters. Range format: "min,max" (e.g., "0,1000" for sub-kilometer precision). Both endpoints inclusive. Omit the field to accept any uncertainty — a blank...
countrystring
ISO 3166-1 alpha-2 code, uppercase, of where the occurrence was recorded (e.g., "GB", "US", "DE", "SE"). Not the publisher's country — that is publishingCountry, and the two disagree on most record...
datasetKeystring
Restrict results to a single dataset by its GBIF dataset UUID (8-4-4-4-12 hex). Obtain one from gbif_search_datasets, gbif_get_dataset, a DATASET_KEY facet (gbif_occurrence_facets), or the datasetK...
decimalLatitudestring
Latitude range as "min,max" (e.g., "47.0,48.5"). Decimal degrees, WGS84. Combine with decimalLongitude for a bounding box. Omit the field to leave latitude unbounded — a blank or whitespace-only va...
decimalLongitudestring
Longitude range as "min,max" (e.g., "8.0,9.5"). Decimal degrees, WGS84. Combine with decimalLatitude for a bounding box. Omit the field to leave longitude unbounded — a blank or whitespace-only val...
gadmGidstring
GADM administrative-area GID at any level: country (ESP), state or province (ESP.1_1), county or district (ESP.1.5_1), or municipality (ESP.1.6.3_1). GBIF derives a record's GIDs from its coordinat...
geometrystring
WKT polygon for geographic filtering (e.g., POLYGON((8 47, 9 47, 9 48, 8 48, 8 47))). Coordinates are longitude latitude. All supplied spatial filters intersect: decimalLatitude and decimalLongitud...
hasCoordinateboolean
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 coordina...
institutionCodestring
Code of the institution holding the record (e.g. "K", "CLO"), matched as the whole value, case-insensitively — part of a code or of a multi-word code matches nothing. An INSTITUTION_CODE facet on g...
isInClusterboolean
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...
iucnRedListCategorystring
Restrict to records whose taxon carries this IUCN Red List category: CR Critically Endangered, EN Endangered, VU Vulnerable, NT Near Threatened, LC Least Concern, DD Data Deficient, EX Extinct, EW...one of CR · EN · VU · NT · LC · DD
limitinteger
Number of records to return (default 20, max 300).default: 20
mediaTypestring
Only records carrying at least one media item of this type: StillImage (photographs, scans), MovingImage (video), Sound (audio), or InteractiveResource. Records without media are excluded when this...one of StillImage · MovingImage · Sound · InteractiveResource
monthinteger
Calendar month (1–12). Useful for seasonal distribution queries.
occurrenceStatusstring
Presence/absence filter. Defaults to PRESENT: an ABSENT record documents a survey that looked for the taxon and did not find it, so including one would read as a sighting of the opposite. Use ANY f...one of PRESENT · ABSENT · ANYdefault: PRESENT
offsetinteger
Pagination offset. GBIF serves offset+limit up to 100,001 and rejects anything past it, with no cursor or scroll to continue from. To reach a result set larger than that, split it into per-datasetK...default: 0
publishingCountrystring
ISO 3166-1 alpha-2 code, uppercase, of the organization that published the record — distinct from where the occurrence was observed, which is country. Take a value from a PUBLISHING_COUNTRY facet o...
recordedBystring
Collector or observer, matched against each name in the record's recordedBy list (GBIF splits it on "|") exactly and case-sensitively: "Charles Darwin" and "charles darwin" differ, and one person w...

+4 more parameters. See the server's own documentation for the full schema.

gbif_count_occurrencesCount 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 (uppercase ISO 3166-1 alpha-2), publishingCountry, stateProv...23 params

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 (uppercase ISO 3166-1 alpha-2), publishingCountry, stateProv...

Parameters* required
basisOfRecordstring
Filter by how the occurrence was recorded; accepts every GBIF BasisOfRecord vocabulary member.one of HUMAN_OBSERVATION · MACHINE_OBSERVATION · PRESERVED_SPECIMEN · LIVING_SPECIMEN · MATERIAL_SAMPLE · MATERIAL_CITATION
catalogNumberstring
Catalog number a collection assigned to the specimen or record (e.g. "L.1592880"), matched as the whole value, case-insensitively. Not unique across collections — one number can name records in sev...
coordinateUncertaintyInMetersstring
Coordinate uncertainty radius in meters, e.g. "0,1000"; range endpoints inclusive. Omit for any uncertainty; blank or whitespace-only is rejected.
countrystring
ISO 3166-1 alpha-2 code, uppercase, of where the occurrence was recorded (e.g., "GB", "US"). Not the publisher's country — that is publishingCountry, and the two disagree on most records. Lowercase...
datasetKeystring
Filter to a specific dataset UUID (8-4-4-4-12 hex) from gbif_search_datasets. Omit the field to count across every dataset — an empty string is rejected rather than read as no filter, because GBIF...
decimalLatitudestring
Latitude or latitude range "min,max" in decimal degrees (WGS84). All supplied spatial filters intersect, including geometry. Omit to leave latitude unbounded; blank or whitespace-only is rejected.
decimalLongitudestring
Longitude or longitude range "min,max" in decimal degrees (WGS84). All supplied spatial filters intersect, including geometry. Omit to leave longitude unbounded; blank or whitespace-only is rejected.
gadmGidstring
GADM administrative-area GID at any level: country (ESP), state or province (ESP.1_1), county or district (ESP.1.5_1), or municipality (ESP.1.6.3_1). GBIF derives a record's GIDs from its coordinat...
geometrystring
WKT polygon in longitude latitude order. All supplied spatial filters intersect: decimalLatitude and decimalLongitude remain active and restrict results to the overlap. Omit to leave geometry unfil...
hasCoordinateboolean
True counts records with coordinates; false counts only records without coordinates. Omit for both. Alias isGeoreferenced may be supplied alone or with the same value; conflicts fail as invalid_fil...
institutionCodestring
Code of the institution holding the record (e.g. "K", "CLO"), matched as the whole value, case-insensitively — part of a code or of a multi-word code matches nothing. An INSTITUTION_CODE facet on g...
isGeoreferencedboolean
Alias for hasCoordinate. True counts only georeferenced records; false only non-georeferenced records. Supplying both requires equal values.
isInClusterboolean
True counts likely duplicates; false excludes them. Omit to include all records. GBIF exposes membership only, with no cluster identifier.
iucnRedListCategorystring
Count only records whose taxon carries this IUCN Red List category: CR Critically Endangered, EN Endangered, VU Vulnerable, NT Near Threatened, LC Least Concern, DD Data Deficient, EX Extinct, EW E...one of CR · EN · VU · NT · LC · DD
mediaTypestring
Only records carrying at least one media item of this type: StillImage (photographs, scans), MovingImage (video), Sound (audio), or InteractiveResource. Records without media are excluded when this...one of StillImage · MovingImage · Sound · InteractiveResource
monthinteger
Calendar month (1–12), matching the occurrence search filter.
occurrenceStatusstring
Presence/absence filter. Defaults to PRESENT: an ABSENT record documents a survey that looked for the taxon and did not find it, so counting one inflates the total with the opposite of a sighting....one of PRESENT · ABSENT · ANYdefault: PRESENT
publishingCountrystring
ISO 3166-1 alpha-2 code, uppercase, of the organization that published the record — distinct from where the occurrence was observed, which is country. Take a value from a PUBLISHING_COUNTRY facet o...
recordedBystring
Collector or observer, matched against each name in the record's recordedBy list (GBIF splits it on "|") exactly and case-sensitively: "Charles Darwin" and "charles darwin" differ, and one person w...
scientificNamestring
Scientific name; does not match synonyms. With taxonKey GBIF takes their union (OR), not their intersection. Omit to leave names unfiltered; blank or whitespace-only is rejected.

+3 more parameters. See the server's own documentation for the full schema.

gbif_get_occurrenceFetch a single occurrence record by its GBIF occurrence key. Returns the complete Darwin Core record — all coordinates, administrative geography (GADM levels 0–3), dates, collections metadata, collector identifiers, conservation status, media links, and quality issue flags. Ch...1 params

Fetch a single occurrence record by its GBIF occurrence key. Returns the complete Darwin Core record — all coordinates, administrative geography (GADM levels 0–3), dates, collections metadata, collector identifiers, conservation status, media links, and quality issue flags. Ch...

Parameters* required
occurrenceKey*integer
GBIF occurrence key from gbif_search_occurrences results.
gbif_occurrence_facetsAggregate occurrence counts across a dimension (COUNTRY, STATE_PROVINCE, YEAR, BASIS_OF_RECORD, DATASET_KEY, KINGDOM_KEY, etc.). Returns one page of facet values ranked by count descending — the top facetLimit at facetOffset 0, a later slice of the same ranking past that. No r...26 params

Aggregate occurrence counts across a dimension (COUNTRY, STATE_PROVINCE, YEAR, BASIS_OF_RECORD, DATASET_KEY, KINGDOM_KEY, etc.). Returns one page of facet values ranked by count descending — the top facetLimit at facetOffset 0, a later slice of the same ranking past that. No r...

Parameters* required
basisOfRecordstring
Scope to a specific basis of record.one of HUMAN_OBSERVATION · MACHINE_OBSERVATION · PRESERVED_SPECIMEN · LIVING_SPECIMEN · MATERIAL_SAMPLE · MATERIAL_CITATION
catalogNumberstring
Catalog number a collection assigned to the specimen or record (e.g. "L.1592880"), matched as the whole value, case-insensitively. Not unique across collections — one number can name records in sev...
coordinateUncertaintyInMetersstring
Coordinate uncertainty radius in meters, e.g. "0,1000"; range endpoints inclusive. Omit for any uncertainty; blank or whitespace-only is rejected.
countrystring
ISO 3166-1 alpha-2 code, uppercase, of where the occurrence was recorded, to scope to one country. Not the publisher's country — that is publishingCountry, and the two disagree on most records. Sco...
datasetKeystring
Scope the aggregation to a single dataset by its GBIF dataset UUID (8-4-4-4-12 hex). Obtain one from gbif_search_datasets, gbif_get_dataset, a DATASET_KEY facet, or the datasetKey field on an occur...
decimalLatitudestring
Latitude or latitude range "min,max" in decimal degrees (WGS84). All supplied spatial filters intersect, including geometry. Omit to leave latitude unbounded; blank or whitespace-only is rejected.
decimalLongitudestring
Longitude or longitude range "min,max" in decimal degrees (WGS84). All supplied spatial filters intersect, including geometry. Omit to leave longitude unbounded; blank or whitespace-only is rejected.
facet*string
Dimension to aggregate by (e.g., COUNTRY, YEAR, BASIS_OF_RECORD, SPECIES_KEY, OCCURRENCE_STATUS, IUCN_RED_LIST_CATEGORY). DATASET_KEY is the first cut when a result set is too large to page: every...one of BASIS_OF_RECORD · COUNTRY · STATE_PROVINCE · YEAR · DATASET_KEY · KINGDOM_KEY
facetLimitinteger
Maximum number of facet values to return (default 10, max 100).default: 10
facetOffsetinteger
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 fa...default: 0
gadmGidstring
GADM administrative-area GID at any level: country (ESP), state or province (ESP.1_1), county or district (ESP.1.5_1), or municipality (ESP.1.6.3_1). GBIF derives a record's GIDs from its coordinat...
geometrystring
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. All supplied spatial filters intersect: decimalLatitud...
hasCoordinateboolean
True includes records with coordinates; false only records without coordinates. Omit for both.
includeLabelsboolean
True names the taxon or dataset behind each bucket on the returned page with a label: the canonicalName for a KINGDOM_KEY, PHYLUM_KEY, CLASS_KEY, ORDER_KEY, FAMILY_KEY, GENUS_KEY, or SPECIES_KEY bu...default: false
institutionCodestring
Code of the institution holding the record (e.g. "K", "CLO"), matched as the whole value, case-insensitively — part of a code or of a multi-word code matches nothing. An INSTITUTION_CODE facet on g...
isInClusterboolean
True includes likely duplicates; false excludes them. Omit to include all records. GBIF exposes membership only, with no cluster identifier.
iucnRedListCategorystring
Scope to records whose taxon carries this IUCN Red List category: CR Critically Endangered, EN Endangered, VU Vulnerable, NT Near Threatened, LC Least Concern, DD Data Deficient, EX Extinct, EW Ext...one of CR · EN · VU · NT · LC · DD
mediaTypestring
Only records carrying at least one media item of this type: StillImage (photographs, scans), MovingImage (video), Sound (audio), or InteractiveResource. Records without media are excluded when this...one of StillImage · MovingImage · Sound · InteractiveResource
monthinteger
Calendar month (1–12), matching the occurrence search filter.
occurrenceStatusstring
Presence/absence scope. Defaults to PRESENT so the aggregation counts sightings, not the surveys that looked and found nothing, and agrees with gbif_count_occurrences on the same filters. Use ANY f...one of PRESENT · ABSENT · ANYdefault: PRESENT

+6 more parameters. See the server's own documentation for the full schema.

gbif_search_datasetsSearch GBIF datasets by keyword, type, publishing country (uppercase ISO 3166-1 alpha-2), publishing organization, or hosting organization. The two organization filters answer different questions — publishingOrg matches the organization whose data it is, hostingOrg the organiz...7 params

Search GBIF datasets by keyword, type, publishing country (uppercase ISO 3166-1 alpha-2), publishing organization, or hosting organization. The two organization filters answer different questions — publishingOrg matches the organization whose data it is, hostingOrg the organiz...

Parameters* required
hostingOrgstring
UUID (8-4-4-4-12 hex, lowercase — matched case-sensitively, as publishingOrg is) of the organization whose installation serves the dataset — distinct from the organization that published it, which...
limitinteger
Number of datasets to return (default 20, max 1000).default: 20
offsetinteger
Pagination offset.default: 0
publishingCountrystring
ISO 3166-1 alpha-2 code, uppercase, of the organization that published the dataset (e.g., "GB", "US", "DE", "SE"). Lowercase and alpha-3 forms ("gb", "GBR") match nothing upstream, which is why onl...
publishingOrgstring
UUID (8-4-4-4-12 hex, lowercase — GBIF matches these two keys case-sensitively, so an upper-cased rendering of a real key matches nothing) of the organization that published the dataset — the organ...
qstring
Free-text search across dataset title and description. Omit the field to browse without a term — a blank or whitespace-only value is rejected rather than sent, because GBIF answers a blank one with...
typestring
Filter by dataset type. OCCURRENCE for observation records, CHECKLIST for species lists.one of OCCURRENCE · CHECKLIST · METADATA · SAMPLING_EVENT
gbif_get_datasetFetch full dataset metadata by UUID key — title, description, citation text, contacts, license, DOI, record count, numConstituents (sub-datasets), temporal/geographic coverage, and the publishing organization key, which gbif_search_datasets takes as publishingOrg. Use after gb...2 params

Fetch full dataset metadata by UUID key — title, description, citation text, contacts, license, DOI, record count, numConstituents (sub-datasets), temporal/geographic coverage, and the publishing organization key, which gbif_search_datasets takes as publishingOrg. Use after gb...

Parameters* required
contactLimitinteger
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 f...default: 10
datasetKey*string
Dataset UUID (8-4-4-4-12 hex) from gbif_search_datasets or an occurrence record.
gbif_search_publishersSearch organizations registered with GBIF by name fragment or country. Returns organization key, title, and country — sufficient to chain into gbif_search_datasets as publishingOrg for the datasets an organization published, or as hostingOrg for the ones its own installation s...4 params

Search organizations registered with GBIF by name fragment or country. Returns organization key, title, and country — sufficient to chain into gbif_search_datasets as publishingOrg for the datasets an organization published, or as hostingOrg for the ones its own installation s...

Parameters* required
countrystring
ISO 3166-1 country code to filter organizations by country. The alpha-2 form ("GB") is canonical; unlike the country codes on the occurrence tools and gbif_search_datasets, this one also resolves t...
limitinteger
Number of organizations to return (default 20, max 1000).default: 20
offsetinteger
Pagination offset.default: 0
qstring
Name fragment to search for. Matches organization names. Omit the field to browse without a term — a blank or whitespace-only value is rejected rather than sent, because the registry answers either...

Sponsors

Configuration

GBIF_CLAMP_READ_LIMITSdefault: true

Clamp oversized read requests to their documented caps; false restores rejecting maxima.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

GBIF_BASE_URLdefault: https://api.gbif.org/v1

Base URL every GBIF API request is built from. Override to route through a proxy or a mirror of the GBIF v1 API. Keep the trailing /v1: checklistKey on the match tools, and includeLabels on Catalogue of Life facet buckets, call the /v2 route derived by replacing it, and fail with

GBIF_REQUEST_TIMEOUT_MSdefault: 10000

Milliseconds a single GBIF API request may take before it is aborted. Aborted attempts fall to the service's retry policy.

GBIF_USER_AGENT

Sent as the User-Agent header on every GBIF API request. GBIF asks integrators to identify themselves with a contact URL or email. Unset or blank sends the server name, version, and repository URL.

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/gbif-biodiversity-mcp-server

Search GBIF species taxonomy, occurrence records, datasets, and publishers via MCP. STDIO or Streamable HTTP.

13 Tools • 2 Resources

Details

Repository
github.com/cyanheads/gbif-biodiversity-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/gbif-biodiversity-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyanheads avatarNist Nvd Mcp Servercyanheads/nist-nvd-mcp-serverSearch and audit NIST NVD CVEs by keyword, severity, CWE, CISA KEV status, and CPE.1stars
2cyanheads avatarUsda Mcp Servercyanheads/usda-mcp-serverSearch foods, compare nutrients, and look up the full USDA FoodData Central database.1stars
3danielenricocahall avatarDisney Lorcana MCPdanielenricocahall/lorcana-mcpMCP server for Disney Lorcana TCG: card search, deck validation, stats, and deck import/export1stars
4davidsirota avatarRollin Mcp Serverdavidsirota/rollin-mcp-serverWheelchair accessibility scores for 70,000+ US restaurants. Search, filter, and submit feedback.1stars
5dhamma-seeker avatarTripitaka MCPdhamma-seeker/tripitaka-mcpMCP server for the full Pāli Canon — search, cite, compare translations. Offered as Dhamma Dāna.1stars
6docupipe avatarDocuPipedocupipe/docupipe-mcpUpload documents and extract structured JSON from Claude Code, Codex, Cursor and other MCP clients.1stars