# Paleobiology Database MCP

> Paleobiology Database MCP Server accesses millions of fossil records spanning Earth’s history. Query specific finds using taxonomy names or geographic coordinates; tabulate diversity across geological time periods; and map ancient migration patterns directly through your AI agent.

## Overview
- **Category:** databases
- **Price:** Free
- **Tags:** paleontology, fossils, geology, taxonomy, evolution

## Description

You're connected to the **Paleobiology Database**, so your AI client turns into a seriously sharp paleontological research machine. This isn't just browsing; you're querying millions of fossil records that track life on Earth from phyla right down to individual finds. You'll use this server to pinpoint specific fossils, map out how life evolved across deep time, or figure out where ancient populations moved.

To find a specific fossil occurrence, you start by listing available records. Run `list_occurrences` or `list_collections` and filter down the dataset using location parameters or species names. For deeper dives on one single record, use `get_occurrence`. If you're tracking physical samples, you can run `list_specimens` to see individual museum specimens, then pull all associated data points for a specific sample ID using `get_specimen`, or get a detailed list of measurements attached via `list_specimen_measurements`.

To map out the scope of life on Earth, you've got tools that define context. You can check available time periods by running `list_timescales` to see every major geological era used in the database; for specific time divisions, `list_intervals` gives you a list like 'Cretaceous Period.' If you need to constrain the data by rock type or formation, run `list_strata` or use `get_config` to pull core settings that detail all available continents and lithologies (rock types).

When it comes to cataloging life, you're pulling from massive taxonomic resources. Use `list_taxa` to get a list of names and their parent/child species relationships. You can then run `get_taxon` for deep details on one specific group—say, *Tyrannosaurus*—or use the autocomplete functions like `autocomplete_taxa` as you type your query to ensure accuracy across taxa, strata, or intervals.

Tracking how diverse life was over time is where this thing shines. To get a full computation of every different kind of fossil that existed during specific geological periods, run `get_occurrences_diversity`. If you need a faster, preliminary look at diversity metrics across time, use `get_occurrences_quickdiv`. You can also pinpoint the most common types of fossils (taxa) within any selected group using `get_occurrences_prevalence`.

To understand movement and distribution, you run pattern recognition tools. Execute `get_occurrences_geosum` to summarize multiple fossil finds into distinct geographic clusters, letting you identify major hotspot areas or trace ancient migration paths. You can also get a general sense of where multiple collections are from by running `get_collections_summary`, which groups findings into broad geographic zones.

For academic rigor, you've got tools that handle the messy side of paleontology. To pull detailed information on how an academic committee classified a taxon, run `get_opinion` or get a list of available scholarly opinions via `list_opinions`. If you need source material details, use `list_references` to check available bibliographic records, and then run `get_reference` to pull the specifics for one record. You can even cross-check if a provided reference matches an existing PBDB entry using `match_reference`.

Need quick suggestions? If you're typing into any field—whether it's a taxa name, strata, or interval—you don't have to guess; use `autocomplete_taxa`, `autocomplete_strata`, and `autocomplete_combined` for immediate help. The tools give you the power to map out entire family trees using `get_occurrences_taxa` through related fossil occurrences, or pull detailed data on a single collection by ID with `get_collection`. You're not just querying; you're building a complete picture of Earth’s history.

## Tools

### autocomplete_combined
Suggests potential records across taxa, strata, intervals, and people fields.

### autocomplete_strata
Provides automatic suggestions for specific geological strata names.

### autocomplete_taxa
Suggests taxonomic names as you type them in a query.

### get_collection
Retrieves detailed information about one specific fossil collection by its ID.

### get_collections_summary
Provides a geographic summary, grouping multiple collections into general areas.

### get_config
Returns core database settings like the available continents and rock types (lithologies).

### get_occurrence
Fetches all data points for a single, specific fossil occurrence record.

### get_occurrences_diversity
Generates a detailed tabulation of how many different kinds of fossils existed over time.

### get_occurrences_geosum
Summarizes multiple fossil occurrences into geographic clusters for pattern identification.

