Legend Saju について
Legend Saju は、四柱推命、紫微斗数、奇門遁甲などを扱う決定論的な計算エンジンです。計算経路、流派、出典を確認したい人向けで、異なる流派の結果を分けて保持し、出生時刻不明時は候補チャートを個別に計算します。
主な機能
- 01複数の占術・命理体系を計算
- 02異なる流派の結果を個別に保持
- 03出生時刻不明時の候補チャート計算
- 04出典と結び付いた計算根拠の提示
- 05命盤・運勢・タイムラインカードの生成
活用シーン
- 01出生情報から命盤や運勢を確認する
- 02二人の相性や結婚時期を比較する
- 03日取り選びや占術の計算を依頼する
- 04姓名分析と根拠となる出典を確認する
MCP 対応
MCP サーバーは、運勢、相性、日取り選び、占術、姓名分析、夢解釈の読み取り専用ツールをクライアントに提供し、出典付きの根拠も返せます。リモート接続とローカルの STDIO 実行に対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://legend-saju-mcp-production.up.railway.app/mcpclaude mcp add --transport http sihyeonjeon-legend-saju https://legend-saju-mcp-production.up.railway.app/mcp{"mcpServers":{"sihyeonjeon-legend-saju":{"type":"http","url":"https://legend-saju-mcp-production.up.railway.app/mcp"}}}Cursor で開く{"servers":{"sihyeonjeon-legend-saju":{"type":"http","url":"https://legend-saju-mcp-production.up.railway.app/mcp"}}}VS Code で開く{"mcpServers":{"sihyeonjeon-legend-saju":{"type":"http","url":"https://legend-saju-mcp-production.up.railway.app/mcp"}}}{"mcpServers":{"sihyeonjeon-legend-saju":{"serverUrl":"https://legend-saju-mcp-production.up.railway.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Legend Saju
すべての答えが決定論的な計算から始まる東洋術数(命・卜・相)エンジンです。 計算式、流派、出典、不確実性を構造化して返します。
同じ生年月日を複数の伝統に基づいて計算します。計算経路内での隠れた LLM 呼び出しは 0 回です。
出典に紐づく知識 777 件 · 大六壬 720 局 · 韓国の人名用漢字の観測データ 9,495 件 · 計算経路でのモデル呼び出し 0 回
Legend Saju は、四柱推命・命理、紫微斗数、奇門遁甲、大六壬、鉄板神数、姓名学、夢占いまで、命・卜・相の三術の計算を 1 つのエンジンで扱います。流派が異なる場合は、それぞれの結果を並べて保持します。出生時刻が不明な場合は、候補チャートを分けて計算します。
最も手早い使い方
インストール不要で接続できる HTTPS MCP アドレスです。
https://saju.tripsight.co.kr/mcp
公式 MCP Registry 名は io.github.SihyeonJeon/legend-saju です。既存のアドレス https://legend-saju-mcp-production.up.railway.app/mcp も同じサーバーに接続します。
Claude Code
以下のコマンドは、すべてのプロジェクトで使えるようにユーザー範囲で接続します。
claude mcp add --transport http --scope user legend-saju https://saju.tripsight.co.kr/mcp
claude mcp list
Claude Code を開き、/mcp で legend-saju が接続されていることを確認してから、いつもどおり質問してください。
ChatGPT 開発者モード
- ChatGPT の Settings → Security and login で Developer mode を有効にします。
- ChatGPT Plugins で
+をクリックします。 - 名前と説明を入力し、Connection に上記の MCP アドレスを
/mcpまで含めて入力します。 - 接続を作成した後、
legend_saju_read_fortune、legend_saju_analyze_compatibility、legend_saju_card_natalなどが検出されることを確認します。 - 新しい会話のツールメニューから接続を選択し、自然言語で質問します。
ChatGPT では、計算結果がカードウィジェット(ChatGPT Apps)としてレンダリングされます。質問の種類に応じて、命式カード、分野別運勢カード、相性カード、大運タイムラインの 4 種類が表示されます。ウィジェットのレンダリングはウェブ(chatgpt.com)で最も安定します。
開発者モードを利用できるかどうかは、アカウントとワークスペースのポリシーによって異なる場合があります。詳しい手順は、OpenAI のプラグイン接続ガイドを参照してください。
Codex
MCP だけをすぐに接続するには、次の 2 行で十分です。
codex mcp add legend-saju-remote --url https://saju.tripsight.co.kr/mcp
codex mcp list
MCP 接続と自然言語での利用ガイドをまとめてインストールするには、リポジトリをプラグインソースとして追加し、Plugins 画面で Legend Saju をインストールします。
codex plugin marketplace add SihyeonJeon/legend-saju --ref main
リモートサーバーは入力値を保存せずに処理し、モデル API の呼び出しは 0 回を維持します。リクエストサイズ、1 分あたりのリクエスト数、同時実行数には制限が適用されます。
ローカルで実行する
生年月日や名前を外部サーバーに送信したくない場合は、Node.js 20 以上がインストールされたコンピューターで STDIO 方式を使って実行します。
git clone https://github.com/SihyeonJeon/legend-saju.git
cd legend-saju
npm ci
npm run build
リポジトリのルートで、使用するクライアントに対応したコマンドを実行します。$PWD はシェルによって現在の絶対パスに置き換えられます。
codex mcp add legend-saju -- node "$PWD/bin/legend-saju-mcp.js"
claude mcp add --transport stdio --scope user legend-saju -- node "$PWD/bin/legend-saju-mcp.js"
インストール後は、ツール名や JSON を指定する必要はありません。いつもどおり質問してください。
西暦 1990 年 1 月 1 日の正午生まれです。仕事、財運、結婚、そして今後 3 年間について総合的に見てください。
2 人の生年月日と出生時刻をお伝えします。双方の命式全体をもとに、相性と結婚の時期を併せて見てください。
名前の漢字をお伝えします。四柱推命とは分けて、姓名学の根拠も分析してください。
その他の MCP クライアントで接続する
リモート HTTP MCP に対応したクライアントであれば、以下の設定を使用できます。設定ファイルの場所はクライアントによって異なります。
{
"mcpServers": {
"legend-saju": {
"type": "http",
"url": "https://saju.tripsight.co.kr/mcp"
}
}
}
ローカルソースを固定して使いたい場合は、リポジトリをビルドした後、CLI ラッパーを直接実行します。
{
"mcpServers": {
"legend-saju": {
"command": "node",
"args": ["/절대/경로/legend-saju/bin/legend-saju-mcp.js"]
}
}
}
ローカル STDIO 方式は、上記のビルドを 1 回完了した後に使用できます。
MCP가 하는 일
MCP 서버는 사용자의 목적이 이름에 드러나는 읽기 전용 도구를 제공한다.
| 도구 | 역할 |
|---|---|
legend_saju_read_fortune | 일반 사주, 총운, 재물·사업·직업·연애·건강운을 질문 범위에 맞춰 계산한다 |
legend_saju_analyze_compatibility | 두 사람의 출생 정보를 비교한다 |
legend_saju_select_dates | 명시적으로 택일을 요청한 경우에만 후보 날짜를 계산한다 |
legend_saju_cast_divination | 기문·육임·주역처럼 질문 시각이나 괘가 필요한 계산을 수행한다 |
legend_saju_analyze_name | 실제 이름 한자, 법원 인명용 한자 관측, 81수와 작명 정보를 분리해 계산한다 |
legend_saju_interpret_dream | 의미 대조가 끝난 교차 전승 범위 안에서 꿈의 공통 모티프와 충돌 조건을 반환한다 |
legend_saju_manifest | 현재 엔진에 들어 있는 계산법, 출처, 데이터 범위를 확인한다 |
legend_saju_capabilities | 전문적인 질문에 맞는 세부 계산법을 찾는다 |
legend_saju_run_methods | 이름을 지정한 유파·계산법이나 복합 계산을 한 실행 계획으로 묶는다 |
legend_saju_card_natal | 네 기둥·오행 밸런스·왕쇠/격국/용신 판정·신살을 원국 카드 위젯으로 렌더링한다 |
legend_saju_card_fortune | 총운·재물운·연애운 등 영역별 운세 카드 위젯을 렌더링한다 |
legend_saju_card_compatibility | 두 사람의 일주와 합충 신호를 궁합 카드 위젯으로 렌더링한다 |
legend_saju_card_timeline | 대운 타임라인 위젯을 렌더링하고 시기 질문의 연도를 표시한다 |
일상적인 운세 요청은 목적별 도구가 필요한 계산만 고른다. detailLevel은 계산 범위를 정하고 outputMode는 반환 형식을 정한다. 깊은 종합 분석은 detailLevel: "expert"로 계산하되 기본 응답은 읽기 좋은 consumer 형식을 유지한다. 지식 자산·원문·출처가 필요할 때 같은 입력을 outputMode: "evidence"로 호출한다.
카드 도구의 계산 값은 전부 서버가 채우고, 해석 문장과 점수는 호스트 모델이 작성해 카드의 narrative·text 필드로 전달한다. 카드에는 해석 작성 주체가 라벨로 표시된다.
사용자의 자연어 질문
↓
호스트 모델이 입력을 정리하고 계산법을 탐색
↓
Legend Saju MCP가 결정론적 계산 수행
↓
근거 ID가 연결된 요약·영역별 해석·타임라인
↓
호스트 모델이 근거와 경계를 보존해 대화로 전달
Legend Saju MCP 자체는 OpenAI나 Anthropic API 키 없이 동작하며 계산 경로의 모델 호출 0회를 유지한다. 대화와 설명에는 사용 중인 Codex·Claude·기타 클라이언트의 기존 모델 세션이 쓰인다.
MCP와 동봉 플러그인의 차이
- MCP만 연결하면 계산 엔진과 목적별 도구를 바로 사용할 수 있다.
plugins/legend-saju/의 Codex 플러그인에는 MCP 설정과 자연어 사용 지침이 함께 들어 있다. 사용자가 capability ID나 입력 스키마를 고르지 않도록 호스트 모델의 처리 방식을 보강한다.- 계산 능력은 MCP와 플러그인이 같은 공개 엔진 진입점을 공유한다.
자연어 입력
이 프로젝트가 의도한 인터페이스는 대화다. 접수 폼과 intent 메뉴 대신, 모델이 대화에서 확실한 정보만 추출하고, 필요한 계산법을 찾은 뒤, 엔진이 돌려준 근거를 설명한다.
1990년 1월 1일 양력이고 태어난 시간은 몰라.
앞으로 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 전용이다.
import { resolve } from "./dist/index.js";
const result = resolve({
birth: {
year: 1990,
month: 1,
day: 1,
hour: 12,
minute: 0,
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);
반환값은 계산과 해석의 근거 데이터다. 완성된 점사 문장 대신 claim, 충돌, 실행 경로가 돌아온다.
{
executionPlan: {
entryIntent: string;
domains: string[];
core: string[];
supporting: string[];
selected: string[];
};
selection: { requested: string[]; selected: string[]; unsupported: string[] };
routes: CapabilityPreflight[];
dossier?: {
claims: EngineClaim[];
conflicts: ClaimConflict[];
synthesis: DomainSynthesis[];
timeline?: LifeTimeline;
methodResults: Record<string, unknown>;
blockedSystems: { capabilityId: string; reason: string }[];
};
evidence: SajuEvidence[];
nameAnalysis?: KoreanNameAnalysis;
noModelCalls: true;
}
상세도는 brief, standard, expert, raw이고 출력은 action_only, consumer, evidence, debug다. action_only는 행동 제안만, consumer는 요약·판정·영역별 해석·타임라인, evidence는 claim·계산 결과·지식 자산·원문·출처, debug는 내부 실행 기록을 반환한다. maxClaims는 debug를 제외한 응답에서 해석·행동·타임라인·claim·계산 결과에 하나의 공통 예산으로 적용된다.
consumer 응답에는 왕쇠·격국·용신 판정이 상시 포함되고, 응답에 싣지 못한 내부 claim은 evidenceIndex 색인으로 노출된다. 같은 입력으로 claimIds를 넘겨 재호출하면 색인의 claim 전문을 선택적으로 받는다.
왜 만들었나
많은 역학 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수 |
| 해몽 | 배설물·물·이·불·고인 5개 개념의 독립 전승 공통점과 충돌 조건, 연결된 원문 발췌 |
기능 수를 README의 고정 숫자로 믿기보다 getEngineManifest()로 현재 레지스트리를 확인하는 편이 정확하다.
출생시각은 현지 민간시로 해석한다. timezone과 longitudeE는 출생지 메타데이터로 보존하고, 기본 차트는 근사 진태양시 보정 없이 민간시를 그대로 쓴다. 이 정책은 기능 및 입력 감사 메타데이터에 기록된다.
잘못된 출생 정보는 구조화된 blocked 경로로 반환돼 다른 결과와 함께 정정 요청을 할 수 있다. 존재할 수 없는 targetDate나 questionDateTime은 날짜 기반 계산 전체를 안전하게 진행할 수 없으므로 요청 자체를 거절한다.
하나의 열린 진입점
import { resolve } from "./dist/index.js";
resolve({ question, ...inputs })는 현재 레지스트리를 검색하고, 질문을 라우팅하고, 실행 가능한 계산기를 호출하고, 부족한 입력을 숨기지 않은 채 반환한다. requestedCapabilities는 닫힌 enum이 아닌 일반 문자열을 받는다. 따라서 엔진에 새 모듈을 추가해도 모든 클라이언트 스키마를 함께 바꿀 필요가 없다.
이름을 resolveAsync의 name으로 넘기면 별도의 한국 성명학 전체 경로가 열린다. 실제 성과 이름 한자를 9,495개 관측 스냅샷과 대조하고, 법적 사용 가능성, 배정 음, 관측 획수 후보, 유니코드, 자형 분해, 사용자가 밝힌 오격 계산법, 81수 대조를 서로 다른 근거 층으로 유지한다.
기존 동기식 resolve는 계산 전용 사용자와 호환된다. 비동기식은 이름이 들어왔을 때만 큰 성명학 데이터를 지연 로딩하므로 일반 사주 계산의 시작 비용이 그대로 유지된다.
analyze(input)는 타입이 정해진 출생 명세 API다. query({ intent, ... })는 26개 intent를 지원하는 호환 인터페이스다. 설명과 UI 같은 어댑터는 계산 코어와 분리한다.
성능
재현 가능한 벤치마크가 포함돼 있다.
npm run benchmark
현재 Apple Silicon 개발 장비와 Node 26에서 최적화 기준값은 사주 원국 질의 중앙값 1.13ms, 출생시간을 아는 전체 명세 중앙값 약 600ms, 새 프로세스 import 중앙값 63.1ms였다. 기기와 환경에 따라 달라질 수 있는 공학적 관측값이다. 최신 환경과 측정법은 PERFORMANCE.md를 참고한다.
출생시간을 모를 때
const result = analyze({
birth: {
year: 1990,
month: 1,
day: 1,
calendar: "solar",
gender: "남",
birthTimeAccuracy: "unknown"
},
question: "전체 인생"
});
고정되는 기둥, 달라지는 관계, 모든 시주 후보를 분리해 반환한다. 후보 확정은 과거 사건 대조와 사용자의 몫으로 남긴다.
신비보다 방법론
이 프로젝트는 다음 단계를 구분한다.
- 역법과 원국 계산
- 구조 관찰
- 유파에 따른 해석
- 여러 체계의 종합
- 인간 또는 LLM이 작성한 설명
제품 수준의 주장을 하기 전 방법론과 기능 경계를 읽어야 한다.
실제 개발 과정에는 개발 순서, 다국어 조사 쿼리, 재현 가능한 에이전트 작업 지시가 들어 있다.
라이선스
프로젝트 코드는 Apache-2.0이다. 외부 라이브러리와 데이터셋은 각자의 이용 조건을 따른다. DATA_LICENSES.md와 THIRD_PARTY_NOTICES.md를 참고한다.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。