Skip to main content
Glama

Pedigree MCP Server

Installation

Add to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "pedigree": {
      "command": "npx",
      "args": ["pedigree-mcp"],
      "env": {}
    }
  }
}

Build from Source

If you prefer to build from source:

git clone https://github.com/zzgael/pedigree-mcp.git
cd pedigree-mcp
npm install
npm run build

Then use in your MCP client configuration:

{
  "mcpServers": {
    "pedigree": {
      "command": "node",
      "args": ["/absolute/path/to/pedigree-mcp/dist/index.js"],
      "env": {}
    }
  }
}

Features

Bennett 2008 Standard Compliance

This implementation follows the NSGC Standardized Human Pedigree Nomenclature:

Symbol

Description

Property

Square

Male

sex: "M"

Circle

Female

sex: "F"

Diamond

Unknown sex

sex: "U"

Filled shape

Affected individual

conditions: [...]

Diagonal line

Deceased

status: 1

Arrow (lower-left)

Proband

proband: true

Double arrow (lower-left)

Consultand (person seeking counseling)

consultand: true

Brackets [ ]

Adopted

noparents: true

Double line

Consanguinity

Auto-detected from shared ancestors

Text on double line

Consanguinity degree

consanguinity_degree: "1st cousins"

Horizontal bar

MZ (identical) twins

mztwin: "group_id"

Diagonal lines

DZ (fraternal) twins

dztwin: "group_id"

Dot in center

Carrier status

carrier: true

Outlined dot

Obligate carrier (inferred)

obligate_carrier: true

"P" inside symbol

Pregnancy

pregnant: true

"P" + weeks label

Pregnancy duration

pregnant: true, terminated_age: 12

Small triangle

Early pregnancy loss (<20 weeks)

terminated: true, terminated_age: 8

Large triangle

Stillbirth (≥20 weeks)

terminated: true, terminated_age: 24

"EP" below symbol

Ectopic pregnancy

ectopic: true

Crossed lines (X)

Infertility

infertility: true

Hash marks on line

Divorced/separated

divorced: true

Line through offspring

No children by choice

no_children_by_choice: true

"A" in upper right

Ashkenazi ancestry

ashkenazi: 1

"*" in upper left

Genetic anticipation

anticipation: true

"d. XXy" label

Age at death (auto-calculated)

yob: 1950, yod: 2020, status: 1

Arrow + "OUT" label

Adopted OUT (placed for adoption)

adoption_type: "out"

Dashed brackets

Foster placement (temporary)

adoption_type: "foster"

Roman numerals I, II, III

Birth order in sibling group

birth_order: 1 (displays as "I")

"E" marker (blue)

ART - Egg donor conception

art_type: "egg_donor"

"S" marker (blue)

ART - Sperm donor conception

art_type: "sperm_donor"

"Em" marker (blue)

ART - Embryo donor conception

art_type: "embryo_donor"

"GC" marker (blue)

ART - Gestational carrier (surrogate)

art_type: "surrogate"

"SAB" label

Pregnancy outcome - Spontaneous abortion

pregnancy_outcome: "miscarriage"

"TOP" label

Pregnancy outcome - Termination of pregnancy

pregnancy_outcome: "induced_termination"

"SB" label

Pregnancy outcome - Stillbirth

pregnancy_outcome: "stillbirth"

"Het" label (green)

Gene copy number - Heterozygous

gene_copy_number: "heterozygous"

"Hom" label (green)

Gene copy number - Homozygous

gene_copy_number: "homozygous"

"CH" label (green)

Gene copy number - Compound heterozygous

gene_copy_number: "compound_heterozygous"

Dashed partnership line

Unmarried/common-law partnership

relationship_type: "unmarried"

Conditions (Bennett Standard - FREE TEXT)

Per Bennett 2008 standard, conditions are documented using free text. Simply provide a conditions array with any disease/condition name:

{
  "conditions": [
    { "name": "Breast cancer", "age": 42 },
    { "name": "Ovarian cancer", "age": 55 }
  ]
}

Examples:

  • { "name": "Huntington's disease", "age": 45 }

  • { "name": "Type 2 diabetes" } (no age = affected status only)

  • { "name": "Cystic fibrosis" }

  • { "name": "Hereditary hemochromatosis", "age": 38 }

Colors are auto-assigned from a palette based on unique condition names. Multiple conditions show as quadrants (male) or pie slices (female).

Genetic Testing Results

Supports any gene - use pattern {gene}_gene_test:

{
  "brca1_gene_test": { "type": "T", "result": "P" },
  "htt_gene_test": { "type": "T", "result": "P" },
  "apoe_gene_test": { "type": "S", "result": "N" }
}

Gene test result codes:

  • type: T (tested), S (screening), - (unknown)

  • result: P (positive), N (negative), - (unknown/VUS)

Labels appear as: BRCA1+ (positive), HTT- (negative)

Tools

get_pedigree_documentation

Returns comprehensive documentation about the pedigree data format. Always call this first before generating a pedigree.

generate_pedigree

Generates a family pedigree tree in PNG or SVG format.

Parameters:

Parameter

Type

Default

Description

dataset

Individual[]

required

Array of family members

width

number

800

Image width in pixels

height

number

600

Image height in pixels

symbol_size

