paleobiology-mcp-server
io.github.cyanheads/paleobiology-mcp-serverVersion 0.5.0Search fossil occurrences, taxon ranges, diversity through deep time, and the geologic time scale.
Status
Responds606 msAnswered our handshake without sign-in.- 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 msNo sign-in
Claude Code
claude mcp add --transport http paleobiology-mcp-server https://paleobiology.caseyjhand.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: paleobiology-mcp-server
Remote MCP server URL: https://paleobiology.caseyjhand.com/mcpCursor
{
"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.0Package only
npm (npx)
claude mcp add paleobiology-mcp-server -- npx -y @cyanheads/paleobiology-mcp-server@0.5.0Streamable HTTP
npm: @cyanheads/paleobiology-mcp-server 0.5.0Package only
npm (npx)
claude mcp add paleobiology-mcp-server -- npx -y @cyanheads/paleobiology-mcp-server@0.5.0Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
8 tools
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 declared | Yes | Yes | No |
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 declared | Yes | Yes | No |
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 declared | Yes | Yes | Yes |
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 declared | Yes | Yes | Yes |
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 declared | Yes | Yes | Yes |
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 declared | Yes | Yes | Yes |
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 declared | Yes | Yes | Yes |
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 declared | Yes | Yes | Yes |
Details
- Registry status
- Active
- Published
- Nov 1, 2026
- Updated
- Nov 1, 2026
- Website
- Not given
- Categories
- Uncategorized
- GDPR
- Not declared