Skip to main content
Glama
ball2jh

findagrave-com-mcp

by ball2jh

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FINDAGRAVE_MIN_INTERVAL_MSNoSpaces requests to avoid Cloudflare protection challenges. The minimum interval between requests in milliseconds.250

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
findagrave_memorialA

Search and read Find a Grave memorials (grave records: dates, burial place, plot, inscription, biography, linked family, photos). Actions:

  • search: memorials matching the given criteria; needs at least one of lastName, firstName, location/locationId, cemeteryId, relativeName, text, bio, birthYear, deathYear, famous. Rows give memorialId, name, maidenName, birth/death dates and places, cemetery, plot, veteran/gravePhoto flags, and for text/relativeName/bio searches the passages that matched. Names match exactly by default (nameMatch); women are also found under their maiden name unless includeMaidenName=false. About 360 chars per row, 50 rows per call at most; only the first 10000 results of a search can be reached, so narrow by place or years.

  • get: one memorial in full (needs memorialId): name with maidenName separate, birth/death with place ids, burial cemetery and GPS, plot, inscription, bio, veteran, family grouped by the relative's role (parents with father/mother, spouses, children, siblings, halfSiblings — each with its own memorialId to read next), the first photos (photos=count), who created/manages it, the matching Ancestry "Find a Grave Index" record (ancestryRecord: collectionId 60525 + recordId, usable with ancestry_record get), and a ready citation. About 2-15K chars.

  • photos: a memorial's photos with captions and contributors (needs memorialId; type filters grave/person/family/other). Read one with findagrave_download.

  • flowers: virtual flowers left on the memorial with their notes, which sometimes name relatives (needs memorialId). Find a Grave is user-contributed: dates, family links and bios are a contributor's claims, often without sources; treat them as leads and check the stones in the photos and the records behind them.

findagrave_cemeteryA

Find and read Find a Grave cemeteries. Actions:

  • search: cemeteries by name and/or place (needs name, location or locationId); rows give cemeteryId, name, place, memorial and photographed counts, GPS. A place alone lists every cemetery in it (Giles County, Tennessee has about 450). 100 per page at most.

  • get: one cemetery (needs cemeteryId): all its names, place, GPS, address, description and history notes, memorial count (the number a memorial search in it returns), photographed and GPS counts. To list or search the people buried in a cemetery use findagrave_memorial search with cemeteryId.

findagrave_placeA

Find a Grave's place hierarchy (country → state → county → city), whose ids narrow memorial and cemetery searches. Actions:

  • search: places and cemeteries whose name starts like the text (needs name), with locationId, type, full place and cemetery count. Find a Grave ranks these by its own relevance, not by the name, so check the place before using an id.

  • get: one place by locationId.

  • children: the places directly inside a place (needs locationId): counties of a state, towns of a county.

findagrave_downloadA

Fetch a memorial or cemetery photo (a gravestone, portrait, obituary clipping, …). Action photo: needs photoId (from findagrave_memorial get/photos) or url (an images.findagrave.com URL). Without outPath the image is returned inline for reading, scaled so its longer side is at most maxSide (default 1600 px). With outPath the original file is written to disk unscaled (unless maxSide is given) and only metadata is returned.

findagrave_graphqlA

Run a read-only GraphQL query against Find a Grave's own API (https://www.findagrave.com/orc/graphql) for data the other tools do not return. Mutations are refused. Full schema introspection is disabled, but { __type(name: "Memorial") { fields { name } } } lists a type's fields; docs/endpoints.md lists the useful queries and types (memorialsById, memorialSearch, cemeteries, locationsByTypeahead, browse, flowersForMemorial, getPhotos, virtualCemeterySearch). Prefer the other tools: their results are projected to fit and their filters are checked.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a distinct domain (memorials, cemeteries, places, downloads, GraphQL), but findagrave_place search and findagrave_cemetery search can both return cemeteries by name, creating mild ambiguity about which to use.

Naming Consistency4/5

All tools share the findagrave_ prefix, but actions mix verb forms (search, get) with plural nouns (photos, flowers), and findagrave_download and findagrave_graphql break the resource-noun pattern of the other tools.

Tool Count5/5

Five top-level tools is well-scoped; each tool covers a logical area, and exposing actions under memorial/cemetery/place keeps the surface clean without bloat.

Completeness5/5

The server covers the full read-only workflow for Find a Grave: memorial search/detail/photos/flowers, cemetery and place lookup, photo download, and a GraphQL fallback for any missing data. No obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues