Skip to main content

paleobiology-mcp-server

io.github.cyanheads/paleobiology-mcp-serverVersion 0.5.0

Search fossil occurrences, taxon ranges, diversity through deep time, and the geologic time scale.

Status

Responds606 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
606 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://paleobiology.caseyjhand.com/mcpResponds606 ms
No sign-in

Claude Code

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

Claude Desktop and claude.ai

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

Cursor

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

VS Code

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

npm (npx)

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

npm (npx)

claude mcp add paleobiology-mcp-server -- npx -y @cyanheads/paleobiology-mcp-server@0.5.0

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

Host your own MCP server on run.zero

Tools

8 tools

Tools of paleobiology-mcp-server
Read-only
Idempotent
Open world
paleobiology_dataframe_describeList the tables and their columns staged on a DataCanvas by paleobiology_search_occurrences. Call this before paleobiology_dataframe_query to discover the exact table_name and column names to reference in SQL.Not declaredYesYesNo
paleobiology_dataframe_queryRun a read-only SQL SELECT against occurrence result sets staged on a DataCanvas by paleobiology_search_occurrences. This is how you analyze a large fossil set without re-fetching it: count occurrences by early_interval, group by formation, country (cc), or accepted_name, or filter by a paleo/modern coordinate range. The classification column is JSON — roll up by rank with json_extract_string(classification, '$.family') (also $.phylum, $.class, $.order, $.genus). Staged rows are occurrences, so collection-only fields such as lithology are not present. Reference tables by the table_name that paleobiology_search_occurrences returned — call paleobiology_dataframe_describe first if you do not know the table or column names. Every row supplied by the canvas is returned; choose smaller pages with SQL LIMIT/OFFSET. Results exceeding the canvas row cap include a notice naming the stable ORDER BY … LIMIT/OFFSET continuation. SELECT only; writes and file-reading functions are rejected.Not declaredYesYesNo
paleobiology_get_diversityCompute a diversity / origination / extinction curve for a clade across geologic time, binned by period, epoch, or age — answers "plot dinosaur genus diversity across the Mesozoic." Pass a clade-inclusive base_name (or base_id, the same clade by resolved taxon id — exactly one of the two) and bound the span by a named interval (e.g. "Mesozoic") or a max_ma/min_ma range; choose what to count (genera, species, or families) and the bin resolution. The full bin set returns inline — a diversity series is a bounded set of geologic intervals — so you read the curve, the turnover, and the per-bin origination/extinction directly. Counts reflect SAMPLED diversity, biased by collection effort and rock availability, not true past diversity.Not declaredYesYesYes
paleobiology_get_referencesResolve PBDB reference_no values — the source publication on every paleobiology_search_occurrences and paleobiology_search_collections row — to full citations with authors, year, title, publication, volume, pages, and DOI. Pass the ids from a page of rows in one call: the first 500 distinct ids are resolved and any beyond that come back in remaining_reference_nos for a follow-up call. Ids PBDB has no reference for are listed in not_found. Results keep the order the ids were given.Not declaredYesYesYes
paleobiology_get_taxonResolve a taxon by name (e.g. "Tyrannosaurus") or integer taxon_no. The matched name, rank, parent, occurrence count and first/last appearance range describe taxon_no; accepted_no, accepted_name and accepted_rank identify PBDB's accepted taxon separately, and status carries its taxonomic opinion verbatim. Pass accepted_no as base_id to paleobiology_search_occurrences, paleobiology_get_diversity or paleobiology_search_collections for accepted-clade searches. Set show_children to page immediate child taxa with their own ranks and statuses.Not declaredYesYesYes
paleobiology_list_intervalsLook up the geologic time scale — eons, eras, periods, epochs, and ages with their absolute-age boundaries in millions of years (Ma) and nesting. This is the reference that grounds every temporal filter on the other tools and translates a named interval like "Late Cretaceous" to its 100.5–66.0 Ma boundaries (and back). Filter by a name substring, a Ma range (overlap match), and/or a level; call with no filters to browse the full scale. Browsing and every name on the bundled ICS international-scale snapshot are answered offline. A name the snapshot does not carry — the sub-stage and regional names that occurrence and collection rows report, such as "Late Maastrichtian" or "Lancian" — costs one PBDB lookup across its other time scales; the response names which source answered and which scale the interval belongs to.Not declaredYesYesYes
paleobiology_search_collectionsFind fossil collections (localities) by area and geologic time — "what has been dug up here, and from what rock." Each locality returns its location, age (named interval and Ma), formation and strata, lithology, depositional environment, and the count of co-occurring fossils. Filter by a clade-inclusive base_name (or base_id, the same clade by resolved taxon id), a named interval or max_ma/min_ma range, a lng/lat bounding box, a formation or lithology name, and/or an environment. Results page inline via limit/offset (the response discloses when more remain). Take a collection_no from a row and pass it — or the same bbox+interval — to paleobiology_search_occurrences to see the actual fauna found together.Not declaredYesYesYes
paleobiology_search_occurrencesSearch fossil occurrences by clade-inclusive base_name or base_id, exact taxon_name, interval or max_ma/min_ma, modern geographic bounds, country, formation, environment, or collection_no. At least one filter is required. Formation matches PBDB stored names and preserves list/wildcard syntax; suffixes are not removed. Resolve uncertain taxon names with paleobiology_get_taxon. Rows carry modern lng/lat, reconstructed paleolng/paleolat, age, strata, classification, and source reference_no; keep the coordinate systems distinct. Every served page row is returned, with total matches and the offset that continues the page. When this deployment has DataCanvas enabled, a first page with additional matches stages up to 50,000 occurrences on a canvas: use paleobiology_dataframe_describe for columns, then paleobiology_dataframe_query for SQL over the staged set; the notice distinguishes complete from partial coverage. Later offsets and complete pages stage nothing and leave any supplied canvas untouched.Not declaredYesYesYes

Details

Registry status
Active
Published
Nov 1, 2026
Updated
Nov 1, 2026
Website
Not given
Categories
Uncategorized
GDPR
Not declared

Are you the operator? Claim this listing