Skip to main content
Glama
ers123

somyung-saju-mcp

by ers123

somyung-saju-mcp

MCP (Model Context Protocol) server for Korean Saju (사주팔자) child temperament analysis.

Lets AI assistants such as Claude calculate a child's Four Pillars of Destiny and return their innate temperament, learning style, and parenting guidance — as a framework for understanding a child, not a prediction of their future.

No API key. No network calls. All calculation runs locally.

Built by SoMyung, created by SungHa — a certified Myeongri Psychology Counselor (명리심리상담사 1급) with an MS in Decision Making and Applied Analytics, and a parent of three.

Tools

Tool

Description

analyze_child_temperament

Four Pillars + Five Element balance + personality traits + learning style + parenting tips

compare_siblings

Compare two children's temperaments, how they clash, and how to mediate

explain_five_elements

Detailed explanation of any element (wood / fire / earth / metal / water)

Related MCP server: timemap-mcp

Install

npm install -g somyung-saju-mcp

Or run it without installing (see the npx config below).

Configure with Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (%APPDATA%\Claude\claude_desktop_config.json on Windows).

Using npx — no install:

{
  "mcpServers": {
    "somyung-saju": {
      "command": "npx",
      "args": ["-y", "somyung-saju-mcp"]
    }
  }
}

If installed globally:

{
  "mcpServers": {
    "somyung-saju": {
      "command": "somyung-mcp"
    }
  }
}

Restart Claude Desktop after editing the config.

Configure with Claude Code

claude mcp add somyung-saju -- npx -y somyung-saju-mcp

Usage

Once configured, just ask:

  • "My daughter was born on 2020-05-15 at 14:30. What's her temperament?"

  • "Compare my two kids: son born 2018-03-20 10:00 and daughter born 2021-07-08 15:30"

  • "What does the Fire element mean for a child?"

  • "My son was born 2019-11-22, I don't know the time. What's his personality like?"

The assistant calls the right tool and interprets the structured result conversationally.

How it works

  1. Birth data is parsed (date, optional time, gender).

  2. Four Pillars (년주 / 월주 / 일주 / 시주) are calculated using solar terms (절기), so the month pillar is correct rather than approximated from the calendar month.

  3. Five Element balance is computed across all eight characters — four heavenly stems (천간) and four earthly branches (지지).

  4. A temperament profile is assembled: dominant and weakest elements, personality traits, learning style, social style, emotional patterns, and parenting tips.

  5. The AI host receives structured data and gives a natural interpretation.

Four pillars, each drawn from the 60-term sexagenary cycle, yield 518,400 distinct profiles — about 32,400 times more granular than MBTI's 16 types.

Without a birth time, noon is used as an estimate and the response says so. Three pillars still give roughly 70% of the analysis: core temperament and element balance.

The five elements

Element

Korean

Traits

Learning style

Wood

목 / 木

Creative, independent, growth-oriented

Self-paced, autonomous

Fire

화 / 火

Passionate, expressive, warm

Short bursts, active, social

Earth

토 / 土

Stable, nurturing, reliable

Routine, familiar environment

Metal

금 / 金

Precise, principled, focused

Structured, step-by-step

Water

수 / 水

Intuitive, sensitive, adaptable

Quiet, flexible timing

Scope

This server describes innate temperament tendencies. It does not provide medical, psychiatric, or educational diagnosis, and does not predict future events.

Development

git clone https://github.com/ers123/somyung-saju-mcp.git
cd somyung-saju-mcp
npm install
npm run dev      # run with tsx (hot reload)
npm run build    # compile TypeScript
npm start        # run the compiled server

Publishing to Smithery

Smithery's web form takes a remote HTTP endpoint. This is a stdio server, so it is published as an MCPB bundle instead:

node scripts/build-mcpb.mjs
npx @smithery/cli mcp publish ./somyung-saju.mcpb -n <namespace>/somyung-saju

The build script exists because the two specs disagree: the MCPB manifest schema rejects inputSchema inside tools, while Smithery's registry requires it — publishing without it fails once per tool, and publishing with tools removed fails with "No values to set". So the script packs a spec-compliant manifest and then patches the tool schemas into the archive, reading them from the running server so they cannot drift.

The bundle carries production node_modules, since the host runs it standalone rather than resolving dependencies itself.

Releasing

Publishing runs on GitHub Actions via npm trusted publishing (OIDC) — no token is stored anywhere and no 2FA prompt is involved.

npm version patch      # bumps package.json and creates the vX.Y.Z tag
git push --follow-tags

The workflow refuses to publish if the tag disagrees with package.json, and runs a stdio smoke test against the built server before publishing.

Full 8-section premium reports, in ten languages, are at somyung.cc — including a free preview.

License

MIT — see LICENSE.

Available Tools

3 tools
analyze_child_temperamentA

Calculate a child's Four Pillars of Destiny (사주팔자) and return their temperament profile including dominant element, personality traits, learning style, and parenting tips based on Korean Saju astrology.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderYesChild's gender: M for male, F for female
birthDateYesBirth date in YYYY-MM-DD format
birthTimeNoBirth time in HH:MM format (24h). If omitted, noon is used as estimate.
childNameNoChild's name (optional, used for personalization)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of explaining behavior. It clearly states the tool calculates and returns a profile, implying a non-destructive read-style operation, but it does not disclose potential caveats such as reliance on assumptions, timezone handling, or whether any external computation or persistence occurs.

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

Conciseness4/5

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

The description is a single sentence that front-loads the core action and then lists key output categories. It stays within a reasonable length while conveying the tool's purpose and expected results without 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?

The description is fairly complete for a tool with no output schema, listing the main return components. It could be stronger by explicitly guiding an agent toward when this tool is preferred over its siblings, but the core functionality is adequately covered.

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 including defaults. The description adds no parameter-level meaning beyond the schema, justifying the 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 states a clear, specific verb ('Calculate') and resource ('a child's Four Pillars of Destiny'), and enumerates the output components (dominant element, personality traits, learning style, parenting tips). This distinguishes it from siblings like compare_siblings and explain_five_elements.

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

Usage Guidelines3/5

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

The description implies when to use it: when a child's Saju-based temperament profile is needed. However, it does not explicitly state when not to use it or mention alternatives such as compare_siblings for sibling comparisons.

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

compare_siblingsA

Compare the Saju temperament profiles of two siblings to understand their differences, compatibilities, and how to parent each child differently.

ParametersJSON Schema
NameRequiredDescriptionDefault
child1YesFirst child's birth information
child2YesSecond child's birth information

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral transparency burden. It communicates the intended outcome (understanding differences, compatibilities, parenting) but does not disclose how the comparison is performed, whether birthTime is required for accuracy, or what the output format looks like. For a read-only analysis tool, this is a moderate gap.

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 a single, well-structured sentence that front-loads the core verb 'Compare' and the resource 'Saju temperament profiles.' Every clause adds meaningful context, and there is no redundant or filler content.

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

Completeness3/5

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

The input schema thoroughly documents the parameters, but there is no output schema and no mention of what the tool returns. The description does not specify whether the output is a textual report, a structured profile, or a list of recommendations. This is a notable gap for a tool with no annotations and two nested objects.

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?

The schema has 100% description coverage over all parameters, so a baseline score of 3 applies. The description adds no parameter-specific meaning beyond indicating that the two objects represent siblings. It does not clarify optional vs. required behavior for birthTime or any edge cases.

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 function: comparing Saju temperament profiles of two siblings. The verb 'Compare' is specific, and the resource 'two siblings' makes it distinguishable from the sibling tools (analyze_child_temperament for individual profiles, explain_five_elements for element theory). The purpose is further clarified by mentioning differences, compatibilities, and parenting approaches.

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

Usage Guidelines3/5

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

The description implies usage when the user wants to compare two siblings, but it does not explicitly state when not to use it or recommend alternatives like analyze_child_temperament for single children. An agent can infer the context from the phrase 'two siblings,' but there is no direct routing guidance.

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

explain_five_elementsA

Explain what a specific Five Element (오행) means for a child's personality, learning, and development in Korean Saju astrology.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementYesThe Five Element to explain

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It covers what the explanation addresses (personality, learning, development) and the cultural framework (Korean Saju), which is meaningful. However, it does not disclose output format, caveats, or whether the explanation is individualized, so it only partially satisfies transparency.

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?

A single, efficient sentence that front-loads the verb and resource and wastes no words. Every phrase ('specific Five Element', 'child's personality, learning, and development', 'Korean Saju astrology') contributes essential meaning.

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 one-parameter, no-output-schema tool this is nearly complete: the agent knows what the tool does, what the parameter means, and the domain. The only notable gaps are the lack of explicit sibling differentiation and no indication of response structure, but the simple nature of an explanation tool makes these minor.

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% and the enum fully documents valid values. The description adds context that the element is interpreted in Korean Saju astrology for a child's development, but does not need to add more since the parameter is already well-described.

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 uses the specific verb 'Explain' with a clear resource ('a specific Five Element (오행)') and delineates the scope ('for a child's personality, learning, and development in Korean Saju astrology'). This is distinct from sibling tools analyze_child_temperament and compare_siblings, which focus on analysis and comparison rather than explanation of an element.

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

Usage Guidelines3/5

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

The description provides context that this tool is for explaining an element in Korean Saju astrology, but it never states when to choose it over analyze_child_temperament or compare_siblings, nor does it give any exclusions or alternative conditions. Usage is only implied by the phrase 'for a child's personality, learning, and development.'

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.

  1. 3 tool updatesv1.0.1
    • First observedanalyze_child_temperament
    • First observedcompare_siblings
    • First observedexplain_five_elements

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: one analyzes a single child, one compares two siblings, and one explains a specific five-element concept. There is no overlap in functionality that would cause an agent to select the wrong tool.

Naming Consistency5/5

All tool names follow the same verb_noun pattern in snake_case (analyze_child_temperament, compare_siblings, explain_five_elements). Verb choice and object structure are uniform, making the set predictable and easy to navigate.

Tool Count4/5

Three tools is at the lower bound of the well-scoped range. The narrow domain of Korean Saju child temperament analysis is served adequately, but the set feels slightly thin compared to typical MCP servers, though not incomplete.

Completeness4/5

The tools cover the main workflows: analyzing a child, comparing siblings, and explaining element meanings. Missing a tool for retrieving raw Saju chart details or parent-child compatibility, but these are not explicitly required by the server's stated scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables traditional Chinese fortune-telling through BaZi (Four Pillars) analysis, including solar/lunar date conversion, Five Element balance calculations, Ten Gods deduction, and destiny interpretation for metaphysics applications.
    14 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform Chinese metaphysics calculations including BaZi charts, Tong Shu indicators, solar terms, and more, using a verified engine with 740+ tests.
    8
    8
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to calculate deterministic Bazi (Four Pillars) charts with True Solar Time and Earthly Branch interactions, avoiding LLM hallucination of calendrical math.
    6
    68 npm
    154
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Chinese metaphysics Ba Zi (Four Pillars) birth chart calculation and Huangli (almanac) queries via natural language, with lightweight offline setup.
    MIT