Skip to main content
Glama
SihyeonJeon

legend-saju

by SihyeonJeon

Legend Saju

사주 몇 글자를 LLM에 넘기는 래퍼가 아니다. 계산식, 유파, 출처, 불확실성을 구조화해 반환하는 동양 역학 엔진이다.

CI License TypeScript

같은 생년월일을 여러 전통으로 계산한다. 계산 경로 안에는 숨겨진 LLM 호출이 없다.

출처가 연결된 지식 777건 · 대육임 720국 · 한국 인명용 한자 관측 9,495건 · 계산 경로 모델 호출 0회

Legend Saju는 사주·명리, 자미두수, 기문둔갑, 대육임, 철판신수, 성명학 등 서로 다른 전통의 계산을 하나의 엔진에서 다룬다. 유파가 다르면 억지로 하나의 결론으로 합치지 않고, 출생시간을 모르면 임의의 시각을 만들어내지 않는다.

가장 빠른 사용법

현재 공개 버전은 로컬 STDIO MCPHTTPS 원격 MCP를 함께 제공한다. 로컬 서버는 Node.js 20 이상이 설치돼 있으면 별도 API 키 없이 실행할 수 있다.

설치 없이 원격 서버 연결하기

공개 MCP 엔드포인트는 다음 주소다.

https://legend-saju-mcp-production.up.railway.app/mcp

Codex에서는 다음 명령으로 연결할 수 있다.

codex mcp add legend-saju-remote --url https://legend-saju-mcp-production.up.railway.app/mcp

원격 서버는 입력값을 저장하지 않으며 모델 API를 호출하지 않는다. 공개 엔드포인트에는 요청 크기, 분당 요청 수, 동시 실행 수 제한이 적용된다. 외부 서버에 생년월일이나 이름을 보내고 싶지 않다면 아래 로컬 방식을 사용하면 된다.

플러그인으로 설치하기

Codex와 ChatGPT 데스크톱에서는 MCP 연결과 자연어 사용 지침을 함께 묶은 플러그인을 설치할 수 있다. 먼저 이 저장소를 플러그인 소스로 추가한다.

codex plugin marketplace add SihyeonJeon/legend-saju --ref main

그다음 Plugins 화면에서 Legend Saju를 설치하면 된다. 이 방식은 공개 원격 MCP를 사용하므로 Node.js나 별도 API 키가 필요 없다. ChatGPT 웹의 공개 Plugins Directory 등록은 별도의 제출·검토 단계다.

Codex에서 한 줄로 연결하기

터미널에서 다음 명령을 실행한다.

codex mcp add legend-saju -- npx -y --package=github:SihyeonJeon/legend-saju#main legend-saju-mcp

연결 여부를 확인한다.

codex mcp list

Codex를 새로 시작한 뒤 /mcp에서 legend-saju가 보이면 설치가 끝난 것이다. 이제 도구 이름이나 JSON을 말할 필요 없이 평소처럼 질문하면 된다.

2000년 7월 30일 오전 8시 44분 여자야. 직업, 재물, 결혼과 앞으로 3년을 종합해서 봐줘.

남자 1999년 7월 14일 오전 11시 24분, 여자 2000년 7월 30일 오전 8시 44분이야. 궁합과 결혼 가능 시기를 함께 봐줘.

이름은 김상수, 한자는 金相洙야. 사주와 분리해서 성명학 근거도 분석해줘.

Codex CLI, Codex IDE 확장, ChatGPT 데스크톱 앱은 같은 Codex MCP 설정을 공유한다. 자세한 연결 방식은 OpenAI의 MCP 안내를 참고하면 된다.

다른 MCP 클라이언트에서 연결하기

STDIO MCP를 지원하는 클라이언트라면 아래 실행 설정을 사용할 수 있다. 설정 파일의 위치는 클라이언트마다 다르다.

{
  "mcpServers": {
    "legend-saju": {
      "command": "npx",
      "args": ["-y", "--package=github:SihyeonJeon/legend-saju#main", "legend-saju-mcp"]
    }
  }
}

로컬 소스를 고정해서 쓰고 싶다면 저장소를 빌드한 뒤 CLI 래퍼를 직접 실행한다.

{
  "mcpServers": {
    "legend-saju": {
      "command": "node",
      "args": ["/절대/경로/legend-saju/bin/legend-saju-mcp.js"]
    }
  }
}

로컬 방식은 저장소 루트에서 npm ci && npm run build를 한 번 실행해야 한다.

