Skip to content

산재 신청 도우미 (sanjae-apply)

io.github.seojaehong/sanjae-applyseojaehongstreamable-httpv0.6.0Scanned

Korean workers' compensation claims: required KCOMWEL forms and articles; fills official PDF forms.

8 tools: 4 change things and 4 only read.

Tools: 0 delete, 0 irreversible, 4 write, 4 read.
  • Reads private data · 0
  • Reads text others write · 1
  • Can send data out · 0
  • 1 finding

Anlyon alternative

4 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

8 tools

Changes things 4Claude Code: ask
  • check_accident_reportfill_form(form_id='F_INDUSTRIAL_ACCIDENT_REPORT') 에 넣을 values 를 점검한다 — 빈 칸, 하나만 고르는 칸(국적·고용형태·근무형태·발주자), 외국인 체류자격, 업종·직업 코드 자릿수, 날짜와 요일 일치, 24시 범위, 입사일·작성일 앞뒤, 휴업 3일 기준, 사망이면 중대재해 …1 finding

    Why it is in this group

    • The description's first verb is "fill": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_accident_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "fill": a word for a change.

      What this check looks for
    Description, as the server wrote it
    fill_form(form_id='F_INDUSTRIAL_ACCIDENT_REPORT') 에 넣을 values 를 점검한다 — 빈 칸, 하나만 고르는 칸(국적·고용형태·근무형태·발주자), 외국인 체류자격, 업종·직업 코드 자릿수, 날짜와 요일 일치, 24시 범위, 입사일·작성일 앞뒤, 휴업 3일 기준, 사망이면 중대재해 즉시 보고 안내, 근로자대표 확인, 원인 칸 4요인·재발방지 계획 기한·담당 단서, 기한 참고일(발생일부터 1개월, 민법 제157·160조). issues 를 error·warn·info 로 돌려준다. 고치지 않고 판단하지 않는다(산업재해 해당 여부·책임은 다루지 않는다). 입력을 저장하지 않는다.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • fill_formform_id 의 정본 서식에 값을 넣어 base64 로 돌려준다.No findings

    Why it is in this group

    • The name "fill_form" says "fill": a word for a change.
    Description, as the server wrote it
    form_id 의 정본 서식에 값을 넣어 base64 로 돌려준다. format='pdf'(기본)는 정본 PDF 오버레이, format='hwpx'는 한글 문서(한글 2014+ 로 열어 고칠 수 있다). 먼저 get_form_catalog(form_id) 의 slot_labels 로 칸을 고른다(칸 이름은 두 형식이 같다). 서식의 선택지(사업주여부·친인척여부·근로자유형·신청 구분·예/아니오·개인정보 동의 등)는 해당 체크 칸에 true 를 넣어야 찍힌다. 아는 값은 빠짐없이 넣는다. 서버에 저장하지 않는다. 주민번호 등은 보내지 않아도 된다(빈칸으로 남는다). 사용자가 도장·날인·인감을 말하면 stamp 를 넣는다(넣지 않으면 서명란이 빈다). F_INDUSTRIAL_ACCIDENT_REPORT(산업재해조사표)는 고용노동부(관할 지방고용노동관서)에 내는 서식이다 — 서술 칸은 get_accident_report_guide 로 쓰고 check_accident_report 로 점검한 뒤 채운다. 칸이 모자란 서술은 칸에 「(별지에 적음)」을 쓰고 끝에 별지 쪽을 붙인다(report.annexed). 도장 기본 자리는 사업주(applicant)이고, 근로자대표 확인란(worker_rep)은 근로자대표 본인 것만 spot='worker_rep' 로 따로 찍는다. 결과의 labor_office 에 workplace_address 로 찾은 관할 관서·접수 부서·전화·팩스·확인방법(find_labor_office 와 같은 내용)과, labor_office 칸에 적은 값·제안 값(slot)을 붙인다. 건설업 칸(발주자·원수급·현장명·공사종류·공정률·공사금액)에 값이 있으면 건설 전담 과로 찾는다.
  • fill_yoyang_applyfill_form(form_id='F_YOYANG_APPLY') 과 같다.No findings

    Why it is in this group

    • The name "fill_yoyang_apply" says "fill": a word for a change.
    Description, as the server wrote it
    fill_form(form_id='F_YOYANG_APPLY') 과 같다. 칸 이름: name, rrn, address, mobile, phone, accident_datetime(YYYYMMDDhhmm), hire_year/month/day, work_start, work_end, job, claim_kind_accident|disease|commute, worker_type_employee, employer_name, owner_name, workplace_phone, workplace_no(11자리), workplace_address, narrative, police_yes|no, fire_yes|no, insurer_yes|no, witness_name|phone|relation, apply_year|month|day, applicant_name
  • make_seal이름으로 성명인(원형·사각·타원) 또는 법인형(원주 법인명 + 중심 문자 + 하단 부문자) 도장 PNG(투명 배경)를 만들어 base64 로 돌려준다.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    이름으로 성명인(원형·사각·타원) 또는 법인형(원주 법인명 + 중심 문자 + 하단 부문자) 도장 PNG(투명 배경)를 만들어 base64 로 돌려준다. 본인 또는 명의자 동의가 있는 이름만 쓴다. 등록 인감을 흉내 내는 용도가 아니다(사용인감 성격). fill_form 의 stamp.name 으로 바로 찍을 수도 있다.
