Skip to content
MCP ThesaurusMCP Thesaurus

contract compass

CommunityIncomplete39/100Claim

streamable-httpMITupdated 22d ago

Korean public procurement law MCP server & web service โ€” a deterministic rule engine for contract-method decisions (94 rules encoded directly from statutes), a searchable corpus of Korean procurement statutes/regulations/adjudication tables, and live court precedents & authoritative interpretations from law.go.kr. All MCP tools are LLM-free: your AI client does the reasoning, this server provides verifiable legal grounds. Remote endpoint: https://contract.sallim.app/mcp

SourceWebsite

What can you do with contract compass?

๊ณ„์•ฝ๋‚˜์นจ๋ฐ˜ ๐Ÿงญ (Contract Compass)

Glama MCP server

Korean public procurement law MCP server & web service โ€” a deterministic rule engine for contract-method decisions (94 rules encoded directly from statutes), a searchable corpus of Korean procurement statutes/regulations/adjudication tables, and live court precedents & authoritative interpretations from law.go.kr. All MCP tools are LLM-free: your AI client does the reasoning, this server provides verifiable legal grounds. Remote endpoint: https://contract.sallim.app/mcp

๊ณต๊ณต๊ณ„์•ฝ ๋ฐฉ๋ฒ• ๊ฒฐ์ • ๋„์šฐ๋ฏธ โ€” ๊ตญ๊ฐ€๊ณ„์•ฝ๋ฒ•ยท์ง€๋ฐฉ๊ณ„์•ฝ๋ฒ• ๋“ฑ ๊ณต๊ณต๊ณ„์•ฝ ๋ฒ•๋ น์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ๋ฐœ์ฃผํ•˜๋ ค๋Š” ๊ณ„์•ฝ(๊ณต์‚ฌยท์šฉ์—ญยท๋ฌผํ’ˆ)์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณ„์•ฝ๋ฐฉ๋ฒ•(์ž…์ฐฐยท์ˆ˜์˜๊ณ„์•ฝยท์ œํ•œ๊ฒฝ์Ÿ ๋“ฑ)๊ณผ ๋ฒ•๋ น ๊ทผ๊ฑฐ๋ฅผ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ์•ˆ๋‚ดํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์›น์„œ๋น„์Šค + MCP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

  • ๊ฒฐ์ • ์œ„์ €๋“œ: ๊ณ„์•ฝ์œ ํ˜•ยท์ถ”์ •๊ฐ€๊ฒฉยท์กฐ๊ฑด์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฃฐ์—”์ง„(๋ฒ•๋ น ์ง์ ‘ ์ธ์ฝ”๋”ฉ 94๋ฃฐ)์ด ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณ„์•ฝ๋ฐฉ๋ฒ•ยท๋‚™์ฐฐ์ž ๊ฒฐ์ •๋ฐฉ๋ฒ•ยท์ ๊ฒฉ์‹ฌ์‚ฌ ๊ธฐ์ค€์„ ํ›„๋ณด์™€ ๊ทผ๊ฑฐ ์กฐ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ œ์‹œ
  • ๋ฒ•๋ น ์ฑ—๋ด‡(Ask): ๊ตญ๊ฐ€๊ณ„์•ฝ๋ฒ•๋ นยท๊ณ„์•ฝ์˜ˆ๊ทœยท๊ฐ์‚ฌ์› ๊ณต๊ณต๊ณ„์•ฝ ์‹ค๋ฌด๊ฐ€์ด๋“œ ๋“ฑ ๊ณต๊ฐœ ์ฝ”ํผ์Šค ๊ธฐ๋ฐ˜ RAG ๊ฒ€์ƒ‰ + ์ธ์šฉ ๋‹ต๋ณ€ (์›น UI ์ „์šฉ)
  • MCP ์„œ๋ฒ„(๋ฌดLLM): ClaudeยทChatGPTยทCursor ๋“ฑ AI ์—์ด์ „ํŠธ๊ฐ€ ๋ฃฐ์—”์ง„ ํŒ์ •, ๋ฒ•๋ น ์กฐ๋ฌธ, ์˜ˆ๊ทœยท์ ๊ฒฉ์‹ฌ์‚ฌ ์„ธ๋ถ€๊ธฐ์ค€(๋ณ„ํ‘œ ํฌํ•จ), **ํŒ๋ก€ยท๋ฒ•๋ นํ•ด์„๋ก€(law.go.kr ์‹ค์‹œ๊ฐ„)**๋ฅผ ์ง์ ‘ ์กฐํšŒ
  • ๊ธฐ๊ด€์œ ํ˜• ์ง€์›: ๊ตญ๊ฐ€๊ธฐ๊ด€ / ์ง€๋ฐฉ์ž์น˜๋‹จ์ฒด / ๊ณต๊ธฐ์—…ยท์ค€์ •๋ถ€๊ธฐ๊ด€ ํ”„๋กœํŒŒ์ผ
  • ๊ฒฐ์ •๋ก  ์šฐ์„ : ๊ณ„์•ฝ๋ฐฉ๋ฒ• ๊ฒฐ์ •์€ LLM์ด ์•„๋‹Œ ๋ฃฐ์—”์ง„์ด ์ˆ˜ํ–‰ โ€” ๊ฐ™์€ ์ž…๋ ฅ์—” ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ. LLM์€ ์›น ์ฑ—๋ด‡ยท์„ค๋ช… ์ƒ์„ฑ์—๋งŒ ์‚ฌ์šฉ(ํ‚ค ์—†์ด๋„ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋™์ž‘)

โš ๏ธ ๋ฉด์ฑ…: ์ด ์„œ๋น„์Šค๋Š” ์ •๋ณด ์ œ๊ณต ๋ชฉ์ ์ด๋ฉฐ ๋ฒ•์  ์ž๋ฌธยท์œ ๊ถŒํ•ด์„์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ๊ฒฉ์‹ฌ์‚ฌ ํ†ต๊ณผ์ ์ˆ˜ยท๋‚™์ฐฐํ•˜ํ•œ์œจยท๊ฐ์ข… ํ•œ๋„๋Š” ๋ฐœ์ฃผ๊ธฐ๊ด€๋ณ„ ์„ธ๋ถ€๊ธฐ์ค€๊ณผ ๋ฒ•๋ น ๊ฐœ์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‹ค์ œ ๋ฐœ์ฃผ ์ „ ๋ฐ˜๋“œ์‹œ ์†Œ์† ๊ธฐ๊ด€ ๊ณ„์•ฝ ๋ถ€์„œ์™€ ํ˜„ํ–‰ ๋ฒ•๋ น์„ ํ™•์ธํ•˜์„ธ์š”.

MCP ์„œ๋ฒ„ ์‚ฌ์šฉํ•˜๊ธฐ

์›๊ฒฉ ์—”๋“œํฌ์ธํŠธ(Streamable HTTP): https://contract.sallim.app/mcp ๋ฌด๋ฃŒ: IP๋‹น 50์ฝœ/์ผ (์ „ ๋„๊ตฌ) ยท ์œ ๋ฃŒ ํ‚ค: ํ•œ๋„ ์ƒํ–ฅ โ€” ์š”๊ธˆ ์•ˆ๋‚ด

๋„๊ตฌ ๋ชฉ๋ก (11์ข…) โ€” Tools / ใƒ„ใƒผใƒซ

์•„๋ž˜ ํ‘œ๋Š” ๋ผ์ด๋ธŒ ์„œ๋ฒ„์˜ tools/list ์‘๋‹ต์—์„œ ๊ทธ๋Œ€๋กœ ๋ฝ‘์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์‹ค์ธก 2026-08-18, 11์ข… ์ „์ˆ˜). MCP ๋””๋ ‰ํ† ๋ฆฌยทํฌ๋กค๋Ÿฌ๊ฐ€ ์ด ์ €์žฅ์†Œ๋ฅผ ์ •์ ์œผ๋กœ ์ฝ์„ ๋•Œ ๋„๊ตฌ ์ด๋ฆ„์„ ์ฐพ๋Š” ์ž๋ฆฌ์ด๋ฏ€๋กœ, ์„œ๋ฒ„์˜ ์‹ค์ œ ๋„๊ตฌ ๋ชฉ๋ก๊ณผ 1:1๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค(๋ถˆ์ผ์น˜๋Š” ํšŒ๊ท€๋กœ ์ทจ๊ธ‰). ๋ˆ„๊ตฌ๋‚˜ ์ง์ ‘ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

curl -s -X POST https://contract.sallim.app/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# โ†’ decide_contract_method, search_law, search_references, search_cases, get_case,
#   get_law_article, get_law_article_asof, estimate_delay_penalty,
#   delay_exemption_guide, check_price_adjustment, report_issue  (11 tools)
๋„๊ตฌ ์„ค๋ช… LLM
decide_contract_method ๋ฃฐ์—”์ง„ ๊ฒฐ์ •๋ก  ํŒ์ • โ€” ๊ณ„์•ฝ๋ฐฉ๋ฒ• ํ›„๋ณดยท๋ฒ•๋ น ๊ทผ๊ฑฐยท์ ๊ฒฉ์‹ฌ์‚ฌ ํŒŒ๋ผ๋ฏธํ„ฐ โœ—
search_law ๋ฒ•๋ น ์กฐ๋ฌธ ๊ฒ€์ƒ‰(ํ‚ค์›Œ๋“œยท์กฐ๋ฌธ๋ฒˆํ˜ธยท๋ถ€๋ถ„๋งค์น˜ยท์‹œ๋งจํ‹ฑ ํด๋ฐฑ) โœ—
get_law_article ์กฐ๋ฌธ ์›๋ฌธ ์ „์ฒด ์กฐํšŒ (ํ˜„ํ–‰) โ€” ๋ฒ•๋ฅ  ์ž์ฒด์˜ ๋ฏธ์ •๋น„ ์ธ์šฉ์€ notes๋กœ ๊ฒฝ๊ณ  โœ—
get_law_article_asof ํŠน์ • ์‹œ์ ์— ์‹œํ–‰ ์ค‘์ด๋˜ ์กฐ๋ฌธ โ€” ๊ณผ๊ฑฐ ๊ณ„์•ฝยท์ฒ˜๋ถ„ยท๊ฐ์‚ฌ ๋Œ€์‘(ํ–‰์œ„์‹œ๋ฒ•) โœ—
search_references ์ „ ์ฝ”ํผ์Šค ํ†ตํ•ฉ ๊ฒ€์ƒ‰ โ€” ๊ณ„์•ฝ์˜ˆ๊ทœยท์กฐ๋‹ฌ์ฒญ/ํ–‰์•ˆ๋ถ€ ์ ๊ฒฉ์‹ฌ์‚ฌ ์„ธ๋ถ€๊ธฐ์ค€(๋ณ„ํ‘œ)ยท์‹ค๋ฌด๊ฐ€์ด๋“œ โœ—
search_cases ํŒ๋ก€ยท๋ฒ•๋ นํ•ด์„๋ก€ ๊ฒ€์ƒ‰ (law.go.kr ์‹ค์‹œ๊ฐ„ โ€” ํ•ญ์ƒ ํ˜„ํ–‰) โœ—
get_case ํŒ์‹œ์‚ฌํ•ญยทํŒ๊ฒฐ์š”์ง€ยท์ฐธ์กฐ์กฐ๋ฌธ / ์งˆ์˜์š”์ง€ยทํšŒ๋‹ตยท์ด์œ  ๋ณธ๋ฌธ โœ—
estimate_delay_penalty ์ง€์ฒด์ƒ๊ธˆยท์ง€์—ฐ๋ฐฐ์ƒ๊ธˆ ์‚ฐ์ • โ€” ๋ฒ•์ • ์š”์œจยท๊ธฐ์ค€๊ธˆ์•กยท30% ํ•œ๋„ ๊ฒฐ์ •๋ก  ์ ์šฉ(๊ตญ๊ฐ€/์ง€๋ฐฉ ์š”์œจ์ด ๋‹ค๋ฅด๋‹ค) โœ—
delay_exemption_guide ์ง€์ฒด์ผ์ˆ˜ ๋ถˆ์‚ฐ์ž…(๋ฉด์ฑ…) ์‚ฌ์œ  ์ง€๋„ โ€” ์˜ˆ๊ทœ ์‚ฌ์œ ยทํ™•์ธํ•  ์‚ฌ์‹คยท๊ธฐ์žฌ๋ถ€/ํ–‰์•ˆ๋ถ€ ํšŒ์‹  ์„ ๋ก€ โœ—
check_price_adjustment ๋ฌผ๊ฐ€๋ณ€๋™ ๊ณ„์•ฝ๊ธˆ์•ก ์กฐ์ • โ€” 90์ผยท3%ยท๋‹จํ’ˆ ๋ฌธํ„ฑ(๊ตญ๊ฐ€ 15%/์ง€๋ฐฉ 10%) ํŒ์ • + ์กฐ์ •๊ธˆ์•กยท์„ ๊ธˆ๊ณต์ œ ์‚ฐ์‹ โœ—
report_issue ์˜ค๋ฅ˜ยท๊ฐœ์„  ์ œ๋ณด(์˜ค์ธ์šฉยท๊ฐœ์ • ๋ฏธ๋ฐ˜์˜ ๋“ฑ) โ€” ์šด์˜ ๊ฒ€ํ†  ํŒŒ์ดํ”„๋ผ์ธ ์ง๊ฒฐ โœ—

ํด๋ผ์ด์–ธํŠธ ์„ค์ •:

# Claude Code
claude mcp add --transport http contract-compass https://contract.sallim.app/mcp
// Cursor (.cursor/mcp.json) โ€” Streamable HTTP ์ง์ ‘ ์ง€์›
{ "mcpServers": { "contract-compass": { "url": "https://contract.sallim.app/mcp" } } }
// Claude Desktop (claude_desktop_config.json) โ€” mcp-remote ๊ฒฝ์œ 
{ "mcpServers": { "contract-compass": {
    "command": "npx", "args": ["-y", "mcp-remote", "https://contract.sallim.app/mcp"] } } }

ChatGPT: Settings โ†’ Connectors โ†’ Developer mode์—์„œ ์œ„ URL์„ ์ปค๋„ฅํ„ฐ๋กœ ์ถ”๊ฐ€.

์„ค์น˜ํ–ˆ์œผ๋ฉด AI์—๊ฒŒ ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด 30์ดˆ ์•ˆ์— ํ™•์ธํ•˜์„ธ์š” โ€” "๊ตญ๊ฐ€๊ธฐ๊ด€์ด 2,000๋งŒ์›์งœ๋ฆฌ ๋ฌผํ’ˆ์„ ์‚ฌ๋ ค๋Š”๋ฐ ์–ด๋–ค ๊ณ„์•ฝ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ์–ด? ๊ทผ๊ฑฐ ์กฐ๋ฌธ๋„." ์†Œ์•ก์ˆ˜์˜๊ณ„์•ฝ๊ณผ ๊ตญ๊ฐ€๊ณ„์•ฝ๋ฒ• ์‹œํ–‰๋ น ์ œ26์กฐ ์ œ1ํ•ญ ์ œ5ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

๋„๊ตฌ ๋ช…์„ธยท์•„ํ‚คํ…์ฒ˜ยทํ•œ๋„ ์ •์ฑ… ์ƒ์„ธ๋Š” docs/MCP.md ์ฐธ์กฐ.

ํ‰๊ฐ€์…‹ โ€” ์šฐ๋ฆฌ ํŒ์ •์„ ๋‚จ์ด ๋˜์งš์„ ์ˆ˜ ์žˆ๊ฒŒ

