Skip to main content
Glama
ball2jh

familysearch-org-mcp

by ball2jh

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
fs_sessionA

FamilySearch login session. "status" reports whether the dedicated Chrome is signed in and who the user is; "open_login" opens the sign-in page for the user.

personA

People in the FamilySearch Family Tree (one shared, collaborative tree — edits are public and attributed; always give a changeMessage/reason). Actions: get (names, facts with ids, relatives, couple and child-parent relationships; sources=true adds source descriptions) · search (tree persons by name/dates/places/relatives; q* fields; matching is fuzzy by default — name wildcards "?" = one character, "" = any length, up to 4 per name, at least 3 literal letters, may lead or trail: bou, Tlts*) · ancestry / descendancy (generations) · changes (change history) · matches (record hints; records=true) · create (unconnected new person; connect with relationship.create) · update (add or edit facts/name/gender; a fact with id edits, without id adds) · delete_conclusion (remove a fact/name/gender by id) · delete (remove a person you created; needs reason). Dates and places on facts should carry formalDate and placeId (see the fact fields) or the tree flags them as non-standardized. Living people you create are private to your account (invisible to other users) until marked deceased.

relationshipA

Family Tree relationships. Actions: create_couple (person1 + person2, optional marriage facts) · create_child_parents (child + parent1/parent2, lineage types BiologicalParent/AdoptiveParent/StepParent/FosterParent/GuardianParent) · get_couple / get_child_parents (by relationship id, from person.get) · delete_couple / delete_child_parents (needs reason).

sourceA

Sources on FamilySearch. A source description lives in the user's Source Box; attaching it to a person creates a source reference (with optional tags = the fact types it supports). Actions: list_person (a person's attached sources) · source_box (my source descriptions) · create (title, citation, optional about URL/ark) · get · delete_description · attach (personId + descriptionId + tags) · detach (personId + sourceReferenceId).

noteA

Notes on a Family Tree person. Actions: list · add (subject + text) · delete (noteId).

memoryA

Memories (photos, documents). Actions: list_person · list_mine · get (metadata + file url) · download (file to outPath, or base64) · upload (local file → my memories; then attach) · attach (memoryId → personId) · delete (memoryId).

recordA

FamilySearch historical records. Actions: search (indexed records by name/dates/places/relatives/census role; collectionType narrows to a category; every field is fuzzy unless listed in exactFields; facets=true returns the site filter groups (collection, birth/marriage/death/residence place region and year range, sex) whose params can be passed back via extraParams; use offset/count to page; wildcards are rarely needed — "?" = one character, "" = any length, up to 4 per name, at least 3 literal letters, may lead or trail: Sm?th, bou, Tlts*) · get (full record by persona id or ark, with all persons on the record, their events, and the image ark) · download_image (the record's scanned image as JPEG to outPath or base64; maxWidth to scale) · collections (record collections). To cite a record on a tree person: source.create with about=the record ark, then source.attach.

placeB

Standardized places. Actions: search (name → place ids, jurisdictions, coordinates) · get (place description by id).

raw_requestA

Escape hatch: any FamilySearch platform request with the session bearer token (path like "/platform/tree/persons/XXXX-XXX"; default Accept application/x-fs-v1+json). Set viaSite=true for www.familysearch.org /service/ endpoints that reject non-browser clients.

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

Scored across 9 tools

Disambiguation5/5

Each tool maps to a clear, distinct resource type—person, relationship, source, record, memory, note, place, session, and raw request. Descriptions clearly separate overlapping concepts like person.search vs record.search or memory.attach vs source.attach. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names are singular nouns representing domain entities, with compound names using underscores (fs_session, raw_request). This is a consistent, predictable pattern. No mixing of verb styles, casing, or conventions.

Tool Count5/5

9 tools is well within the ideal 3-15 range and appropriately scoped for FamilySearch. Each tool covers a distinct functional area without redundancy or bloat. The set feels balanced for the platform's core genealogy workflows.

Completeness4/5

Core lifecycles are well covered: person CRUD, relationship create/get/delete, source attach/detach, memory upload/attach, note add/delete, record search/get, and place lookup. Minor gaps like updating a note, source description, or relationship are workaroundable via delete/recreate, so slightly short of full CRUD completeness.

Maintenance

ActivityMaintained
ResponsivenessNo issues