Atlas / MCP servers / hjsh200219 / Saju Fortune Teller

Saju Fortune TellerCAUTION

mcp/hjsh200219/saju-fortune-teller
Verdict
CAUTION
Grade
C
Trust score
78 /100
Exposed tools
8 7r · 1w · 0d
Transport
sse · stdio
License
—
Stars
42
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@hoshin/saju-mcp-server) [](https://opensource.org/licenses/MIT) [](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

✨ 주요 기능

  • 사주팔자 계산: 생년월일시로부터 천간지지 8자 자동 계산 (진태양시 -30분 보정)
  • 운세 분석: 성격, 직업운, 재물운, 건강운, 애정운 등 다양한 분석
  • 궁합 분석: 두 사람의 사주 비교 및 궁합도 계산
  • 음양력 변환: 양력 ↔ 음력 날짜 변환 지원 (1900-2200, 윤달 처리 포함)
  • 일일 운세: 날짜별 상세 운세 제공
  • 대운(大運): 10년 단위 큰 흐름 운세 조회
  • 용신(用神) 분석: 색상, 방향, 직업 등 맞춤형 조언 제공
  • 지장간 세력: 절기별 지장간 세력 계산으로 정밀한 분석
  • 신살(神殺): 15개 신살 탐지 (원진살, 귀문관살 포함)

🆕 v1.2.0 신규 기능

  • 7개 통합 도구: 15개 개별 도구를 7개로 최적화 (토큰 효율 40% 개선)
  • 로컬 테이블: 1900-2200년 음양력 데이터 (외부 API 의존성 제거)
  • Zod 입력 검증: 런타임 타입 검증으로 에러율 40% 감소
  • date-fns 통합: 타임존 버그 제거 및 정밀한 날짜 처리
  • MCP SDK v1.18: 최신 프로토콜 및 성능 최적화
  • Smithery 지원: stateless export, npm 패키지 배포 병행
  • HTTP 서버 모드: npm run start:http (Railway 배포용)

🚀 시작하기

필수 요구사항

  • 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

사주 분석 통합 도구 (기

Read from source at commit 6fc453c37df3OBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add saju-mcp-server -- npx -y @hoshin/[email protected]
claude-desktop
{
  "mcpServers": {
    "saju-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@hoshin/[email protected]"
      ]
    }
  }
}
03

Exposed tools (8)

7 read · 1 write · 0 destructive.

ToolRiskDescription
analyze_sajuread사주 분석 통합 (basic/fortune/yongsin/school_compare/yongsin_method). 호출 전 사용자에게 이름(한글)·한자(선택)·양력/음력·생년월일시·윤달(음력 시)·성별·태어난 시군구를 확인할 것. 대화형 상세 해석 문장은 docs/references/interpretation-guide.md의 6항목 구조를 따른다.
check_compatibilityread두 사람 궁합 분석. 각 사람마다 이름(한글)·한자(선택)·양력/음력·생년월일시·성별·출생 시군구를 호출 전에 확인할 것.
convert_calendarread양력↔음력 변환
get_dae_unread10년 대운 (나이는 만 나이 기준, targetYear는 해당 양력 연도 말일 기준 만 나이로 구간 조회). 호출 전 사용자에게 이름(한글)·한자(선택)·양력/음력·생년월일시·성별·출생 시군구를 확인할 것.
get_daily_fortuneread일일 운세. 호출 전 사용자에게 이름(한글)·한자(선택)·양력/음력·생년월일시·성별·출생 시군구를 확인할 것.
get_fortune_by_periodread시간대별 운세 (year/month/hour/multi-year). 호출 전 사용자에게 이름(한글)·한자(선택)·양력/음력·생년월일시·성별·출생 시군구를 확인할 것.
manage_settingswrite해석 설정 관리 (get/set)
saju-mcp-serverread한국 전통 사주팔자 운세 분석 MCP 서버
04

Trust audit

CAUTIONgrade C · trust 78/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (1 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (19)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/server-http.ts:85
console.log(`SSE 엔드포인트: http://0.0.0.0:${PORT}/sse`);
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/core/server.ts:1
/**
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/core/tool-handler.ts:1
/**
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/data/daeun_reference_table.ts:1
/**
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/data/earthly_branches.ts:1
/**
LOWInventory / provenance · inv.hidden_file · CWE-1104
.claudeignore
.claudeignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.json
.prettierrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.smitheryignore
.smitheryignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence
LOWInventory / provenance · inv.symlink · CWE-1104
CLAUDE.md
CLAUDE.md
Why it matters. link not followed
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/interpreters/index.ts:6
import type { SchoolCode, UserInterpretationSettings } from '../../types/interpretation.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/interpreters/index.ts:14
import type { SajuPillars } from '../../types/index.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/interpreters/index.ts:47
private createSimpleSajuData(pillars: SajuPillars): import('../../types/index.js').SajuData {
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/interpreters/index.ts:99
private createSimpleSajuData(pillars: SajuPillars): import('../../types/index.js').SajuData {
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/interpreters/index.ts:149
private createSimpleSajuData(pillars: SajuPillars): import('../../types/index.js').SajuData {
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/benchmark/index.ts:1
/**
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @smithery/sdk, date-fns, date-fns-tz, zod, @jest/globals, @types/jest, @types/node
Why it matters. 17 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:47
curl -fsSL https://raw.githubusercontent.com/hjsh200219/fortuneteller/main/install.sh | bash
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:433
curl -fsSL https://raw.githubusercontent.com/hjsh200219/fortuneteller/main/install.sh | bash

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-08 · audit v0.4.1 · source sha 6fc453c37df3full audit observations/trust-audit/mcp-server/hjsh200219__saju-fortune-teller.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-086fc453c37df3CAUTIONC78first audit
06

Questions

What tools does Saju Fortune Teller expose?

8 in total: 7 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Saju Fortune Teller safe to connect to an agent?

With care. The audit graded it C (78/100) and found 19 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does Saju Fortune Teller need?

No credential environment variables were found in its source, so it appears to need none.

How does Saju Fortune Teller run?

It speaks sse and stdio, so it runs as a local process your client starts. It is published on npm as @hoshin/saju-mcp-server at 1.2.0.

How current is this page?

The grade is for one exact copy of the source (6fc453c37df3), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement