Skip to main content
Glama
hjsh200219

Saju Fortune-Telling MCP Server

by hjsh200219

๐Ÿ”ฎ ์‚ฌ์ฃผ ์šด์„ธ MCP ์„œ๋ฒ„ (Saju MCP Server)

npm version License: MIT Node.js Version

ํ•œ๊ตญ ์ „ํ†ต ์‚ฌ์ฃผํŒ”์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์„ธ๋ฅผ ๋ถ„์„ํ•˜๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

A Model Context Protocol (MCP) server for Korean traditional Saju (Four Pillars of Destiny) fortune-telling.

๐ŸŒ Language: ํ•œ๊ตญ์–ด | English

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‚ฌ์ฃผํŒ”์ž ๊ณ„์‚ฐ: ์ƒ๋…„์›”์ผ์‹œ๋กœ๋ถ€ํ„ฐ ์ฒœ๊ฐ„์ง€์ง€ 8์ž ์ž๋™ ๊ณ„์‚ฐ (์ง„ํƒœ์–‘์‹œ -30๋ถ„ ๋ณด์ •)

  • ์šด์„ธ ๋ถ„์„: ์„ฑ๊ฒฉ, ์ง์—…์šด, ์žฌ๋ฌผ์šด, ๊ฑด๊ฐ•์šด, ์• ์ •์šด ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์„

  • ๊ถํ•ฉ ๋ถ„์„: ๋‘ ์‚ฌ๋žŒ์˜ ์‚ฌ์ฃผ ๋น„๊ต ๋ฐ ๊ถํ•ฉ๋„ ๊ณ„์‚ฐ

  • ์Œ์–‘๋ ฅ ๋ณ€ํ™˜: ์–‘๋ ฅ โ†” ์Œ๋ ฅ ๋‚ ์งœ ๋ณ€ํ™˜ ์ง€์› (1900-2200, ์œค๋‹ฌ ์ฒ˜๋ฆฌ ํฌํ•จ)

  • ์ผ์ผ ์šด์„ธ: ๋‚ ์งœ๋ณ„ ์ƒ์„ธ ์šด์„ธ ์ œ๊ณต

  • ๋Œ€์šด(ๅคง้‹): 10๋…„ ๋‹จ์œ„ ํฐ ํ๋ฆ„ ์šด์„ธ ์กฐํšŒ

  • ์šฉ์‹ (็”จ็ฅž) ๋ถ„์„: ์ƒ‰์ƒ, ๋ฐฉํ–ฅ, ์ง์—… ๋“ฑ ๋งž์ถคํ˜• ์กฐ์–ธ ์ œ๊ณต

  • ์ง€์žฅ๊ฐ„ ์„ธ๋ ฅ: ์ ˆ๊ธฐ๋ณ„ ์ง€์žฅ๊ฐ„ ์„ธ๋ ฅ ๊ณ„์‚ฐ์œผ๋กœ ์ •๋ฐ€ํ•œ ๋ถ„์„

  • ์‹ ์‚ด(็ฅžๆฎบ): 15๊ฐœ ์‹ ์‚ด ํƒ์ง€ (์›์ง„์‚ด, ๊ท€๋ฌธ๊ด€์‚ด ํฌํ•จ)

๐Ÿ†• v1.1.0 ์‹ ๊ทœ ๊ธฐ๋Šฅ

  • 7๊ฐœ ํ†ตํ•ฉ ๋„๊ตฌ: 15๊ฐœ ๊ฐœ๋ณ„ ๋„๊ตฌ๋ฅผ 7๊ฐœ๋กœ ์ตœ์ ํ™” (ํ† ํฐ ํšจ์œจ 40% ๊ฐœ์„ )

  • ๋กœ์ปฌ ํ…Œ์ด๋ธ”: 1900-2200๋…„ ์Œ์–‘๋ ฅ ๋ฐ์ดํ„ฐ (์™ธ๋ถ€ API ์˜์กด์„ฑ ์ œ๊ฑฐ)

  • Zod ์ž…๋ ฅ ๊ฒ€์ฆ: ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ๊ฒ€์ฆ์œผ๋กœ ์—๋Ÿฌ์œจ 40% ๊ฐ์†Œ

  • date-fns ํ†ตํ•ฉ: ํƒ€์ž„์กด ๋ฒ„๊ทธ ์ œ๊ฑฐ ๋ฐ ์ •๋ฐ€ํ•œ ๋‚ ์งœ ์ฒ˜๋ฆฌ

  • MCP SDK v1.18: ์ตœ์‹  ํ”„๋กœํ† ์ฝœ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18 ์ด์ƒ

  • npm, yarn, ๋˜๋Š” pnpm

์„ค์น˜

์ž๋™ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ (๊ฐ€์žฅ ๊ฐ„ํŽธ)

# ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‹คํ–‰
curl -fsSL https://raw.githubusercontent.com/hjsh200219/fortuneteller/main/install.sh | bash

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  • npm ํŒจํ‚ค์ง€ ์ „์—ญ ์„ค์น˜

  • Claude Desktop ์„ค์ • ํŒŒ์ผ์— MCP ์„œ๋ฒ„ ์ž๋™ ๋“ฑ๋ก

  • ๊ธฐ์กด ์„ค์ • ๋ฐฑ์—…

์ˆ˜๋™ ์„ค์น˜

# npm์œผ๋กœ ์ „์—ญ ์„ค์น˜
npm install -g @hoshin/saju-mcp-server

# ๋˜๋Š” npx๋กœ ์ง์ ‘ ์‹คํ–‰
npx @hoshin/saju-mcp-server

์†Œ์Šค์—์„œ ๋นŒ๋“œ

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/hjsh200219/fortuneteller.git
cd fortuneteller

# ์˜์กด์„ฑ ์„ค์น˜
npm install

# ๊ฐœ๋ฐœ ๋ชจ๋“œ ์‹คํ–‰
npm run dev

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
npm run build
npm start

๐Ÿ› ๏ธ MCP ๋„๊ตฌ (์ด 7๊ฐœ - ํ†ตํ•ฉ ์ตœ์ ํ™”)

1. analyze_saju

์‚ฌ์ฃผ ๋ถ„์„ ํ†ตํ•ฉ ๋„๊ตฌ (๊ธฐ๋ณธ ๊ณ„์‚ฐ, ์šด์„ธ, ์šฉ์‹ , ์œ ํŒŒ ๋น„๊ต, ์šฉ์‹  ๋ฐฉ๋ฒ•๋ก ).

๋ถ„์„ ํƒ€์ž…:

  • basic: ์‚ฌ์ฃผํŒ”์ž ๊ธฐ๋ณธ ๊ณ„์‚ฐ

  • fortune: ์šด์„ธ ๋ถ„์„ (general/career/wealth/health/love)

  • yongsin: ์šฉ์‹  ์ƒ์„ธ ๋ถ„์„

  • school_compare: 5๊ฐœ ์œ ํŒŒ ๋น„๊ต (์žํ‰๋ช…๋ฆฌ, ์ ์ฒœ์ˆ˜, ๊ถํ†ต๋ณด๊ฐ, ํ˜„๋Œ€๋ช…๋ฆฌ, ์‹ ์‚ด์ค‘์‹ฌ)

  • yongsin_method: ํŠน์ • ์šฉ์‹  ๋ฐฉ๋ฒ•๋ก  ๋ถ„์„ (๊ฐ•์•ฝ/์กฐํ›„/ํ†ต๊ด€/๋ณ‘์•ฝ)