์ด ์„œ๋ฒ„๊ฐ€ ๋ฌด์—‡์„ ๋งžํžˆ๊ณ  ๋ฌด์—‡์„ ๋ชป ๋งžํžˆ๋Š”์ง€๋Š” evaluation.xml์— ๊ณต๊ฐœ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค(20๋ฌธํ•ญ, ๋‹ต์€ ์ „๋ถ€ ์‹ค์ธก๊ฐ’). ์ง€์–ด๋‚ธ ๋ฌธํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค โ€” ๋ฏธ๊ฒ€์ฆ ๋ฌธํ•ญ์€ ํšŒ๊ท€ ๊ฒ€์‚ฌ๋ฅผ ๊ฑฐ์ง“ ์‹คํŒจ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ธฐ๊ณ„ ๊ฒ€์ฆ์€ ๊ฒฐ์ •๋ก  ํšŒ๊ท€ ํ•˜๋„ค์Šค๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค. LLM์„ ์“ฐ์ง€ ์•Š์•„ ๋น„์šฉ ์—†์ด ์žฌํ˜„๋ฉ๋‹ˆ๋‹ค:

python3 tools/mcp_regression.py --endpoint https://contract.sallim.app/mcp
# 28 ์ผ€์ด์Šค ยท exit 0=์ „๋ถ€ PASS / 1=ํšŒ๊ท€ ์กด์žฌ / 2=์„œ๋ฒ„ ๋ฏธ๋„๋‹ฌ

๊ฐ ์ผ€์ด์Šค๋Š” ๊ณผ๊ฑฐ์— ์‹ค์ œ๋กœ ๋ฐœ๊ฒฌยท์ˆ˜๋ฆฌ๋œ ๊ฒฐํ•จ์˜ ํšŒ๊ท€์ž…๋‹ˆ๋‹ค(์‚ญ์ œ๋œ ์กฐ๋ฌธ์„ ๊ทผ๊ฑฐ์ฒ˜๋Ÿผ ๋ฐ˜ํ™˜ํ•˜๋˜ ๋ฌธ์ œ, ์ง€์ž์ฒด ํŒ์ •์— ๊ตญ๊ฐ€ ์ˆ˜์น˜๊ฐ€ ์„ž์ด๋˜ ๋ฌธ์ œ ๋“ฑ). ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋Š” IP๋‹น 50์ฝœ/์ผ์ด๊ณ  ์ด ์Šค์œ„ํŠธ๊ฐ€ 28์ฝœ์„ ์“ฐ๋ฏ€๋กœ ํ•˜๋ฃจ 1ํšŒ๊ฐ€ ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค.

๊ธˆ์•ก๊ตฌ๊ฐ„๋ณ„ ๊ณ„์•ฝ๋ฐฉ๋ฒ•ยท์ˆ˜์˜๊ณ„์•ฝ ์‚ฌ์œ ยท์šฉ์–ด ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€(/g/)์˜ ์ƒ์„ฑยท๊ฒ€์ฆยท๋ฐฐํฌ ์ ˆ์ฐจ๋Š” docs/PROGRAMMATIC_SEO.md ์ฐธ์กฐ โ€” ๋ฃฐ์…‹์—์„œ ํŒŒ์ƒ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€๋ฅผ ์ˆ˜๊ธฐ ํŽธ์ง‘ํ•˜์ง€ ๋ง ๊ฒƒ. ๋กœ์ปฌ stdio ์‹คํ–‰: python3 mcp/server.py (๋“ฑ๋ก: codex mcp add contract-compass -- python3 /path/to/mcp/server.py)

๊ตฌ์„ฑ

