- Original Code: https://github.com/rath/orrery
- Wrapper for AI (MCP)
브라우저 기반 명리학 도구를 MCP도 지원가능하도록 수정. 사주팔자(四柱八字), 자미두수(紫微斗數), 서양 점성술 출생차트(Natal Chart)를 백엔드 없이 클라이언트에서 계산합니다.
이 저장소는 mcp-server.mjs로 MCP stdio 서버 실행이 가능합니다.
- OpenClaw 의 경우는 다음과 같이 하면 됩니다.
https://github.com/ziozzang/orrery-mcp 설치 해서. 19xx년 x월 xx일 xx시 xx분, 서울 기준 출생 (남자)으로 해서 메모리에 저장해두고, 그 사주를 기준으로 뽑아서 2026년 해석해줘.
- 만일 MCP를 다른 cli 도구들에 설치 하거나 할떄는 아래 명령을 써야 할수 있습니다. (환경 따라 다름)
git clone https://github.com/ziozzang/orrery-mcp.git
cd orrery-mcp
npm install
npm run build:corenpm run mcp:self-test기본 테스트 입력:
2002-01-01 12:30- 서울 (
lat=37.5665,lon=126.9780)
node mcp-server.mjs# 스키마 확인
mcporter call --stdio "node /ABS/PATH/orrery-mcp/mcp-server.mjs" tools/list --output json
# 사주
mcporter call --stdio "node /ABS/PATH/orrery-mcp/mcp-server.mjs" \
calculate_saju year=2002 month=1 day=1 hour=12 minute=30 gender=M latitude=37.5665 longitude=126.9780 --output json
# 자미두수
mcporter call --stdio "node /ABS/PATH/orrery-mcp/mcp-server.mjs" \
calculate_ziwei year=2002 month=1 day=1 hour=12 minute=30 gender=M latitude=37.5665 longitude=126.9780 --output json
# 서양점성
mcporter call --stdio "node /ABS/PATH/orrery-mcp/mcp-server.mjs" \
calculate_natal year=2002 month=1 day=1 hour=12 minute=30 gender=M latitude=37.5665 longitude=126.9780 --output jsonconfig/mcporter.json 또는 사용하는 mcporter 설정 파일에 아래 서버 추가:
{
"servers": {
"orrery": {
"command": "node",
"args": ["/ABS/PATH/orrery-mcp/mcp-server.mjs"],
"transport": "stdio"
}
}
}그 후:
mcporter list orrery --schema
mcporter call orrery.calculate_saju year=2002 month=1 day=1 hour=12 minute=30 gender=M- 설명: 사주(四柱八字) 계산
- 입력:
year(int),month(1-12),day(1-31)hour(0-23),minute(0-59, 기본 0)gender(M/F, 기본M)latitude/longitude(선택)
- 출력: 4주, 십신/운성, 대운, 관계, 신살, 좌법/인종법 등
- 설명: 자미두수 명반 계산
- 입력:
calculate_saju와 동일 - 출력: 연주/명궁/신궁, 오행국, 12궁/성요 구조
- 설명: 서양 점성 출생차트 계산
- 입력:
calculate_saju와 동일 - 출력: 행성/하우스/앵글/애스펙트
- 사주 만세력 MCP - 이걸 다시 MCP의 형태로 정지오가 wrapping(with Openclaw)
- 사주 만세력 — 고영창님의 Perl 진짜만세력을 김정균님이 PHP로 포팅한 것을, 2018년 11월 황장호가 Java와 Python으로 포팅하여 사용해오다가, 2026년 2월 Claude Code (Opus 4.6)로 TypeScript로 포팅
- 자미두수 명반 — lunar-javascript 라이브러리 기반으로 Claude (Opus 4.5)가 중국어 문헌을 리서치하며 구현
- 점성술 출생차트 — Swiss Ephemeris의 Moshier 이론을 순수 TypeScript로 포팅
- 60갑자 기반 4주 계산 (시주, 일주, 월주, 년주)
- 십신, 12운성, 지장간
- 합충형파해 관계 분석 (삼합, 반합, 방합 포함)
- 신살 (양인살, 백호살, 괴강살)
- 대운 10개 (순행/역행 판단)
- 일운/월운 트랜짓 (합/충/형 감지)
- 음력 자동 변환
- 명궁/신궁 계산
- 14주성 배치 (紫微계 + 天府계)
- 보성/살성 배치
- 사화 (化祿/化權/化科/化忌)
- 성요 밝기 (廟/旺/得/利/平/陷)
- 전통 4×4 명반 그리드 레이아웃
- 대한 12개
- 유년 운세 (유년명궁, 유년사화, 12유월)
- Swiss Ephemeris Moshier 이론 기반 행성 위치 계산 (순수 TypeScript)
- 10개 행성 + 키론 + 남/북교점 위치 (별자리, 도수, 역행)
- 하우스 시스템 선택 (Placidus 기본, 10종 지원)
- ASC/MC/DESC/IC 앵글
- 5대 메이저 애스펙트 (합, 육합, 스퀘어, 트라인, 충)
- 출생 위치 입력 (위도/경도, 서울 기본값)
- AI 에이전트용 텍스트 복사 (사주 + 자미두수 + 출생차트 일괄 복사)
- 사용 가이드 및 용어 설명
- 시간 모름 모드 (3주 계산)
- 모바일 반응형
# 의존성 설치
bun install
# 개발 서버
bun dev
# 빌드
bun run build
# 테스트
bun test- React 19 + TypeScript 5
- Vite 7
- Tailwind CSS 4
- lunar-javascript (음력 변환)
- Vitest (테스트)
계산 엔진을 npm 패키지로 사용할 수 있습니다. → @orrery/core
import { calculateSaju } from '@orrery/core/saju'
import { createChart } from '@orrery/core/ziwei'
import { calculateNatal } from '@orrery/core/natal'
const input = { year: 1993, month: 3, day: 12, hour: 9, minute: 45, gender: 'M' as const }
// 사주팔자
const saju = calculateSaju(input)
saju.pillars.forEach(p => console.log(p.pillar.ganzi)) // 乙巳, 壬辰, 乙卯, 癸酉
// 자미두수 명반
const ziwei = createChart(1993, 3, 12, 9, 45, true)
console.log(ziwei.mingGongZhi) // 명궁 지지
console.log(ziwei.wuXingJu.name) // 오행국
// 서양 점성술 출생차트
const natal = await calculateNatal(input)
natal.planets.forEach(p => console.log(`${p.id}: ${p.sign} ${p.degreeInSign.toFixed(1)}°`))
console.log(`ASC: ${natal.angles.asc.sign}`)AGPL-3.0이 뭔가요? (쉬운 설명)
- 개인적으로 사용 — 본인 컴퓨터에서 마음대로 실행하고 수정해도 됩니다.
- 소스 코드를 읽고 공부 — 코드를 보고 배우는 건 언제든 환영합니다.
- 수정·개선 후 재배포 — 코드를 고쳐서 다시 배포할 수 있습니다. 단, 아래 조건을 지켜야 합니다.
- 같은 라이선스(AGPL-3.0) 유지 — 이 코드를 수정하거나 포함해서 배포할 때, 그 결과물도 반드시 AGPL-3.0으로 공개해야 합니다.
- 소스 코드 공개 의무 — 일반적인 GPL과 달리, AGPL은 웹 서비스로 제공하는 경우에도 소스 코드를 공개해야 합니다. 예를 들어 이 코드를 수정해서 웹사이트로 운영하면, 사용자가 요청할 때 수정된 소스 코드를 제공해야 합니다.
- 변경 사항 명시 — 원본에서 무엇을 바꿨는지 알 수 있도록 표시해야 합니다.
- 저작권 표시 유지 — 원본의 저작권 표시와 라이선스 문구를 지우면 안 됩니다.
- 소스 비공개 상태로 서비스 운영 — 이 코드를 수정해서 웹 서비스를 만들면서 소스를 공개하지 않는 것은 라이선스 위반입니다.
- 다른 라이선스로 변경 — AGPL 코드를 MIT, Apache 등 더 허용적인 라이선스로 바꿔서 배포할 수 없습니다.
마음껏 쓰되, 수정하거나 서비스로 제공할 경우 소스 코드를 AGPL-3.0으로 공개하세요.