Only reads 4Show 4 read-only tools
  • find_labor_office사업장 주소로 관할 지방고용노동관서(「고용노동부와 그 소속기관 직제 시행규칙」 별표 1 관할 구역)와 산업재해조사표를 받는 부서의 전화·팩스·부서 주소·출처(고용노동부 누리집 관서 화면)·확인방법(공식 직접 확인 / 두 리서치 일치 / 단일 출처 / 미확인)을 돌려준다.No findings

    Why it is in this group

    • The name "find_labor_office" says "find": a word for reading.
    Description, as the server wrote it
    사업장 주소로 관할 지방고용노동관서(「고용노동부와 그 소속기관 직제 시행규칙」 별표 1 관할 구역)와 산업재해조사표를 받는 부서의 전화·팩스·부서 주소·출처(고용노동부 누리집 관서 화면)·확인방법(공식 직접 확인 / 두 리서치 일치 / 단일 출처 / 미확인)을 돌려준다. 근로복지공단이 아니다. status: CONFIRMED(관서 하나) / CANDIDATES(시도가 빠져 같은 이름 시군구가 여럿이거나 칠곡군 석적읍처럼 법령이 읍·리 단위로 가르는데 주소에 그 단위가 없음 — 하나로 추정하지 않는다) / NOT_FOUND. 지방청 직할 구역은 접수 과가 확정되지 않아 산재예방감독과(기본)와 광역산재예방감독과(보조) 번호를 함께 주고 confirm_before_submit='제출 전 전화 확인 권장'을 붙인다. 관서 화면에서 직접 확인하지 못한 팩스(여수지청 0503-8803-0638, 단일 출처)는 fax_check='확인 필요'와 같은 표시·확인방법을 낸다. labor_office_value 는 서식 「( )지방고용노동청장(지청장) 귀하」 괄호 값 제안이다(칸에 자동으로 넣지 않는다). 팩스를 보내지 않는다. 직원 성명은 없다. 입력을 저장하지 않는다. 데이터 확인일은 data.checked_at.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_accident_report_guide산업재해조사표(산업안전보건법 시행규칙 별지 제30호서식, 관할 지방고용노동관서 제출)의 제출 의무·기한(발생일부터 1개월)·근로자대표 확인·중대재해 즉시 보고·과태료(시행령 별표 35), 칸별 작성법, 서술 칸(재해발생 개요·원인·재발방지 계획)의 요소·점검표·서식 작성예시, 업종·직업 분류코드 찾는 곳, 자주 틀리는 것…No findings

    Why it is in this group

    • The name "get_accident_report_guide" says "get": a word for reading.
    Description, as the server wrote it
    산업재해조사표(산업안전보건법 시행규칙 별지 제30호서식, 관할 지방고용노동관서 제출)의 제출 의무·기한(발생일부터 1개월)·근로자대표 확인·중대재해 즉시 보고·과태료(시행령 별표 35), 칸별 작성법, 서술 칸(재해발생 개요·원인·재발방지 계획)의 요소·점검표·서식 작성예시, 업종·직업 분류코드 찾는 곳, 자주 틀리는 것, 제출 경로를 근거·확인일과 함께 돌려준다. 문장은 쓰지 않는다 — 호출한 AI 가 사업장이 준 사실로 쓴다. workplace_address 를 주면 관할 관서·접수 부서·전화·팩스 찾기 결과(find_labor_office 와 같은 내용)를 labor_office_lookup 으로 붙인다. 입력을 저장하지 않는다.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_form_catalog근로복지공단 서식자료실에서 받은 산재보험 서식 13종과, 법제처에서 받은 산업재해조사표(산업안전보건법 시행규칙 별지 제30호서식 — 근로복지공단이 아니라 관할 지방고용노동관서에 내는 서식)의 파일명·개정일·sha256·출처 URL 과, 지금 채울 수 있는 서식(fillable)과 그 칸 이름(slots)·칸 설명(slot…Reads text others writeNo findings

    Why it is in this group

    • The name "get_form_catalog" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    근로복지공단 서식자료실에서 받은 산재보험 서식 13종과, 법제처에서 받은 산업재해조사표(산업안전보건법 시행규칙 별지 제30호서식 — 근로복지공단이 아니라 관할 지방고용노동관서에 내는 서식)의 파일명·개정일·sha256·출처 URL 과, 지금 채울 수 있는 서식(fillable)과 그 칸 이름(slots)·칸 설명(slot_labels, 서식 원문 글자)·도장 자리 이름(stamps). form_id 를 주면 그 서식만. fill_form 전에 이것으로 칸을 고른다.
  • list_required_forms산재 보상 청구(요양·휴업·간병료이송비보조기·장해·유족·미지급·추가상병·재요양·본인부담치료비)에 필요한 서식(REQUIRED/CONDITIONAL/NOT_APPLICABLE)·첨부(PROVIDED/MISSING/SUBSTITUTABLE)·근거 조문·절차 안내·아직 답해야 할 질문을 돌려준다.No findings

    Why it is in this group

    • The name "list_required_forms" says "list": a word for reading.
    Description, as the server wrote it
    산재 보상 청구(요양·휴업·간병료이송비보조기·장해·유족·미지급·추가상병·재요양·본인부담치료비)에 필요한 서식(REQUIRED/CONDITIONAL/NOT_APPLICABLE)·첨부(PROVIDED/MISSING/SUBSTITUTABLE)·근거 조문·절차 안내·아직 답해야 할 질문을 돌려준다. 입력을 저장하지 않는다. READY_TO_SUBMIT 은 제출 가능이지 승인이 아니다.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "check_accident_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "fill": a word for a change.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.6.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http sanjae-apply https://sanjae-apply.vercel.app/api/mcp/mcp
claude mcp add --transport http sanjae-apply https://sanjae-apply.vercel.app/api/mcp/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__sanjae-apply__list_required_forms",
      "mcp__sanjae-apply__get_form_catalog",
      "mcp__sanjae-apply__get_accident_report_guide",
      "mcp__sanjae-apply__find_labor_office"
    ],
    "ask": [
      "mcp__sanjae-apply__fill_form",
      "mcp__sanjae-apply__check_accident_report",
      "mcp__sanjae-apply__make_seal",
      "mcp__sanjae-apply__fill_yoyang_apply"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as sanjae-apply. Review it before you use it.

Capability tags behind 1 rule
  • mcp__sanjae-apply__get_form_catalog untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.seojaehong/sanjae-apply/verify?hash=1d8e35e43b48ac0b87a49ab53fe3a91c19b30898a73ff88cc192d32467304b5a" | jq -e '.changed == false'

Pinned hash 1d8e35e43b48, from Nov 4, 2026, 15:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.seojaehong/sanjae-apply/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.seojaehong/sanjae-apply
[![anlyon.dev](https://anlyon.dev/badge/io.github.seojaehong/sanjae-apply.svg)](https://anlyon.dev/servers/io.github.seojaehong/sanjae-apply)

Source: MCP Registry · repository. Synced Nov 4, 2026, 15:18 UTC.