backend/    FastAPI โ€” ๋ฃฐ์—”์ง„ยทRAGยทLLM ์—ฐ๋™ (frontend/dist ์ •์  ์„œ๋น™ ํฌํ•จ, :8402)
frontend/   React + TypeScript (Vite) โ€” ์œ„์ €๋“œ UI
mcp/        MCP ์„œ๋ฒ„ โ€” stdio(๋กœ์ปฌ) / Streamable HTTP(:8403, ์›๊ฒฉ) ยท ๋ฌดLLM ๋„๊ตฌ 11์ข…
edge/       Cloudflare Worker (contract-edge) โ€” ์žฅ์•  ํด๋ฐฑ ๊ฒŒ์ดํŠธ ยท law API ์—ฃ์ง€ ์บ์‹œ
rules/      ๊ณ„์•ฝ ๋ฃฐ์…‹ JSON (contract_rulesยทlaw_registry ๋“ฑ) โ† ๊ฒฐ์ •๋ก  ํ•ต์‹ฌ
tools/      ๋ฒ•๋ นยท์˜ˆ๊ทœยท๋ณ„ํ‘œ ์ˆ˜์ง‘/์ธ๋ฑ์‹ฑ ํŒŒ์ดํ”„๋ผ์ธ (law.go.kr Open API) ยท ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€ ์ƒ์„ฑ๊ธฐ
etl/        PDF/DOCX โ†’ ์ฒญํฌ โ†’ ChromaDB ํŒŒ์ดํ”„๋ผ์ธ
docs/       MCP ๋ช…์„ธ ยท ์žฅ์•  ์ „ํ™˜ ๋Ÿฐ๋ถ ยท ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€ ํŒŒ์ดํ”„๋ผ์ธ
scripts/    ์Šคํƒ ๋ฐ”์ด ๋™๊ธฐํ™” ยท ๋ฐ˜์ถœ ์ „ ๊ธฐ๋ฐ€ ๊ฒ€์‚ฌ
tests/      ๋‹จ์œ„ยทํšŒ๊ท€ ํ…Œ์ŠคํŠธ + Ask ์งˆ๋ฌธ๋ฑ…ํฌ

๋น ๋ฅธ ์‹œ์ž‘

# 1) ๋ฐฑ์—”๋“œ ์˜์กด์„ฑ (+ MCP ์„œ๋ฒ„๊นŒ์ง€ ์“ฐ๋ ค๋ฉด mcp/requirements.txt ์ถ”๊ฐ€)
pip install -r backend/requirements.txt

# 2) ํ”„๋ก ํŠธ ๋นŒ๋“œ (Node.js๋Š” ๋นŒ๋“œ ๋•Œ๋งŒ ํ•„์š”)
cd frontend && npm install && npm run build && cd ..

# 3) ํ™˜๊ฒฝ์„ค์ • (์„ ํƒ โ€” LLM ํ‚ค ์—†์ด๋„ ๋™์ž‘)
cp .env.example .env

# 4) ์‹คํ–‰ (rate limiter๋Š” SQLite ๊ณต์œ  โ€” ๋‹ค์ค‘ ์›Œ์ปค ๊ฐ€๋Šฅ, ์ฝ”์–ด ์ˆ˜์— ๋งž์ถฐ ์กฐ์ •)
python3 -m uvicorn backend.main:app --host 0.0.0.0 --port 8402

RAG ์ฝ”ํผ์Šค ๊ตฌ์ถ• (์„ ํƒ)

๋ฒ•๋ น ์ฑ—๋ด‡ยท๊ทผ๊ฑฐ ๊ฒ€์ƒ‰์„ ์“ฐ๋ ค๋ฉด ๊ณต๊ฐœ ์ฝ”ํผ์Šค๋ฅผ ์ธ๋ฑ์‹ฑํ•ฉ๋‹ˆ๋‹ค:

# ๋ฒ•๋ น XML์„ tools/laws/ ์— ์ค€๋น„(law.go.kr Open API โ€” tools/lib/lawgo.py ํ—ฌํผ ์ฐธ์กฐ) ํ›„ ์ธ๋ฑ์‹ฑ
python3 tools/index_laws.py            # โ†’ law_articles ์ปฌ๋ ‰์…˜