number

35

Node diameter in pixels

background

string

#ffffff

Background color

labels

string[]

['age']

Attributes to display

format

'png' | 'svg'

'png'

Output format: png (base64 image) or svg (XML text)

Data Format

Individual Object

interface Individual {
  // Required
  name: string;           // Unique ID (max 7 chars)
  sex: "M" | "F" | "U";   // Male, Female, Unknown

  // Identity
  display_name?: string;  // Human-readable name for display (max 13 chars)
  top_level?: boolean;    // Founding individual (no parents)
  proband?: boolean;      // Index case

  // Relationships
  mother?: string;        // Mother's name (must exist in dataset)
  father?: string;        // Father's name (must exist in dataset)

  // Demographics
  age?: number;           // Current age
  yob?: number;           // Year of birth
  status?: number;        // 0 = alive, 1 = deceased

  // Twins (Bennett standard)
  mztwin?: string;        // MZ twin group ID (identical)
  dztwin?: string;        // DZ twin group ID (fraternal)

  // Special indicators (Bennett standard)
  carrier?: boolean;      // Carrier status (dot in center)
  pregnant?: boolean;     // Current pregnancy (P inside symbol)
  terminated?: boolean;   // Stillbirth/SAB (small triangle)
  divorced?: boolean;     // Divorced from partner (hash marks)
  noparents?: boolean;    // Adopted (brackets around symbol)

  // Conditions (Bennett standard - FREE TEXT)
  conditions?: Array<{
    name: string;         // Any condition: "Breast cancer", "Huntington's disease", etc.
    age?: number;         // Age at diagnosis/onset
  }>;

  // Genetic tests (pattern: {gene}_gene_test)
  brca1_gene_test?: { type: "-"|"S"|"T", result: "-"|"P"|"N" };
  brca2_gene_test?: { type: "-"|"S"|"T", result: "-"|"P"|"N" };
  // ... any gene test
}

Examples

📸

See the full gallery of standardized pedigree scenarios demonstrating Bennett 2008/2022 compliance, including gender diversity, twins, consanguinity, ART indicators, and complex multi-generation families.

Basic Three-Generation Pedigree

[
  {"name": "MGF", "sex": "M", "top_level": true},
  {"name": "MGM", "sex": "F", "top_level": true, "conditions": [{"name": "Breast cancer", "age": 55}]},
  {"name": "Mother", "sex": "F", "mother": "MGM", "father": "MGF", "conditions": [{"name": "Breast cancer", "age": 42}]},
  {"name": "Father", "sex": "M", "top_level": true},
  {"name": "Proband", "display_name": "Sarah", "sex": "F", "mother": "Mother", "father": "Father", "proband": true, "age": 25, "brca1_gene_test": {"type": "T", "result": "P"}}
]

Neurological Condition Pedigree

[
  {"name": "GF", "sex": "M", "top_level": true, "status": 1, "conditions": [{"name": "Huntington's disease", "age": 52}]},
  {"name": "GM", "sex": "F", "top_level": true},
  {"name": "Father", "sex": "M", "mother": "GM", "father": "GF", "conditions": [{"name": "Huntington's disease", "age": 48}]},
  {"name": "Mother", "sex": "F", "top_level": true},
  {"name": "Proband", "sex": "M", "mother": "Mother", "father": "Father", "proband": true, "age": 25, "carrier": true}
]

Twins Example

[
  {"name": "Dad", "sex": "M", "top_level": true},
  {"name": "Mom", "sex": "F", "top_level": true},
  {"name": "Twin1", "sex": "M", "mother": "Mom", "father": "Dad", "mztwin": "mz1"},
  {"name": "Twin2", "sex": "M", "mother": "Mom", "father": "Dad", "mztwin": "mz1"},
  {"name": "DZTwin1", "sex": "M", "mother": "Mom", "father": "Dad", "dztwin": "dz1"},
  {"name": "DZTwin2", "sex": "F", "mother": "Mom", "father": "Dad", "dztwin": "dz1"}
]

Complex Family with Bennett Features

[
  {"name": "GF", "sex": "M", "top_level": true, "status": 1},
  {"name": "GM", "sex": "F", "top_level": true, "carrier": true},
  {"name": "Father", "sex": "M", "mother": "GM", "father": "GF", "divorced": true},
  {"name": "Mother", "sex": "F", "top_level": true},
  {"name": "Child1", "sex": "F", "mother": "Mother", "father": "Father", "proband": true, "noparents": true},
  {"name": "Loss", "sex": "U", "mother": "Mother", "father": "Father", "terminated": true}
]

Development

# Install dependencies
npm install

# Run in development mode (watch)
npm run dev

# Run all tests
npm test

# Build for production
npm run build

# Type check
npx tsc --noEmit

Testing

  • 159 tests total covering:

    • Validation (parent references, gender constraints)

    • SVG rendering (all symbol types, indicators)

    • Condition markers and multi-condition pie charts

    • Gene test formatting

    • Twin rendering (MZ with bar, DZ without)

    • Consanguinity detection

    • Bennett 2008 compliance (carrier, pregnancy, termination, divorced)

    • Edge cases (deep pedigrees, wide generations, half-siblings)

References

License

MIT License - see LICENSE

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zzgael/pedigree-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server