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": {}
    }
  }
}

Related MCP server: Kerykeion MCP Server

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

📸 View All 21 Scenario 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

Available Tools

2 tools
generate_pedigreeA

Generates a pedigree tree (Bennett 2008 standard) in PNG or SVG format. IMPORTANT: Use mother/father for ALL individuals with known parents - siblings share same parents. Only use top_level:true for founders with NO known parents.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYesArray of family members in pedigreejs format
widthNoImage width in pixels
heightNoImage height in pixels
symbol_sizeNoSize of individual symbols
backgroundNoBackground color#ffffff
labelsNoWhich demographics to show: age, yob, or both. Condition and gene test labels are always shown automatically.
formatNoOutput format: png (base64 image, default) or svg (XML text)png

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it generates visual output (PNG/SVG), follows a specific standard (Bennett 2008), and includes important constraints (e.g., siblings share parents, top_level usage rules). However, it lacks details on error handling, performance limits, or authentication needs, which would be beneficial for a tool with complex input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: two sentences that front-load the core purpose and follow with critical usage rules. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, nested dataset structure) and lack of annotations or output schema, the description is largely complete. It covers the tool's purpose, key behavioral rules, and output formats. However, it does not describe the return value (e.g., base64 string for PNG, XML for SVG) or potential errors, which would enhance completeness for a generative tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema, primarily emphasizing rules for 'mother/father' and 'top_level' usage. It does not explain parameter interactions or provide additional context for other parameters, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generates a pedigree tree (Bennett 2008 standard) in PNG or SVG format.' It specifies the verb ('generates'), resource ('pedigree tree'), standard ('Bennett 2008'), and output formats ('PNG or SVG'). This distinguishes it from the sibling tool 'get_pedigree_documentation', which likely provides documentation rather than generating visualizations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: 'IMPORTANT: Use mother/father for ALL individuals with known parents - siblings share same parents. Only use top_level:true for founders with NO known parents.' It specifies when to use certain parameters (mother/father vs. top_level) and includes critical constraints, offering clear guidance on how to structure the dataset correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pedigree_documentationA

Returns comprehensive documentation for the pedigree data format. ALWAYS call this first before generating a pedigree to understand the required data structure, properties, and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a read-only operation ('Returns documentation') and specifies the scope ('comprehensive documentation for the pedigree data format'). However, it doesn't mention potential limitations like response format, size constraints, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each serve distinct purposes: the first states what the tool does, the second provides critical usage guidance. There is zero wasted language or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-parameter tool with no output schema, the description provides excellent context about what information will be returned and when to use it. The only minor gap is the lack of information about the format or structure of the returned documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline would be 4. The description appropriately doesn't discuss parameters since there are none, and instead focuses on the tool's purpose and usage context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Returns') and resource ('comprehensive documentation for the pedigree data format'). It explicitly distinguishes from its sibling tool 'generate_pedigree' by stating this should be called first before generating a pedigree.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'ALWAYS call this first before generating a pedigree.' It clearly positions this as a prerequisite to the sibling tool 'generate_pedigree' and specifies the context in which it should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedgenerate_pedigree
    • First observedget_pedigree_documentation

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one generates a pedigree tree in visual formats, while the other provides documentation about the data format. There is no overlap in functionality, making it impossible for an agent to confuse them.

Naming Consistency5/5

Both tools follow a consistent verb_noun naming pattern (generate_pedigree, get_pedigree_documentation) with clear, descriptive names that align well with their functions. There are no deviations or mixed conventions.

Tool Count2/5

With only two tools, the server feels under-scoped for a pedigree domain, which typically involves more operations like data validation, editing, or querying. While the tools cover core tasks, the count is too low for comprehensive coverage.

Completeness2/5

The server lacks essential operations for a pedigree system, such as creating, updating, or deleting pedigree data, validating input, or querying specific individuals. The tools only handle generation and documentation, leaving significant gaps that will likely cause agent failures in real-world workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to generate UML diagrams through natural language by rendering PlantUML code into PNG or SVG images. Supports sequence diagrams, class diagrams, use case diagrams, and other UML chart types with Base64-encoded output.
    7
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables astrological chart generation including natal charts, synastry, transits, composite charts, and planetary returns using the Kerykeion library. Supports multiple output formats (text, SVG, PNG) and customizable themes, house systems, and languages.
    MIT

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/plemio/pedigree-mcp'

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