# ๊ณ„์•ฝ์˜ˆ๊ทœ(ํ–‰์ •๊ทœ์น™) ์ˆ˜์ง‘ยท์ธ๋ฑ์‹ฑ
python3 tools/fetch_admin_rules.py && python3 tools/parse_admin_rules.py
python3 tools/index_admin_rules.py     # โ†’ admin_rules ์ปฌ๋ ‰์…˜

# ๋ฒ•๋ น ๋ณ„ํ‘œยท์ ๊ฒฉ์‹ฌ์‚ฌ ์„ธ๋ถ€๊ธฐ์ค€ ์ „๋ฌธ PDF (๋ถ€์ •๋‹น ์ œ์žฌ๊ธฐ์ค€ยทํ•˜์ž๋‹ด๋ณด๊ธฐ๊ฐ„ยท๋‚™์ฐฐํ•˜ํ•œ์œจ ๋ณ„ํ‘œ)
python3 tools/fetch_law_tables.py

# ๊ณต๊ฐœ ๊ฐ„ํ–‰๋ฌผ(๊ฐ์‚ฌ์› ๊ณต๊ณต๊ณ„์•ฝ ์‹ค๋ฌด๊ฐ€์ด๋“œ ๋“ฑ)์„ data/source_docs/ ์— ๋„ฃ๊ณ 
python3 tools/reindex_qa.py            # โ†’ public_guides ์ปฌ๋ ‰์…˜

# BM25 ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ธ๋ฑ์Šค
python3 tools/build_bm25_index.py

์ฝ”ํผ์Šค๊ฐ€ ์—†์œผ๋ฉด ์œ„์ €๋“œ(๋ฃฐ์—”์ง„)๋Š” ์ •์ƒ ๋™์ž‘ํ•˜๊ณ , RAG ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋งŒ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ๋ก€ยท๋ฒ•๋ นํ•ด์„๋ก€ ์กฐํšŒ๋Š” ์ฝ”ํผ์Šค์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ law.go.kr Open API ํ‚ค(LAW_API_KEY)๋งŒ ์žˆ์œผ๋ฉด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ถœ์ฒ˜ (์ „๋ถ€ ๊ณต๊ฐœ ์ž๋ฃŒ)

  • ๋ฒ•๋ นยท์‹œํ–‰๋ นยท์‹œํ–‰๊ทœ์น™ยท๋ณ„ํ‘œยทํŒ๋ก€ยท๋ฒ•๋ นํ•ด์„๋ก€: ๊ตญ๊ฐ€๋ฒ•๋ น์ •๋ณด์„ผํ„ฐ Open API (์ถœ์ฒ˜ํ‘œ์‹œ)
  • ๊ณ„์•ฝ์˜ˆ๊ทœ(์ ๊ฒฉ์‹ฌ์‚ฌ๊ธฐ์ค€ยท์ •๋ถ€ ์ž…์ฐฐยท๊ณ„์•ฝ ์ง‘ํ–‰๊ธฐ์ค€ ๋“ฑ): ๊ธฐํš์žฌ์ •๋ถ€ ํ–‰์ •๊ทœ์น™
  • ์ ๊ฒฉ์‹ฌ์‚ฌ ์„ธ๋ถ€๊ธฐ์ค€: ์กฐ๋‹ฌ์ฒญยทํ–‰์ •์•ˆ์ „๋ถ€ ํ–‰์ •๊ทœ์น™
  • ๊ณต๊ณต๊ณ„์•ฝ ์‹ค๋ฌด๊ฐ€์ด๋“œ: ๊ฐ์‚ฌ์› ๊ณต๊ฐœ ๊ฐ„ํ–‰๋ฌผ
  • ๋ฌผํ’ˆ๋ถ„๋ฅ˜ยท์ค‘์†Œ๊ธฐ์—…์ž๊ฐ„ ๊ฒฝ์Ÿ์ œํ’ˆ: ์กฐ๋‹ฌ์ฒญยท์ค‘์†Œ๋ฒค์ฒ˜๊ธฐ์—…๋ถ€ ๊ณ ์‹œ

๋ผ์ด์„ ์Šค

MIT