Skip to main content
Glama

Saju Fortune-Telling MCP Server

by hjsh200219
README.mdโ€ข15.1 kB
# ๐Ÿ”ฎ ์‚ฌ์ฃผ ์šด์„ธ MCP ์„œ๋ฒ„ (Saju MCP Server) [![npm version](https://img.shields.io/npm/v/@hoshin/saju-mcp-server)](https://www.npmjs.com/package/@hoshin/saju-mcp-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org) ํ•œ๊ตญ ์ „ํ†ต ์‚ฌ์ฃผํŒ”์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์„ธ๋ฅผ ๋ถ„์„ํ•˜๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. A Model Context Protocol (MCP) server for Korean traditional Saju (Four Pillars of Destiny) fortune-telling. > **๐ŸŒ Language**: [ํ•œ๊ตญ์–ด](#ํ•œ๊ตญ์–ด) | [English](#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 ### ์„ค์น˜ #### ์ž๋™ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ (๊ฐ€์žฅ ๊ฐ„ํŽธ) ```bash # ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‹คํ–‰ curl -fsSL https://raw.githubusercontent.com/hjsh200219/fortuneteller/main/install.sh | bash ``` ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค: - npm ํŒจํ‚ค์ง€ ์ „์—ญ ์„ค์น˜ - Claude Desktop ์„ค์ • ํŒŒ์ผ์— MCP ์„œ๋ฒ„ ์ž๋™ ๋“ฑ๋ก - ๊ธฐ์กด ์„ค์ • ๋ฐฑ์—… #### ์ˆ˜๋™ ์„ค์น˜ ```bash # npm์œผ๋กœ ์ „์—ญ ์„ค์น˜ npm install -g @hoshin/saju-mcp-server # ๋˜๋Š” npx๋กœ ์ง์ ‘ ์‹คํ–‰ npx @hoshin/saju-mcp-server ``` #### ์†Œ์Šค์—์„œ ๋นŒ๋“œ ```bash # ์ €์žฅ์†Œ ํด๋ก  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`: ํŠน์ • ์šฉ์‹  ๋ฐฉ๋ฒ•๋ก  ๋ถ„์„ (๊ฐ•์•ฝ/์กฐํ›„/ํ†ต๊ด€/๋ณ‘์•ฝ) ```typescript { 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 ๋‘ ์‚ฌ๋žŒ์˜ ๊ถํ•ฉ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ```typescript { 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 ์ง€์›). ```typescript { date: "2025-01-01", fromCalendar: "solar", toCalendar: "lunar", isLeapMonth?: false } ``` ### 4. get_daily_fortune ํŠน์ • ๋‚ ์งœ์˜ ์ผ์ผ ์šด์„ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ```typescript { birthDate: "1990-03-15", birthTime: "10:30", calendar: "solar", isLeapMonth: false, gender: "male", targetDate: "2025-01-01" } ``` ### 5. get_dae_un 10๋…„ ๋‹จ์œ„ ๋Œ€์šด(ๅคง้‹) ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ```typescript { birthDate: "1990-03-15", birthTime: "10:30", calendar: "solar", isLeapMonth: false, gender: "male" } ``` ### 6. get_fortune_by_period ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์„ธ ํ†ตํ•ฉ ๋„๊ตฌ (์—ฐ์šด/์›”์šด/์‹œ์šด/์—ฐ์†). **๊ธฐ๊ฐ„ ํƒ€์ž…**: - `year`: ์—ฐ๋ณ„ ์šด์„ธ (์„ธ์šด, ๆญฒ้‹) - `month`: ์›”๋ณ„ ์šด์„ธ (์›”์šด, ๆœˆ้‹) - `hour`: ์‹œ๊ฐ„๋Œ€๋ณ„ ์šด์„ธ (์‹œ์šด, ๆ™‚้‹) - `multi-year`: ์—ฐ์† ์—ฐ๋„ ์šด์„ธ ```typescript { 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`: ์„ค์ • ๋ณ€๊ฒฝ (ํ”„๋ฆฌ์…‹ ๋˜๋Š” ์ปค์Šคํ…€) ```typescript { 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 ``` ## ๐Ÿ”ง ๊ฐœ๋ฐœ ```bash # ๊ฐœ๋ฐœ ๋ชจ๋“œ (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 ํŒจํ‚ค์ง€ ์‚ฌ์šฉ (๊ถŒ์žฅ) ```json { "mcpServers": { "saju": { "command": "npx", "args": ["-y", "@hoshin/saju-mcp-server"] } } } ``` #### ์ „์—ญ ์„ค์น˜ ํ›„ ์‚ฌ์šฉ ```bash npm install -g @hoshin/saju-mcp-server ``` ```json { "mcpServers": { "saju": { "command": "saju-mcp-server" } } } ``` #### ๋กœ์ปฌ ๊ฐœ๋ฐœ (์†Œ์Šค์—์„œ) ```json { "mcpServers": { "saju": { "command": "node", "args": ["/path/to/saju-mcp-server/dist/index.js"] } } } ``` ## ๐Ÿณ Docker ์ง€์› ### Docker๋กœ ์‹คํ–‰ ```bash # ์ด๋ฏธ์ง€ ๋นŒ๋“œ docker build -t saju-mcp-server . # ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ docker run -it --rm saju-mcp-server # ๋˜๋Š” docker-compose ์‚ฌ์šฉ docker-compose up -d ``` ### Smithery๋ฅผ ํ†ตํ•œ ์›ํด๋ฆญ ์„ค์น˜ ```bash # 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)** ```bash curl -fsSL https://raw.githubusercontent.com/hoshin/saju-mcp-server/main/install.sh | bash ``` **Option 2: Manual Installation** ```bash npm install -g @hoshin/saju-mcp-server ``` **Option 3: Using npx (No Installation)** ```bash npx @hoshin/saju-mcp-server ``` #### Claude Desktop Configuration Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```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 ```bash # 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 ```bash # Install via Smithery CLI npx @smithery/cli install saju-mcp-server --client claude ``` Easier installation and management through Smithery marketplace. ### ๐Ÿ“– Documentation - ๐Ÿ“˜ [Quick Start Guide](QUICKSTART.md) - Get started in 5 minutes - ๐Ÿ“— [Setup Guide](SETUP.md) - Detailed installation and configuration - ๐Ÿ“• [Publishing Guide](PUBLISHING.md) - npm package publishing - ๐Ÿ“™ [Developer Guide](CLAUDE.md) - Project structure and development - ๐Ÿ““ [PRD](docs/PRD_fortuneteller_improvements.md) - Product roadmap - ๐Ÿ“š [API Documentation](docs/api/index.html) - TypeDoc generated API docs ### ๐Ÿค 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

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