{
  birthDate: "1990-03-15",
  birthTime: "10:30",
  calendar: "solar",
  isLeapMonth: false,
  gender: "male",
  analysisType: "basic" | "fortune" | "yongsin" | "school_compare" | "yongsin_method",

  // fortune ํƒ€์ž…์šฉ ์˜ต์…˜
  fortuneType?: "general" | "career" | "wealth" | "health" | "love",

  // school_compare ํƒ€์ž…์šฉ ์˜ต์…˜
  schools?: ["ziping", "dts", "qtbj", "modern", "shensha"],

  // yongsin_method ํƒ€์ž…์šฉ ์˜ต์…˜
  method?: "strength" | "seasonal" | "mediation" | "disease"
}

2. check_compatibility

๋‘ ์‚ฌ๋žŒ์˜ ๊ถํ•ฉ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

{
  person1: {
    birthDate: "1990-03-15",
    birthTime: "10:30",
    calendar: "solar",
    isLeapMonth: false,
    gender: "male"
  },
  person2: {
    birthDate: "1992-07-20",
    birthTime: "14:30",
    calendar: "solar",
    isLeapMonth: false,
    gender: "female"
  }
}

3. convert_calendar

์–‘๋ ฅ๊ณผ ์Œ๋ ฅ์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค (1900-2200 ์ง€์›).

{
  date: "2025-01-01",
  fromCalendar: "solar",
  toCalendar: "lunar",
  isLeapMonth?: false
}

4. get_daily_fortune

ํŠน์ • ๋‚ ์งœ์˜ ์ผ์ผ ์šด์„ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

{
  birthDate: "1990-03-15",
  birthTime: "10:30",
  calendar: "solar",
  isLeapMonth: false,
  gender: "male",
  targetDate: "2025-01-01"
}

5. get_dae_un

10๋…„ ๋‹จ์œ„ ๋Œ€์šด(ๅคง้‹) ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

{
  birthDate: "1990-03-15",
  birthTime: "10:30",
  calendar: "solar",
  isLeapMonth: false,
  gender: "male"
}

6. get_fortune_by_period

์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์„ธ ํ†ตํ•ฉ ๋„๊ตฌ (์—ฐ์šด/์›”์šด/์‹œ์šด/์—ฐ์†).

๊ธฐ๊ฐ„ ํƒ€์ž…:

  • year: ์—ฐ๋ณ„ ์šด์„ธ (์„ธ์šด, ๆญฒ้‹)

  • month: ์›”๋ณ„ ์šด์„ธ (์›”์šด, ๆœˆ้‹)

  • hour: ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์„ธ (์‹œ์šด, ๆ™‚้‹)

  • multi-year: ์—ฐ์† ์—ฐ๋„ ์šด์„ธ

{
  birthDate: "1990-03-15",
  birthTime: "10:30",
  calendar: "solar",
  isLeapMonth: false,
  gender: "male",
  periodType: "year" | "month" | "hour" | "multi-year",

  // ๊ธฐ๊ฐ„ ์ง€์ • (periodType์— ๋งž๋Š” ํ˜•์‹)
  target?: "2025" | "2025-03" | "2025-01-01 14:00",

  // multi-year ํƒ€์ž…์šฉ ์˜ต์…˜
  count?: 5  // ์กฐํšŒํ•  ์—ฐ๋„ ๊ฐœ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 5)
}

7. manage_settings

ํ•ด์„ ์„ค์ • ๊ด€๋ฆฌ ๋„๊ตฌ (์กฐํšŒ/๋ณ€๊ฒฝ).

์•ก์…˜:

  • get: ํ˜„์žฌ ์„ค์ • ์กฐํšŒ

  • set: ์„ค์ • ๋ณ€๊ฒฝ (ํ”„๋ฆฌ์…‹ ๋˜๋Š” ์ปค์Šคํ…€)