ChatGPT 웹에서 바로 쓸 수 있나

HTTPS 원격 MCP 서버는 준비됐다. 다만 공개 URL이 생긴 것과 ChatGPT 플러그인 디렉터리에 등록되는 것은 별개의 단계다. 개발자 모드나 원격 MCP 연결을 지원하는 클라이언트에서는 위 URL을 직접 사용할 수 있고, 일반 사용자에게 설치형 플러그인으로 노출하려면 별도의 등록·검토 과정이 남아 있다.

Related MCP server: mcp-luopan

MCP가 하는 일

MCP 서버는 읽기 전용 도구 세 개를 제공한다.

도구

역할

legend_saju_manifest

현재 엔진에 들어 있는 계산법, 출처, 데이터 범위를 확인한다

legend_saju_capabilities

자연어 질문에 맞는 계산법을 찾는다

legend_saju_resolve

질문과 입력값을 받아 관련 계산법을 함께 실행한다

도구가 세 개라고 해서 역학 기능이 세 개인 것은 아니다. 세 도구는 거대한 기능 레지스트리를 살펴보고, 찾고, 실행하는 작은 관문이다.

사용자의 자연어 질문
        ↓
호스트 모델이 입력을 정리하고 계산법을 탐색
        ↓
Legend Saju MCP가 결정론적 계산 수행
        ↓
출처·유파·충돌·누락 정보가 포함된 구조화 결과
        ↓
호스트 모델이 사람이 읽기 쉬운 한국어로 설명

Legend Saju MCP 자체는 OpenAI나 Anthropic API 키를 읽지 않으며 모델을 호출하지 않는다. 대화와 설명에는 사용 중인 Codex·Claude·기타 클라이언트의 기존 모델 세션이 쓰인다.

MCP와 동봉 플러그인의 차이

  • MCP만 연결하면 계산 엔진과 세 도구를 바로 사용할 수 있다.

  • plugins/legend-saju/Codex 플러그인에는 MCP 설정과 자연어 사용 지침이 함께 들어 있다. 사용자가 capability ID나 입력 스키마를 고르지 않도록 호스트 모델의 처리 방식을 보강한다.

  • 계산 능력은 플러그인 안에 축소 복사돼 있지 않다. MCP와 플러그인 모두 같은 공개 엔진 진입점을 사용한다.

자연어 입력

이 프로젝트가 의도한 인터페이스는 접수 폼이나 intent 메뉴가 아니라 대화다. 모델은 대화에서 확실한 정보만 추출하고, 필요한 계산법을 찾은 뒤, 엔진이 돌려준 근거를 설명한다.

2004년 8월 3일 양력 남자고 태어난 시간은 몰라.
경기도 구리에서 태어났어. 앞으로 3년 직업과 돈을 봐줘.

출생시간을 모른다고 말하면 엔진은 정오를 임의로 넣지 않는다. 자시의 날짜 경계 두 방식까지 포함한 후보 차트를 분리해 반환한다.

개발자로 실행하기

git clone https://github.com/SihyeonJeon/legend-saju.git
cd legend-saju
npm ci
npm test
npm run build
npm run demo

Node.js 20 이상이 필요하다. 이 저장소는 ESM 전용이며 아직 npm에는 배포하지 않았다.

import { resolve } from "./dist/index.js";

const result = resolve({
  birth: {
    year: 2000,
    month: 7,
    day: 30,
    hour: 8,
    minute: 44,
    calendar: "solar",
    gender: "여",
    birthTimeAccuracy: "recorded"
  },
  question: "직업과 재물, 연애 결혼, 앞으로 3년",
  timelineRange: { startYear: 2026, endYear: 2028 }
});

console.log(result.dossier?.claims);
console.log(result.dossier?.conflicts);
console.log(result.routes);

반환값은 완성된 점사 문장이 아니라 계산과 해석의 근거 데이터다.

{
  selection: { requested: string[]; selected: string[]; unsupported: string[] };
  routes: CapabilityPreflight[];
  dossier?: {
    claims: EngineClaim[];
    conflicts: ClaimConflict[];
    synthesis: DomainSynthesis[];
    timeline?: LifeTimeline;
    blockedSystems: { capabilityId: string; reason: string }[];
  };
  evidence: SajuEvidence[];
  nameAnalysis?: KoreanNameAnalysis;
  noModelCalls: true;
  interpretationBoundary: string;
}

왜 만들었나