### get_occurrences_prevalence
Identifies the most common types of fossils (taxa) within a selected group of records.

### get_occurrences_quickdiv
Provides a fast, preliminary tabulation of fossil diversity across time intervals.

### get_occurrences_taxa
Retrieves the full taxonomic hierarchy for a set of related fossil occurrences.

### get_opinion
Gets specific information about an academic opinion regarding a taxon's classification.

### get_reference
Pulls details for one bibliographic reference used in the database records.

### get_specimen
Retrieves all data points associated with a single physical specimen ID.

### get_taxon
Fetches detailed information about one specific taxonomic name (e.g., *Tyrannosaurus*).

### list_collections
Lists multiple fossil collections using filters like date range or location.

### list_intervals
Retrieves a list of major geological time intervals, such as the Cretaceous Period.

### list_occurrences
Lists multiple fossil occurrences using filters like location or species name.

### list_opinions
Lists academic opinions about taxa based on specific criteria.

### list_references
Lists available bibliographic references using filters.

### list_specimen_measurements
Retrieves a list of physical measurements attached to specific specimens.

### list_specimens
Lists individual museum specimens based on filters.

### list_strata
Retrieves a list of geological strata (rock formations, groups, or members).

### list_taxa
Lists taxonomic names, including their parent or child species.

### list_timescales
Provides a comprehensive list of all available geological time scales used in the database.

### match_reference
Checks if a provided bibliographic reference matches an existing record in the PBDB.

## Prompt Examples

**Prompt:** 
```
Find all Tyrannosaurus occurrences recorded in the Cretaceous period.
```

**Response:** 
```
I've searched the database for Tyrannosaurus in the Cretaceous. I found several occurrences, including specimens from the Hell Creek Formation (Montana) and the Lance Formation (Wyoming). Would you like the specific IDs for these records?
```

**Prompt:** 
```
Show me the diversity of Trilobites over time.
```

**Response:** 
```
Generating diversity tabulation for Trilobita... The data shows a peak in diversity during the Ordovician period, followed by a gradual decline until their extinction at the end of the Permian. I can provide a breakdown by geological interval if you'd like.
```

**Prompt:** 
```
List fossil collections found in the geographic area of Montana, USA.
```

**Response:** 
```
I've filtered collections for the Montana region (approx. lat 44-49, lng -116 to -104). I found numerous collections, primarily from the Cretaceous and Paleogene, including many dinosaur and early mammal sites. Should I list the most recent ones?
```

## Capabilities

### Find Specific Fossil Occurrences
Use `list_occurrences` or `get_occurrence` to pull detailed records on individual fossil finds based on location, species, and time.

### Measure Biological Diversity Over Time
Run `get_occurrences_diversity` to generate a full computation of how many different types of life existed during specific geological periods.

### Cluster Fossil Finds Geographically
Execute `get_occurrences_geosum` to summarize multiple fossil finds into distinct geographic clusters, identifying major hotspot areas.

### Trace the Taxonomic Lineage
Query `list_taxa` and related tools to map out the entire family tree of life, from broad groups down to specific species.

### List Geological Contexts
Access time periods and rock types using `list_intervals`, `list_strata`, or `list_timescales` to anchor your data in proper geological context.

## Use Cases

### Identifying Mass Extinction Events
A researcher suspects a major diversity crash happened right before the K-Pg boundary. Instead of manually running queries for every time interval, they ask their agent to run `get_occurrences_diversity` specifically filtered for that period. The result shows a sudden drop in life forms, pinpointing the extinction event's timing.

### Mapping Ancient Migration Paths
A student wants to know if early mammals moved through Montana and Wyoming together. They use `get_occurrences_geosum` on known mammal sites in both areas, which clusters the data points and visually confirms a high-density corridor between the two regions.

### Verifying Specimen Details
A curator finds an old specimen ID. They first use `list_specimens` to get basic details, then run `get_taxon` on that species name and finally check `get_reference` to see which papers cited this exact record.

### Building a Comparative Analysis
A professor needs to compare the diversity of Trilobites vs. early sharks over three different eras. They use `list_timescales` to select the right intervals, then run targeted queries using `get_occurrences_diversity` for each group/era combo.

## Benefits

- Track diversity changes instantly. Instead of manually cross-referencing multiple spreadsheets, run `get_occurrences_diversity` to map out biodiversity peaks and drops over time in one query.
- Pinpoint geographical hotspots fast. Use `get_occurrences_geosum` when you suspect a certain region holds many related finds; it clusters the data so you don't have to filter by coordinates manually.
- Build a complete lineage map. When analyzing a new find, use `get_occurrences_taxa` to instantly see its full taxonomic family tree and relationship to other species.
- Cross-reference physical specimens with literature. If you have an ID from `list_specimens`, you can immediately pull related bibliographic data using `get_reference`.
- Contextualize everything correctly. Use `list_intervals` alongside `get_taxon` to ensure your analysis knows whether it's talking about a 'Cretaceous' or 'Jurassic' context, keeping the science accurate.

## How It Works

The bottom line is: you talk about paleontology in plain English, and your AI client handles the complex database calls needed for the answer.

1. Subscribe to the server. If you have a PBDB API Key, enter it now for higher rate limits.
2. Ask your agent a natural language question about fossil records (e.g., 'Show me diversity during the Ordovician period').
3. Your agent maps that query to specific tools (`get_occurrences_diversity`, `list_intervals`) and returns structured, actionable data.

## Frequently Asked Questions

**How do I find fossils in a specific location? (list_occurrences)**
You use `list_occurrences` and provide geographic coordinates or filters. You can also run `get_occurrences_geosum` to group many finds into larger, more general clusters.

**What is the difference between getting a collection summary and listing occurrences? (get_collections_summary vs list_occurrences)**
Running `list_occurrences` gives you every single record matching your filters. `get_collections_summary` provides a high-level geographic summary of an entire group of finds, useful for big picture mapping.

**Can I see the full family tree of life? (list_taxa)**
Yes, use `list_taxa`. This tool maps out the complete taxonomic hierarchy—showing which species are children or parents to others. It’s how you understand relatedness.

**I need a fast diversity count, not a full analysis. (get_occurrences_quickdiv)**
Use `get_occurrences_quickdiv`. This runs a rapid calculation of fossil diversity over time, perfect for quickly checking trends before running the deeper computation with `get_occurrences_diversity`.

**What's the most common type of fossil in this area? (get_occurrences_prevalence)**
Run `get_occurrences_prevalence`. You feed it a set of records, and it spits out which taxa were found most often within that specific group.

**If I use `get_occurrence` frequently, how do I manage rate limiting?**
You should enter your own PBDB API Key. The server defaults to shared limits for all users, but supplying a personal key significantly increases your query allowance. This is crucial if you run high-volume tasks, like iterating through hundreds of `get_occurrences_diversity` calls.

**If I use `autocomplete_taxa`, how do I get the full parent/child relationship for a species?**
The `get_taxon` tool provides the complete taxonomic hierarchy. It returns not just the name, but also its parents and children within the tree of life structure. This lets your agent map out lineages precisely, far beyond simple auto-completion.

**Before I query fossils, what structural data can I access using `get_config`?**
The `get_config` tool lists all database metadata categories. You'll get ranks for continents, countries, lithologies, and environments—the core structural information needed to filter your searches accurately and narrow down the context of any find.

**Can I search for fossils within a specific geological time period like the Cretaceous?**
Yes! Use the `list_occurrences` tool and provide the period name in the `interval` parameter. The agent will return all recorded fossil occurrences from that specific time block.

**How do I analyze the diversity of a specific group of animals over time?**
You can use the `get_occurrences_diversity` or `get_occurrences_quickdiv` tools. By providing a `base_name` (like 'Trilobita'), the agent will generate a tabulation of how many different taxa existed across different geological intervals.

**Can I find fossil collections based on geographic coordinates?**
Absolutely. The `list_collections` and `list_occurrences` tools allow you to specify a bounding box using `lngmin`, `lngmax`, `latmin`, and `latmax` to find all records within a specific map area.