ancestry-com-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ancestry_sessionA | Ancestry login session (cookies in .session.json; no browser needed for normal use). "status" reports whether the session is valid and who the user is. "login" opens the sign-in page in a dedicated Chrome window, waits for the user to sign in, saves the cookies, and closes Chrome — run it only when status says not logged in. |
| treeA | Family trees the user owns. Actions: list (own or shared trees) · get (home person, counts, quality stats) · create (new tree with a root person) · update (name/description) · set_privacy · export_gedcom (writes ZIP with .ged to outPath, or returns base64) · import_gedcom (local .ged file → NEW tree, waits for completion) · delete (PERMANENT; requires confirmName = exact tree name; confirm with the user first). Required: get/update/set_privacy/export_gedcom/delete need treeId; create needs name + root* fields; import_gedcom needs name + filePath. |
| personA | People in a tree (also works read-only on other members' public trees). Actions: list (100/page, optional name filter; brief rows — use get for details) · find (name autocomplete → PID, years) · get (full profile: facts with assertionIds, citations, sources, relationships with modifiers, notes, web links; set includeSourceDetails for full source bibliographies) · family_view (ancestors/descendants graph) · relationship_to_home · add (NEW person related to anchorPersonId as Father/Mother/Spouse/Child/Sibling) · link_existing (link two existing people) · update (quick edit name/gender/living/birth/death; omitted fields kept) · change_relationship (modifier codes: parent-child pcb biological, pca adopted, pcs step, pcf foster; spouse spu spouse, spx ex, spp partner) · remove_relationship (unlink, keeps both people) · delete (permanent; displayName must equal "First Last"). Living people: add/update default to deceased; a person marked living is hidden from everyone the tree is shared with and from public view, and Ancestry auto-marks people born within ~100 years with no death as living in some views — set living explicitly. type codes for relationship actions are the related person's role seen from personId: F father, M mother, C child, H husband, W wife. |
| factA | Facts/events on a person (birth, death, residence, occupation, census, burial, marriage, custom…). Actions: list_types (valid eventType keys) · add · edit (all fields replaced; needs assertionId from person.get) · delete · attach_citation / detach_citation (existing citationId; pass databaseId+recordId for record citations) · attach_media / detach_media (mediaId). Relationship events (marriage, divorce, engagement…) require spouseId. Dates are free text that Ancestry parses: "12 Mar 1850", "Mar 1850", "1850", and the GEDCOM qualifiers "abt 1850", "bef 1850", "aft 1850", "bet 1850 and 1860"; anything else ("circa", "1850s", "early 1800s") is stored unparsed and never matches records or hints. Place is free text, most specific first, like "Cocke County, Tennessee, USA". |
| sourceA | Sources, repositories, citations and web links. A source is the work (book, deed book, website); a citation is a person-level reference into it, which fact.attach_citation then links to facts. Actions: list_sources · create_source (title only; then update_source for author/publisher/etc.) · update_source · create_repository · link_repository / unlink_repository · create_citation (sourceId + detail, optional url) · update_citation · get_citation (with the facts it supports and, for record citations, the indexed record) · remove_citation · add_web_link · remove_web_link (webLinkId from person.get). |
| notes_tagsB | Research notes and MyTreeTags on a person. Actions: get_notes · save_notes (replaces the whole note; read first to append) · list_tags (tag ids by category, includes custom tags) · add_tags / remove_tags (tagIds; set custom=true for custom tag ids) · create_custom_tag. |
| search_recordsA | Search Ancestry historical records (census, vital, military, immigration…), optionally member trees, stories and photos — the full website search form. Names are "First Last"; years are 4-digit; places are free text ("Cocke County, Tennessee, USA") and should carry a gpid from record.suggest_places when a placeScope is used. Default matching is fuzzy everywhere (results are ranked, not filtered). Tighten per field: firstNameMatch/lastNameMatch (cumulative levels like the site slider: exact ⊂ similar ⊂ phonetic ⊂ initials|soundex); each event object takes year, yearEnd (range), yearTolerance (0 = that year only, 1/2/5/10 = ± years, omit = fuzzy), place, gpid (from record.suggest_places) and placeScope (exact, county, county_adjacent, state, state_adjacent, country; omit = fuzzy); exactRelatives, exactKeyword, exactRace. Name wildcards: "?" = one character, "" = 0–5 characters; a wildcarded name needs at least 3 literal letters and must start or end with a letter (Sm?th, Johson) and only applies with exact name matching. Start broad (name + birth year), then narrow. collectionFocus re-ranks toward a country/ethnicity; collectionId restricts to one collection; extraParams passes any other site query parameter (collection-specific fields, e.g. f-SelfMilitaryRank). Returns up to 50 hits per page with indexed fields and collection/record ids for record.get and record.save_to_person. |
| recordA | Historical records and places. Actions: get (indexed fields, image id, which of my trees have it, suggested records, other people on the same image) · image_index (every record indexed on one image, e.g. a census page) · download_image (full-res JPEG; maxSide to scale; outPath to write a file) · save_to_person (attach record to a tree person exactly like the site Review page: creates the citation and merges events — events "new" (default) | "all" | list like ["Residence"]; updateExisting=true replaces tree facts that differ (site default), saveAsAlternate=true keeps both, updateName=true takes the record name; includeRelatives adds household/parents/spouse from the record as new people or links matched ones — run once without it and read availableRelatives, then pass their ids or "all") · suggest_places (place autocomplete → gpid) · shoebox_list / shoebox_save / shoebox_remove. |
| hintA | Ancestry hints (suggested records, photos, member-tree people). Actions: summary (counts) · list (pending hints across a tree, newest first; filter by firstName/lastName; page/pageSize) · compare (record vs tree person side by side — what the Review page shows; do this before accepting) · set_state (rejected = No/ignore, deferred = Maybe, pending = undo ignore). To ACCEPT a record hint use record.save_to_person; to accept a photo hint use media.copy_from_tree. |
| mediaA | Photos, documents and stories in a tree. Actions: list (for a person, or the whole tree when personId is omitted) · get · download (full-size file to outPath, or base64; maxSide scales) · upload (local file → person gallery) · update (title/date/description/location; omitted fields kept) · set_profile_photo · copy_from_tree (copy a photo from another member's public tree or a photo hint into destPersonIds) · delete. Attaching media to a fact is fact.attach_media. |
| dnaB | AncestryDNA. Actions: tests (testGuid per kit) · matches (the website match list with all its filters: minCm/maxCm, parentalSide maternal|paternal|both|unassigned, trees public|private|unlinked, groupIds (2 = starred; custom ids from groups), nameSearch (match name or username), unviewedOnly, notesOnly, newOnly, sharedWithMatchGuid = shared matches with that match; sortBy RELATIONSHIP (default) | DATE; pageSize ≤ 50) · groups (starred/custom group ids and match counts) · add_to_group / remove_from_group (matchGuids + groupId) · match_detail (shared cM/segments, predicted relationship, trees) · set_note (private note on a match; empty clears) · ethnicity (estimate regions). |
| messagesA | Ancestry member messaging and notifications. Actions: list_conversations · get_messages (conversationId) · member_profile (public profile by userId) · send (reply in conversationId, or start a new one with toUserId — sends real mail to a real person; confirm with the user first) · notifications. |
| raw_requestA | Escape hatch: perform any ancestry.com request through the logged-in browser (same-origin fetch with cookies; CSRF added for hintsui/DNA APIs). Only when no action above fits. path like "/api/treesui-list/trees?rights=own". See docs/endpoints.md for known endpoints. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct domain: session management, hints, trees, people, facts, sources, notes/tags, record search, record details, media, DNA, messages, and a raw API escape hatch. There is minimal overlap; even where hint and record interact, their roles are clearly separated and complementary.
Most tool names are concise lowercase nouns (person, tree, fact, source, record, media, dna) which is a consistent pattern. Minor deviations like search_records, notes_tags, and raw_request break the pure-noun convention but remain readable and predictable.
With 13 tools, the server is well-scoped for a comprehensive genealogy platform. Each tool represents a major functional area (trees, people, records, DNA, messaging, etc.) and earns its place without bloat or excessive granularity.
The tool surface covers the core ancestry workflows: tree CRUD, person management with relationships, facts, sourcing/citations, record search and attachment, media handling, DNA insights, hints review, notes/tags, and messaging. There are no obvious dead ends for typical genealogy research tasks.