많은 역학 AI 서비스는 프롬프트에서 시작한다. Legend Saju는 그보다 한 층 아래인 계산과 근거에서 시작한다.

  • 결정론적 코어: 같은 입력은 LLM 없이 같은 계산 결과를 만든다.

  • 유파 보존: 명리 관법이나 자미두수 사화표가 다르면 각각의 결과로 남긴다.

  • 출생시간 미상 처리: 모르는 시각은 후보군으로 계산하며 정오로 꾸며내지 않는다.

  • 출처 추적: 기능마다 성숙도, 근거 역할, 유파, 출처 ID, 빠진 차원을 기록한다.

  • 운명 점수 없음: 여러 체계의 근거와 충돌을 하나의 숫자로 뭉개지 않는다.

실제로 들어 있는 자산

이 저장소는 모델 호출 인터페이스만 공개하는 것이 아니라, 어려운 데이터와 규칙 작업을 함께 공개한다.

자산

공개 범위

다국어 역학 지식 저장소

36개 영역, 777개 근거 항목

명리 용어집

한국어·한자·중국어·일본어 777개 항목

자미두수 용어집

언어별로 정렬된 214개 항목

궁통보감

일간×월령 120칸과 실행 가능한 하위 예외절 66개

자미두수 궁성 이론

구조화 규칙 163개와 서로 분리 계산되는 사화 프로필 3종

대육임

60일진×12천반, 닫힌 720국 전송표

철판신수 질문시각 경로

괘 1,500칸, 선천 144행, 평생 2,028행

한국 성명학

대법원 인명용 한자 관측 9,495건과 획수 이형 관측 2,003건

원전 범위가 명시된 81수

81개 전체 행과 1차 출처 대조

해몽 연구 데이터

주공해몽 988개, 아르테미도로스 211절, 교차문화 감사 시드 5개

검사 가능한 원본 데이터는 data/에 있다. 실행에 필요한 지식은 런타임에 포함되므로 원격 데이터베이스나 숨겨진 검색 서비스에 의존하지 않는다.

추출 결과는 파일 단위로 고정돼 있으며, 최적화된 유일한 계산 경로는 자미두수 144개 조합에서 기존 결과와 바이트 단위로 일치했다. 자세한 내용은 docs/PARITY.md에 기록돼 있다.

구현 범위

체계

현재 구현 경계

만세력·사주 원국

양력·음력·윤달 변환, 사주팔자, 대운, 날짜 경계

명리

월령, 통근, 지장간, 십성, 합충형파해, 용신 관법 3종, 궁통보감 120칸

자미두수

12궁, 삼방사정, 복수 사화 프로필, 비성 연결, 중첩 운한

대육임

60일진×12천반의 닫힌 표와 경계가 명시된 과전법

기문둔갑

시가전반, 구궁, 구성, 팔문, 팔신, 직부·직사, 공망

철판신수

세 판본의 황극 연쇄와 별도 질문시각 14계열 표, 선천수, 108년 조문수

한국 성명학

인명용 한자 9,495건, 유니코드·자형 분해, 사용자가 밝힌 획수 체계의 오격 계산, 원전 범위 81수

기능 수를 README의 고정 숫자로 믿기보다 getEngineManifest()로 현재 레지스트리를 확인하는 편이 정확하다.

출생시각은 현지 민간시로 해석한다. timezonelongitudeE는 출생지 메타데이터로 보존하지만, 기본 차트가 근사 진태양시 보정을 몰래 적용하지는 않는다. 이 누락은 기능 및 입력 감사 메타데이터에 기록된다.

잘못된 출생 정보는 구조화된 blocked 경로로 반환돼 다른 결과와 함께 정정 요청을 할 수 있다. 존재할 수 없는 targetDatequestionDateTime은 날짜 기반 계산 전체를 안전하게 진행할 수 없으므로 요청 자체를 거절한다.

하나의 열린 진입점

import { resolve } from "./dist/index.js";

resolve({ question, ...inputs })는 현재 레지스트리를 검색하고, 질문을 라우팅하고, 실행 가능한 계산기를 호출하고, 부족한 입력을 숨기지 않은 채 반환한다. requestedCapabilities는 닫힌 enum이 아닌 일반 문자열을 받는다. 따라서 엔진에 새 모듈을 추가해도 모든 클라이언트 스키마를 함께 바꿀 필요가 없다.

이름을 resolveAsyncname으로 넘기면 별도의 한국 성명학 전체 경로가 열린다. 실제 성과 이름 한자를 9,495개 관측 스냅샷과 대조하고, 법적 사용 가능성, 배정 음, 관측 획수 후보, 유니코드, 자형 분해, 사용자가 밝힌 오격 계산법, 81수 대조를 서로 다른 근거 층으로 유지한다.