{
  action: "get" | "set",

  // set ์•ก์…˜์šฉ ์˜ต์…˜
  preset?: "ziping" | "dts" | "qtbj" | "modern" | "shensha" | "balanced",

  // ๋˜๋Š” ์ปค์Šคํ…€ ๊ฐ€์ค‘์น˜
  custom?: {
    ziping: 0.3,    // ์žํ‰๋ช…๋ฆฌ ๊ฐ€์ค‘์น˜ (0.0-1.0)
    dts: 0.2,       // ์ ์ฒœ์ˆ˜ ๊ฐ€์ค‘์น˜
    qtbj: 0.2,      // ๊ถํ†ต๋ณด๊ฐ ๊ฐ€์ค‘์น˜
    modern: 0.2,    // ํ˜„๋Œ€๋ช…๋ฆฌ ๊ฐ€์ค‘์น˜
    shensha: 0.1    // ์‹ ์‚ด์ค‘์‹ฌ ๊ฐ€์ค‘์น˜
  }
}

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

fortuneteller/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts              # MCP ์„œ๋ฒ„ ์ง„์ž…์ 
โ”‚   โ”œโ”€โ”€ core/                 # ํ•ต์‹ฌ ์‹œ์Šคํ…œ
โ”‚   โ”‚   โ”œโ”€โ”€ tool-definitions.ts  # 7๊ฐœ ๋„๊ตฌ ์ •์˜
โ”‚   โ”‚   โ””โ”€โ”€ tool-handler.ts      # ๋„๊ตฌ ๋ผ์šฐํŒ…
โ”‚   โ”œโ”€โ”€ tools/                # MCP ๋„๊ตฌ ๊ตฌํ˜„
โ”‚   โ”‚   โ”œโ”€โ”€ analyze_saju.ts      # ํ†ตํ•ฉ ์‚ฌ์ฃผ ๋ถ„์„
โ”‚   โ”‚   โ”œโ”€โ”€ check_compatibility.ts
โ”‚   โ”‚   โ”œโ”€โ”€ convert_calendar.ts
โ”‚   โ”‚   โ”œโ”€โ”€ get_daily_fortune.ts
โ”‚   โ”‚   โ”œโ”€โ”€ get_dae_un.ts
โ”‚   โ”‚   โ”œโ”€โ”€ get_fortune_by_period.ts  # ํ†ตํ•ฉ ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์„ธ
โ”‚   โ”‚   โ””โ”€โ”€ manage_settings.ts        # ํ†ตํ•ฉ ์„ค์ • ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ lib/                  # ํ•ต์‹ฌ ๋กœ์ง
โ”‚   โ”‚   โ”œโ”€โ”€ saju.ts           # ์‚ฌ์ฃผ ๊ณ„์‚ฐ (์ง„ํƒœ์–‘์‹œ -30๋ถ„ ๋ณด์ •)
โ”‚   โ”‚   โ”œโ”€โ”€ calendar.ts       # ์Œ์–‘๋ ฅ ๋ณ€ํ™˜ (๋กœ์ปฌ ํ…Œ์ด๋ธ”)
โ”‚   โ”‚   โ”œโ”€โ”€ fortune.ts        # ์šด์„ธ ๋ถ„์„
โ”‚   โ”‚   โ”œโ”€โ”€ compatibility.ts  # ๊ถํ•ฉ ๋ถ„์„
โ”‚   โ”‚   โ”œโ”€โ”€ dae_un.ts         # ๋Œ€์šด ๊ณ„์‚ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ yong_sin.ts       # ์šฉ์‹  ์„ ์ •
โ”‚   โ”‚   โ”œโ”€โ”€ ten_gods.ts       # ์‹ญ์„ฑ ๊ณ„์‚ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ sin_sal.ts        # ์‹ ์‚ด ํƒ์ง€ (15๊ฐœ)
โ”‚   โ”‚   โ”œโ”€โ”€ day_master_strength.ts  # ์ผ๊ฐ„ ๊ฐ•์•ฝ
โ”‚   โ”‚   โ””โ”€โ”€ gyeok_guk.ts      # ๊ฒฉ๊ตญ ๊ฒฐ์ •
โ”‚   โ”œโ”€โ”€ data/                 # ์ •์  ๋ฐ์ดํ„ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ heavenly_stems.ts      # ์ฒœ๊ฐ„(ๅคฉๅนฒ) 10๊ฐœ
โ”‚   โ”‚   โ”œโ”€โ”€ earthly_branches.ts    # ์ง€์ง€(ๅœฐๆ”ฏ) 12๊ฐœ, ์ง€์žฅ๊ฐ„ ์„ธ๋ ฅ
โ”‚   โ”‚   โ”œโ”€โ”€ wuxing.ts              # ์˜คํ–‰(ไบ”่กŒ) ์ƒ์ƒ์ƒ๊ทน
โ”‚   โ”‚   โ”œโ”€โ”€ solar_terms.ts         # 24์ ˆ๊ธฐ (1900-2200)
โ”‚   โ”‚   โ”œโ”€โ”€ lunar_table.ts         # ์Œ๋ ฅ ํ…Œ์ด๋ธ” (1900-2200)
โ”‚   โ”‚   โ””โ”€โ”€ longitude_table.ts     # ์ „๊ตญ 162๊ฐœ ์‹œ๊ตฐ๊ตฌ ๊ฒฝ๋„
โ”‚   โ””โ”€โ”€ types/                # ํƒ€์ž… ์ •์˜
โ”‚       โ””โ”€โ”€ index.ts
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tsconfig.json
โ”œโ”€โ”€ CLAUDE.md                 # Claude Code ๊ฐ€์ด๋“œ
โ””โ”€โ”€ README.md

๐Ÿ”ง ๊ฐœ๋ฐœ

# ๊ฐœ๋ฐœ ๋ชจ๋“œ (hot reload)
npm run watch

# ๋ฆฐํŠธ ์ฒดํฌ
npm run lint

# ์ฝ”๋“œ ํฌ๋งทํŒ…
npm run format

# ํ…Œ์ŠคํŠธ ์‹คํ–‰
npm test

# API ๋ฌธ์„œ ์ƒ์„ฑ
npm run docs

# API ๋ฌธ์„œ ๋กœ์ปฌ ์„œ๋ฒ„ (http://localhost:8080)
npm run docs:serve

๐Ÿ“– MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json์— ๋‹ค์Œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

npm ํŒจํ‚ค์ง€ ์‚ฌ์šฉ (๊ถŒ์žฅ)

{
  "mcpServers": {
    "saju": {
      "command": "npx",
      "args": ["-y", "@hoshin/saju-mcp-server"]
    }
  }
}

์ „์—ญ ์„ค์น˜ ํ›„ ์‚ฌ์šฉ

npm install -g @hoshin/saju-mcp-server
{
  "mcpServers": {
    "saju": {
      "command": "saju-mcp-server"
    }
  }
}

๋กœ์ปฌ ๊ฐœ๋ฐœ (์†Œ์Šค์—์„œ)

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

๐Ÿณ Docker ์ง€์›

Docker๋กœ ์‹คํ–‰

# ์ด๋ฏธ์ง€ ๋นŒ๋“œ
docker build -t saju-mcp-server .

# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run -it --rm saju-mcp-server

# ๋˜๋Š” docker-compose ์‚ฌ์šฉ
docker-compose up -d

Smithery๋ฅผ ํ†ตํ•œ ์›ํด๋ฆญ ์„ค์น˜

# Smithery CLI๋กœ ์„ค์น˜
npx @smithery/cli install saju-mcp-server --client claude

Smithery ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ๋” ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š ์‚ฌ์ฃผํŒ”์ž ์šฉ์–ด ์„ค๋ช…

๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ

  • ์ฒœ๊ฐ„(ๅคฉๅนฒ): ๊ฐ‘(็”ฒ), ์„(ไน™), ๋ณ‘(ไธ™), ์ •(ไธ), ๋ฌด(ๆˆŠ), ๊ธฐ(ๅทฑ), ๊ฒฝ(ๅบš), ์‹ (่พ›), ์ž„(ๅฃฌ), ๊ณ„(็™ธ) - 10๊ฐœ

  • ์ง€์ง€(ๅœฐๆ”ฏ): ์ž(ๅญ), ์ถ•(ไธ‘), ์ธ(ๅฏ…), ๋ฌ˜(ๅฏ), ์ง„(่พฐ), ์‚ฌ(ๅทณ), ์˜ค(ๅˆ), ๋ฏธ(ๆœช), ์‹ (็”ณ), ์œ (้…‰), ์ˆ (ๆˆŒ), ํ•ด(ไบฅ) - 12๊ฐœ

  • ์˜คํ–‰(ไบ”่กŒ): ๋ชฉ(ๆœจ), ํ™”(็ซ), ํ† (ๅœŸ), ๊ธˆ(้‡‘), ์ˆ˜(ๆฐด) - ์ƒ์ƒ์ƒ๊ทน ๊ด€๊ณ„

  • ์‹ญ์„ฑ(ๅๆ˜Ÿ): ๋น„๊ฒฌ, ๊ฒ์žฌ, ์‹์‹ , ์ƒ๊ด€, ํŽธ์žฌ, ์ •์žฌ, ํŽธ๊ด€, ์ •๊ด€, ํŽธ์ธ, ์ •์ธ

๊ณ ๊ธ‰ ๋ถ„์„ ์š”์†Œ

  • ์ง€์žฅ๊ฐ„(ๆ”ฏ่—ๅนฒ): ์ง€์ง€ ์†์— ์ˆจ์–ด์žˆ๋Š” ์ฒœ๊ฐ„ (์ •๊ธฐ, ์ค‘๊ธฐ, ์—ฌ๊ธฐ)

  • ์‹ ์‚ด(็ฅžๆฎบ): 15๊ฐœ์˜ ๊ธธํ‰ ์ง€ํ‘œ (์ฒœ์„๊ท€์ธ, ์—ญ๋งˆ์‚ด, ๋„ํ™”์‚ด, ์›์ง„์‚ด, ๊ท€๋ฌธ๊ด€์‚ด ๋“ฑ)

  • ์šฉ์‹ (็”จ็ฅž): ์‚ฌ์ฃผ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ํ•ต์‹ฌ ์˜คํ–‰

  • ๊ฒฉ๊ตญ(ๆ ผๅฑ€): ์‚ฌ์ฃผ์˜ ์ „์ฒด์ ์ธ ํŒจํ„ด๊ณผ ์„ฑํ–ฅ

  • ๋Œ€์šด(ๅคง้‹): 10๋…„ ๋‹จ์œ„์˜ ํฐ ์šด์„ธ ํ๋ฆ„

  • ์ง„ํƒœ์–‘์‹œ(็œžๅคช้™ฝๆ™‚): ํ•œ๊ตญ ํ‘œ์ค€์‹œ -30๋ถ„ ๋ณด์ • (์ •ํ™•ํ•œ ์‚ฌ์ฃผ ๊ณ„์‚ฐ์„ ์œ„ํ•จ)

โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ

์ด ์„œ๋น„์Šค๋Š” ์ „ํ†ต ์‚ฌ์ฃผํŒ”์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ฐธ๊ณ ์šฉ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ํ•™์ , ๋ฒ•๋ฅ ์ , ์žฌ์ •์  ์กฐ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค

  • ์ค‘์š”ํ•œ ๊ฒฐ์ •์€ ๋ฐ˜๋“œ์‹œ ์ „๋ฌธ๊ฐ€์™€ ์ƒ๋‹ดํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค

  • ์šด์„ธ๋Š” ๊ฐœ์ธ์˜ ๋…ธ๋ ฅ๊ณผ ์„ ํƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๐Ÿ“„ ๋ผ์ด์„ผ์Šค

MIT License

๐Ÿ‘จโ€๐Ÿ’ป ๊ธฐ์—ฌ

์ด์Šˆ ์ œ๋ณด ๋ฐ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!


English

