
SooTool
io.github.JinHo-von-Choi由 GitHub 帳號 JinHo-von-Choi 發布v0.3.1更新於 Oct 29, 2026
Deterministic Decimal calculation MCP server: Korean tax, finance, accounting, statistics
概覽
以 Decimal 精確計算的 MCP 伺服器,涵蓋韓國稅務、薪資、金融、會計、統計與工程計算,並回傳公式與憑證。
- 可以做什麼
- 執行精確的 Decimal 運算與公式求值,並支援批次與串接流程計算
- 計算韓國與美國所得稅、薪資、資遣費、年終結算及不動產相關稅費
- 處理金融與會計:淨現值、內部報酬率、貸款、債券、折舊、營業稅、比率與損益兩平
- 涵蓋統計、機率分布、日期時間、數學、幾何、單位與匯率換算
- 提供工程、醫療、科學、密碼學數學與專案管理類計算
- 反推目標輸入、比較情境、解釋計算過程,並驗證結果憑證
- 適用情境
- 當助理需要給出可稽核的數字而非估算時適用:韓國稅務與薪資數字、財務建模、會計進位規則,或需要展示計算過程的統計與工程計算。
- 執行需求
- 以本機 Python 套件執行(需 Python 3.12 或更新版本),通常以 uvx 啟動;符號運算工具需額外安裝。未宣告帳號或 API 金鑰。另有選用的 HTTP 或 Unix 通訊端傳輸,綁定到本機以外時需提供驗證權杖。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 SooTool,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
SooTool
Precision Calc MCP for LLM tool use.
[CI] [PyPI version] [Python 3.12+] [License: MIT]
LLM 대신 계산을 맡는 MCP 서버. 세금, 급여, 금융, 통계, 공학 계산을 Decimal로 정확하게 수행하고 계산 근거를 함께 돌려준다. 18개 계산 도메인 276개 기본 도구 + 10개 admin 정책 도구, 한 번에 최대 500건 병렬 계산(core.batch), 단계 연결 계산(core.pipeline), 4종 전송(stdio/Streamable HTTP/Unix, 폐기 예정 SSE)을 제공한다. Python 3.12 이상.
왜 필요한가
LLM은 숫자를 계산하지 않고 그럴듯한 숫자를 생성한다. 그래서 누진세 구간 경계, 반올림 방향, 연도별 세율에서 자주 틀린다. 아래는 같은 20문제를 풀린 결과다(2026-04-24 측정).
틀리는 지점은 모델이 달라도 비슷하다. 소득세 구간 경계, 양도소득세 장기보유특별공제, 부가세 반올림, 교류 임피던스 정밀도다. 문제 구성과 원자료는 bench/에 있다.
SooTool은 이 계산을 세 가지 장치로 고정한다.
- Decimal 전용 계산. 입력 숫자는 문자열이나 Decimal로 받는다. 부동소수점 오차가 계산에 끼지 않는다.
- 법령 값의 외부화. 세율, 공제액, 보험료율은 정책 파일(YAML)에 근거 조문과 시행일을 붙여 둔다. 시점(
as_of)을 주면 그날 시행 중이던 값으로 계산한다. - 계산 근거 반환. 모든 응답에 공식, 입력, 중간값, 결과가 담긴
trace와 재실행 검증용 영수증(_meta.integrity)이 붙는다.
구조
세 진입점(MCP, CLI, SDK)은 같은 레지스트리를 거친다. 같은 입력이면 어느 경로로 불러도 결과와 영수증이 같다.
빠른 시작
설치
Claude Code에 등록
저장소를 받아 개발 중인 코드로 띄우려면 다음처럼 등록한다.
첫 계산
MCP 클라이언트에서 "과세표준 5천만 원의 2026년 소득세는?"이라고 물으면 에이전트가 tax.kr_income을 호출한다. 터미널에서 같은 도구를 직접 실행할 수도 있다.
응답 읽는 법
finance.npv(rate="0.08", cashflows=["-1000","300","400","500","200"], rounding="HALF_EVEN", decimals=2)의 실제 응답이다.
주요 기능
반올림은 호출자가 고른다
반올림 관행이 상황마다 갈리는 금융·회계 도구(부가세, 현금흐름, 감가상각, 환전 등)는 rounding(HALF_EVEN, HALF_UP, DOWN, UP, FLOOR, CEIL)과 decimals를 받는다. 부가세 역산은 원 단위 절사(DOWN), 회계 일반은 HALF_EVEN처럼 쓰임새마다 규칙이 다르기 때문이다. 법령이 끝수 처리를 정한 세목(건강보험료·장기요양보험료, 월급 원천징수 지방소득세, 자동차세·등록면허세는 10원 단위 절사)은 그 규칙을 그대로 따르고 도구 설명에 적어 둔다.소득세 산출세액과 개인지방소득세 산출세액은 원 미만 절사다.
시점을 지정한 정책 계산
세법과 보험료율은 연중에도 바뀐다. 정책 도구는 year 외에 as_of(YYYY-MM-DD)와 include_proposed를 받는다.
as_of를 주지 않으면 그 해 확정 버전 중 시행일이 가장 늦은 것을 쓴다. 국회 확정 전 개정안(status: proposed)은 include_proposed=true일 때만 쓴다. 정책 파일을 서버 재배포 없이 고치는 절차는 docs/policy_management.md에 있다.
여러 건을 한 번에: batch와 pipeline
core.batch는 항목마다 성공, 오류, 시간 초과를 따로 기록하고 결과를 입력 순서대로 돌려준다. core.pipeline은 앞 단계가 실패하면 뒤 단계를 skipped로 표시하며, 실패한 지점부터 다시 돌리는 core.pipeline_resume(10분 보관)이 있다.
실무에서는 다음처럼 쓴다.
역산, 비교, 설명
core.solve_for: 목표 결과를 만드는 입력값을 찾는다. 예) 실수령액 300만 원이 되는 세전 월급.core.compare: 기준안 대비 시나리오별 값과 차이를 표로 낸다.core.explain: 계산 과정과 적용 정책을 한국어나 영어 문장으로 풀어 쓴다. 수치는 바꾸지 않는다.
영수증 재실행 검증
같은 도구를 다시 실행해 도구 이름, 입력 해시, 결과 해시, 도구 버전, 정책 해시를 대조한다. SOOTOOL_RECEIPT_KEY_FILE에 ed25519 개인 키 파일을 지정하면 영수증에 서명이 붙는다.
도구 카탈로그 (276개 기본 + 10개 admin, 18 계산 도메인 + 운영 도구)
도구별 버전, 정확도 등급, 설명은 docs/tool_catalog.md에 있다. 이 파일은 레지스트리에서 자동 생성한다.
서버 실행
네트워크 전송의 보안 규칙은 다음과 같다.
- 기본 바인딩은
127.0.0.1이다.--host 0.0.0.0으로 외부에 열려면--auth-token(또는SOOTOOL_AUTH_TOKEN)이 있어야 기동한다. - 정책을 바꾸는 쓰기 도구 4종은 stdio와 Unix 소켓에서만 노출한다. 네트워크에서 쓰려면
--admin --remote-admin --admin-token <토큰>이 모두 필요하고, 관리자 토큰으로 인증한 요청만 쓰기를 수행한다.
노출 프로파일
lean은 도구 정의 전체를 컨텍스트에 올리지 않는다. 에이전트는 sootool.search로 도구를 찾고, sootool.describe로 인자를 확인한 뒤, sootool.call로 실행한다. 결과와 영수증은 직접 호출과 같다. sootool.call은 읽기 전용 도구만 실행한다.
명령줄
서브커맨드를 주면 서버를 띄우지 않고 도구를 바로 실행한다.
파이썬 라이브러리로 쓰기
MCP 서버 없이 같은 도구를 함수로 부른다. 결과, 영수증, as_of 처리가 MCP와 같고 결과 타입이 선언되어 있어 타입 검사기가 필드를 확인한다.
샌드박스에서 에이전트가 파이썬을 실행하는 구성은 docs/sdk.md를 본다.
에이전트에 사용 규칙 알려 주기
도구를 등록해도 에이전트가 직접 암산하는 경우가 있다. 아래 중 하나로 "숫자 계산은 SooTool로" 규칙을 넣는다.
- 세션 시작 시
sootool.skill_guide를 호출하게 한다. 언제 어떤 도구를 부를지 정리한 트리거 표, 예시, 금지 패턴, 플레이북을 돌려준다(section:triggers,examples,anti_patterns,playbooks,all/lang:ko,en). - 클라이언트 설정 파일에 붙여 넣을 규칙: Claude Code, Cursor, AGENTS.md
문서
개발
새 도구는 src/sootool/modules/<도메인>/에 함수를 만들고 @REGISTRY.tool(namespace, name, description, version)을 붙인 뒤 도메인 __init__.py에서 불러오면 등록된다. 도구 설명이나 타입을 바꾸면 scripts/gen_tool_catalog.py와 scripts/gen_sdk_stubs.py로 생성 문서를 다시 만든다. 정책 파일을 고치면 scripts/policy_stamp.py로 해시를 갱신한다.
라이선스
MIT. LICENSE 참조.
來源:README.md,提交 8c623e4
工具
0版本歷史
1- v0.3.1最新Oct 29, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分