기존 동기식 resolve는 계산 전용 사용자와 호환된다. 비동기식은 이름이 들어왔을 때만 큰 성명학 데이터를 지연 로딩하므로 일반 사주 계산의 시작 비용을 늘리지 않는다.

analyze(input)는 타입이 정해진 출생 명세 API다. query({ intent, ... })는 기존 콘텐츠 봇이 사용하던 26개 intent 호환 인터페이스다. 콘텐츠 작성, 프롬프트, 게시 자동화는 계산 코어에 섞지 않는다.

성능

재현 가능한 벤치마크가 포함돼 있다.

npm run benchmark

현재 Apple Silicon 개발 장비와 Node 26에서 최적화 기준값은 사주 원국 질의 중앙값 1.13ms, 출생시간을 아는 전체 명세 중앙값 약 600ms, 새 프로세스 import 중앙값 63.1ms였다. 기기와 환경에 따라 달라질 수 있는 공학적 관측값이다. 최신 환경과 측정법은 PERFORMANCE.md를 참고한다.

출생시간을 모를 때

const result = analyze({
  birth: {
    year: 2004,
    month: 8,
    day: 3,
    calendar: "solar",
    gender: "남",
    birthTimeAccuracy: "unknown"
  },
  question: "전체 인생"
});

고정되는 기둥, 달라지는 관계, 모든 시주 후보를 분리해 반환한다. 과거 사건으로 후보를 비교할 수는 있어도 엔진이 혼자 하나의 출생시간을 정답으로 선언하지 않는다.

신비보다 방법론

이 프로젝트는 다음 단계를 구분한다.

  1. 역법과 원국 계산

  2. 구조 관찰

  3. 유파에 따른 해석

  4. 여러 체계의 종합

  5. 인간 또는 LLM이 작성한 설명

제품 수준의 주장을 하기 전 방법론기능 경계를 읽어야 한다.

실제 개발 과정에는 개발 순서, 다국어 조사 쿼리, 재현 가능한 에이전트 작업 지시가 들어 있다. 유지관리자를 위한 GitHub 공개 점검표는 docs/RELEASING.md에 있다.

공개 상태

지원하는 배포 대상은 공개 GitHub 소스다. package.jsonprivate로 표시해 npm 게시를 막아 두었다. npm run release:check는 공개 파일이 소스 스냅샷과 일치하는지, 흔한 비밀값 패턴이 섞이지 않았는지 검사한다. 데이터의 출처와 공개 범위는 DATA_LICENSES.mdrelease-boundary.json에 기록돼 있다.

앞으로 할 일

  • MCP 클라이언트를 쓰지 않는 사람을 위한 선택형 입력 화면

  • 원격 MCP 운영 안정화와 선택적 인증

  • 기본 비공개로 동작하는 독립형 출생 정보 입력 화면

  • 별도 라이선스의 해몽 데이터 팩

  • 추가 원전 고정값과 유파별 독립 검토

책임 있는 사용

Legend Saju는 전통 역학 체계를 재현하고 비교한다. 소프트웨어 검증을 통과했다는 말은 문서화된 계산을 재현했다는 뜻이며, 과학적 예측력이 증명됐다는 뜻은 아니다. 의료·법률·재무·정신건강 전문가를 대신해 사용하지 않는다.

라이선스

프로젝트 코드는 Apache-2.0이다. 외부 라이브러리와 데이터셋은 각자의 이용 조건을 따른다. DATA_LICENSES.mdTHIRD_PARTY_NOTICES.md를 참고한다.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables Korean Saju (Four Pillars of Destiny) calculation and myeongni-hak glossary lookup via MCP, allowing AI clients to compute accurate saju analysis and look up fortune-telling terms.
    4
    44
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides tools for Bazi (Chinese astrology) chart calculation and analysis, enabling LLMs to generate accurate birth charts, determine patterns, and answer follow-up questions based on actual calculations rather than model knowledge.
    2
    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
    Provides traditional Chinese astrology (Bazi, Ziwei) and divination (Liuyao, Meihua, Qimen, etc.) calculations as MCP tools for AI assistants.
    17
    28
    103
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Chinese metaphysics (bazi, qimen, 5-element) as decision-support tools for AI agents.

  • Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.

  • Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.

View all MCP Connectors

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/SihyeonJeon/legend-saju'

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