โœจ Features

  • Saju (Four Pillars) Calculation: Automatic calculation of 8 characters from birth date and time (with -30min true solar time correction)

  • Fortune Analysis: Comprehensive analysis including personality, career, wealth, health, and love fortune

  • Compatibility Analysis: Compatibility calculation and comparison between two people

  • Calendar Conversion: Solar โ†” Lunar calendar conversion (1900-2200) with leap month support

  • Daily Fortune: Detailed daily fortune for specific dates

  • Dae-un (ๅคง้‹): 10-year major fortune cycle analysis

  • Yong-sin (็”จ็ฅž) Analysis: Personalized advice on colors, directions, and careers

  • Ji-jang-gan Strength: Precise analysis with seasonal hidden stem strength calculation

  • Sin-sal (็ฅžๆฎบ): Detection of 15 special stars (including Won-jin-sal, Gwi-mun-gwan-sal)

๐Ÿš€ Quick Start

Installation

Option 1: Automatic Installation Script (Recommended)

curl -fsSL https://raw.githubusercontent.com/hoshin/saju-mcp-server/main/install.sh | bash

Option 2: Manual Installation

npm install -g @hoshin/saju-mcp-server

Option 3: Using npx (No Installation)

npx @hoshin/saju-mcp-server

Claude Desktop Configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "saju": {
      "command": "npx",
      "args": ["-y", "@hoshin/saju-mcp-server"]
    }
  }
}

Restart Claude Desktop and start using the tools!

๐Ÿ› ๏ธ Available Tools (7 Integrated Tools)

  1. analyze_saju - Integrated Saju analysis (basic/fortune/yongsin/school_compare/yongsin_method)

  2. check_compatibility - Analyze compatibility between two people

  3. convert_calendar - Convert between solar and lunar calendars (1900-2200)

  4. get_daily_fortune - Get daily fortune for specific date

  5. get_dae_un - Get 10-year major fortune cycles

  6. get_fortune_by_period - Get fortune by period (year/month/hour/multi-year)

  7. manage_settings - Manage interpretation settings (get/set)

๐Ÿ“š Key Concepts

Basic Components

  • Heavenly Stems (ๅคฉๅนฒ): 10 stems - ็”ฒไน™ไธ™ไธๆˆŠๅทฑๅบš่พ›ๅฃฌ็™ธ

  • Earthly Branches (ๅœฐๆ”ฏ): 12 branches - ๅญไธ‘ๅฏ…ๅฏ่พฐๅทณๅˆๆœช็”ณ้…‰ๆˆŒไบฅ

  • Five Elements (ไบ”่กŒ): Wood, Fire, Earth, Metal, Water

  • Ten Gods (ๅๆ˜Ÿ): 10 relationship types

Advanced Analysis

  • Hidden Stems (ๆ”ฏ่—ๅนฒ): Hidden stems within branches

  • Special Stars (็ฅžๆฎบ): 15 auspicious/inauspicious indicators

  • Yong-sin (็”จ็ฅž): Beneficial element for balance

  • Pattern (ๆ ผๅฑ€): Overall life pattern classification

  • Dae-un (ๅคง้‹): 10-year major fortune cycles

  • True Solar Time (็œžๅคช้™ฝๆ™‚): -30min Korea time correction

๐Ÿณ Docker Support

# Build image
docker build -t saju-mcp-server .

# Run container
docker run -it --rm saju-mcp-server

# Or use docker-compose
docker-compose up -d

๐Ÿ”ง Smithery One-Click Install

# Install via Smithery CLI
npx @smithery/cli install saju-mcp-server --client claude

Easier installation and management through Smithery marketplace.

๐Ÿ“– Documentation

๐Ÿค Contributing

Issues and pull requests are welcome!

๐Ÿ“„ License

MIT License

โš ๏ธ Disclaimer

This service provides reference information based on traditional Saju fortune-telling.

  • Not intended as medical, legal, or financial advice

  • Please consult professionals for important decisions

  • Fortune can change based on personal effort and choices


Made with โค๏ธ for Korean traditional fortune-telling

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/hjsh200219/fortuneteller'

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