Skip to content

ziozzang/orrery-mcp

 
 

Repository files navigation

MCP Wrapper for Rath/Orrery

README

Orrery

Orrery — 혼천의(渾天儀)

브라우저 기반 명리학 도구를 MCP도 지원가능하도록 수정. 사주팔자(四柱八字), 자미두수(紫微斗數), 서양 점성술 출생차트(Natal Chart)를 백엔드 없이 클라이언트에서 계산합니다.

라이브 데모 →

MCP 서버 래핑

이 저장소는 mcp-server.mjs로 MCP stdio 서버 실행이 가능합니다.

1) 설치

  • 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:core

2) 자체 테스트

npm run mcp:self-test

기본 테스트 입력:

  • 2002-01-01 12:30
  • 서울 (lat=37.5665, lon=126.9780)

3) MCP 서버 직접 실행 (stdio)

node mcp-server.mjs

4) mcporter로 도구 확인/호출

# 스키마 확인
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 json

5) OpenClaw / mcporter 설정 예시

config/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

MCP 도구 목록

calculate_saju

  • 설명: 사주(四柱八字) 계산
  • 입력:
    • year(int), month(1-12), day(1-31)
    • hour(0-23), minute(0-59, 기본 0)
    • gender(M/F, 기본 M)
    • latitude/longitude(선택)
  • 출력: 4주, 십신/운성, 대운, 관계, 신살, 좌법/인종법 등

calculate_ziwei

  • 설명: 자미두수 명반 계산
  • 입력: calculate_saju와 동일
  • 출력: 연주/명궁/신궁, 오행국, 12궁/성요 구조

calculate_natal

  • 설명: 서양 점성 출생차트 계산
  • 입력: 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유월)

출생차트 (Natal Chart)

  • 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 (테스트)

@orrery/core 맛보기

계산 엔진을 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) 유지 — 이 코드를 수정하거나 포함해서 배포할 때, 그 결과물도 반드시 AGPL-3.0으로 공개해야 합니다.
  • 소스 코드 공개 의무 — 일반적인 GPL과 달리, AGPL은 웹 서비스로 제공하는 경우에도 소스 코드를 공개해야 합니다. 예를 들어 이 코드를 수정해서 웹사이트로 운영하면, 사용자가 요청할 때 수정된 소스 코드를 제공해야 합니다.
  • 변경 사항 명시 — 원본에서 무엇을 바꿨는지 알 수 있도록 표시해야 합니다.
  • 저작권 표시 유지 — 원본의 저작권 표시와 라이선스 문구를 지우면 안 됩니다.

할 수 없는 것

  • 소스 비공개 상태로 서비스 운영 — 이 코드를 수정해서 웹 서비스를 만들면서 소스를 공개하지 않는 것은 라이선스 위반입니다.
  • 다른 라이선스로 변경 — AGPL 코드를 MIT, Apache 등 더 허용적인 라이선스로 바꿔서 배포할 수 없습니다.

한줄 요약

마음껏 쓰되, 수정하거나 서비스로 제공할 경우 소스 코드를 AGPL-3.0으로 공개하세요.

About

AI에이전트에서 동작하는 MCP. 사주팔자·자미두수·출생차트 계산기. 십신, 대운, 명반, 사화까지 한 번에.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.7%
  • Other 1.3%