korean-firefighter-law-mcp
v0.8.0 ยท ์๋ฐฉ๊ธฐ๊ด ๊ฒํ ยท์๋ฒ์ด์์ฉ ยท ๊ณต๊ฐ ์ ์ฅ์ (MIT)
๊ธฐ๊ด ๋์
์ ๊ฒํ ยท์๋ฒ์ด์์ ์ ์ ๋ก ๊ณต๊ฐํฉ๋๋ค. ์ด์ ์น์ธ ์ ํ์ธ์ด ํ์ํ ํญ๋ชฉ์
๊ธฐ์ค.md 6์ฅ์ ๊ทธ๋๋ก ๋จ๊ฒจ ๋์์ต๋๋ค.
์๋ฐฉ์ฒญ ๊ณต๊ณต๋ฐ์ดํฐ์ ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด๋ฅผ ์กฐํํด AI๊ฐ ์๋ฐฉ ๋ฒ๋ นยทํ์ฌํต๊ณยท๊ตํต์ฌ๊ณ ๊ตฌ๊ธํต๊ณยท
ํน์ ์๋ฐฉ๋์๋ฌผยท์๋ฐฉ์์คยท์ํ๋ฌผ ์ง๋ฌธ์ ๊ณต์ ์๋ฃ๋ฅผ ๊ทผ๊ฑฐ๋ก ๋ตํ๋๋ก ์ฐ๊ฒฐํ๋ MCP ์๋ฒ์
๋๋ค.
์ด ์ ์ฅ์์ ๋ชฉ์ ์ ์๋ฐฉ๊ธฐ๊ด์ด ์ฝ๋๋ฅผ ์ง์ ๊ฒํ ํ ๋ค ๋ค์ ๋ ๋ฐฉ์ ์ค ๊ธฐ๊ด ํ๊ฒฝ์ ๋ง๋ ๋ฐฉ์์ผ๋ก
์๋ฒ ์ ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ์
๋๋ค. ์๋ฐฉ์ฒญ ๋๋ ๋ฒ์ ์ฒ์ ๊ณต์ ์ ํ์ ์๋๋๋ค.
๋์
๋ฐฉ์ ๋ ๊ฐ์ง
| ๋ฐฉ์ | ์ฌ์ฉ์ ๊ฒฝํ | ๊ธฐ๊ด์ด ์ด์ํ ๊ฒ | ์๋ด ๋ฌธ์ |
|---|
| ๊ธฐ๊ด ์๋ฒํ | ๋ธ๋ผ์ฐ์ ์ฑํ
๋๋ ๊ธฐ๊ด ์๋น์ค๊ฐ API ํธ์ถ | ์๋ฒ 1๋, ์ ๋ถ API ํค, ์ ํํ LLM API ํค | DEPLOY.md |
| ๊ฐ๋ณ PC ์ค์นํ | PC์ stdio ์ง์ AI ํด๋ผ์ด์ธํธ์์ ๋๊ตฌ ์ฌ์ฉ | ๊ฐ PC์ ํ๋ก๊ทธ๋จ๊ณผ ์ ๋ถ API ํค | LOCAL_SETUP.md |
๊ธฐ๊ด ์๋ฒํ์ GET / ์น ์ฑํ
, POST /api/chat, POST /mcp๋ฅผ ์ ๊ณตํฉ๋๋ค. ์น ์ฑํ
๊ณผ /api/chat์
LLM์ด ์ง๋ฌธ์ ๊ณต์ API ํธ์ถ ๊ณํ(1~4๊ฑด)์ผ๋ก ๋ฐ๊พธ๊ณ ์กฐํ ์๋ฃ๋ก ๋ต๋ณ์ ์์ฑํ๋ฏ๋ก LLM ์ค์ ์ด
ํ์์
๋๋ค. LLM์ด ์์ผ๋ฉด ์ฑ๋ด์ 503์ผ๋ก ๋นํ์ฑํ๋๊ณ /mcp๋ง ๋์ํฉ๋๋ค. ๋ต๋ณ์ ์กฐํ ์๋ฃ์ ์๋
๋ด์ฉ๋ง์ผ๋ก ๊ตฌ์กฐํ๋ ์กด๋๋ง๋ก ์์ฑ๋๋ฉฐ ์ฃผ์ฅยท์์น ๋ฌธ์ฅ์ ๊ทผ๊ฑฐ ์๋ฃ ๋ฒํธ([์๋ฃ N])๋ฅผ ์ธ์ฉํฉ๋๋ค(์๋ฒ๊ฐ
์ธ์ฉ ์ ํจ์ฑ ๊ฒ์ฆ). ์๋ฃ๊ฐ ๋ถ์กฑํ๋ฉด 1๋ผ์ด๋์ ํํด ์ค์ค๋ก ์ถ๊ฐ ์กฐํํ๊ณ , ๊ทธ๋๋ ์๋ ๋ฐ์ดํฐ๋ ๊ณต์
์๋ด์ฒ๋ฅผ ๊ถํฉ๋๋ค. ๊ณต์ ์กฐํ ์๋ฌธ์ ์๋ต์ sources ํ๋๋ก ํญ์ ํจ๊ป ์ ๊ณต๋๋ฉฐ ํ๋ฉด์์๋ ์ ์ด์์ผ๋ก
ํ์๋ฉ๋๋ค.
๊ฐ๋ณ PC ์ค์นํ์ ์ค์ ์๋ฒ์ ๋ณ๋ LLM API ํค๊ฐ ํ์ ์์ต๋๋ค. ์ฐ๊ฒฐํ AI ํด๋ผ์ด์ธํธ๊ฐ ๋ต๋ณ์ ๋ง๋ค๊ณ ์ด
ํ๋ก๊ทธ๋จ์ stdio MCP ๋๊ตฌ๋ก ๊ณต์ API๋ฅผ ์กฐํํฉ๋๋ค. ChatGPT๋ ๋ก์ปฌ MCP ์๋ฒ์ ์ง์ ์ฐ๊ฒฐํ์ง ์์ผ๋ฏ๋ก
ChatGPT๋ฅผ ์ฌ์ฉํ ๋๋ ๊ธฐ๊ด ์๋ฒํ์ ์๊ฒฉ MCP ๋๋ ์น/API ๋ฐฉ์์ ๊ฒํ ํด์ผ ํฉ๋๋ค.
์ค์น ๋ฐฉ๋ฒ ๋ ๊ฐ์ง
์ด ํ๋ก๊ทธ๋จ์ npm์ ๊ฒ์๋์ด ์์ด ๋ด๋ ค๋ฐ๊ธฐยท๋น๋ ์์ด ๋ฐ๋ก ์คํํ ์ ์์ต๋๋ค.
npx korean-firefighter-law-mcp
AI ํด๋ผ์ด์ธํธ์ MCP ์ค์ ์๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฑ๋กํฉ๋๋ค. ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
{
"mcpServers": {
"firefighter-law": {
"command": "npx",
"args": ["-y", "korean-firefighter-law-mcp"],
"env": {
"DATA_GO_KR_KEY": "๋ฐ๊ธ๋ฐ์ ํค",
"LAW_OC": "๋ฐ๊ธ๋ฐ์ OC"
}
}
}
}
์ฝ๋๋ฅผ ์ง์ ๊ฒํ ํ๊ฑฐ๋ ์์ ํด์ ์ด์ํ๋ ค๋ฉด ์ ์ฅ์๋ฅผ ๋ด๋ ค๋ฐ์ ๋น๋ํฉ๋๋ค. ๊ธฐ๊ด ์ฌ์ฌยท๋ด๋ถ ๋ฐฐํฌ์๋
์ด ๋ฐฉ์์ ๊ถํฉ๋๋ค. ์ ์ฐจ๋ LOCAL_SETUP.md์ DEPLOY.md์ ์์ต๋๋ค.
MCP ๊ณต์ ๋ ์ง์คํธ๋ฆฌ์๋
io.github.ssd7830-cmyk/korean-firefighter-law-mcp๋ก ๋ฑ์ฌ๋์ด ์์ต๋๋ค.
์ ๊ณต ๋๊ตฌ 11๊ฐ
| ๋๊ตฌ | ๋ฒ์ | ๊ณต์ ๋ฐ์ดํฐ ์ถ์ฒ |
|---|
search_fire_stats | ๋ ์ง๋ณ ํ์ฌ ์ ์ยท์งํยท์ค์ธยท์์ฒด์งํ ํํฉ | ์๋ฐฉ์ฒญ ํ์ฌ์ ๋ณด์๋น์ค |
get_ems_stats | ์๋๋ณธ๋ถยท์๋ฐฉ์๋ณ ๊ตํต์ฌ๊ณ ๊ตฌ๊ธํ๋ ํต๊ณ | ์๋ฐฉ์ฒญ ๊ตฌ๊ธํต๊ณ์๋น์ค |
search_fire_building | ์๋ยท๊ฑด๋ฌผ๋ช
ยท์ฌ์ฉ์น์ธ์ฐ๋๋ณ ํน์ ์๋ฐฉ๋์๋ฌผ ๊ฒ์ | ์๋ฐฉ์ฒญ ํน์ ์๋ฐฉ๋์๋ฌผ์ ๋ณด |
get_building_facilities | ํน์ ์๋ฐฉ๋์๋ฌผ์ ์๋ฐฉ์์ค ํํฉ | ์๋ฐฉ์ฒญ ์๋ฐฉ์์ค์ ๋ณด |
search_fire_law | ์๋ฐฉ ๊ด๊ณ ๋ฒ๋ น ์ด๋ฆยท๋ณธ๋ฌธ ๊ฒ์ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
get_fire_law_text | ๋ฒ๋ น ์กฐ๋ฌธ ์ ๋ฌธ ์กฐํ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
get_fire_law_annex | ์ํ๋ น ๋ฑ ๋ฒ๋ น ๋ณํ ์๋ฌธยทํค์๋ ์กฐํ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
search_fire_precedents | ์๋ฐฉ ๊ด๋ จ ํ๋ก ๊ฒ์ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
search_fire_admin_rules | ํ์ ๊ท์นยทํ์ฌ์์ ๊ธฐ์ค(NFPCยทNFTC) ๊ฒ์ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
get_fire_admin_rule_text | NFPCยทNFTC ํ์ ๊ท์น ์๋ฌธยท์ ์กฐํ | ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด |
search_hazmat | ๋ฌผ์ง๋ช
ยทCASยทUN๋ฒํธ๋ณ ์ํ๋ฌผ ์ ๋ณด | ์๋ฐฉ์ฒญ ๊ตญ๊ฐ์ํ๋ฌผ์ ๋ณด |
๋ฒ๋ น ์ฝ์นญ(ํ์ฌ์๋ฐฉ๋ฒยท์๋ฐฉ์์ค๋ฒยท์ํ๋ฌผ๋ฒยท119๋ฒ ๋ฑ)์ ์ ์ ๋ช
์นญ์ผ๋ก ๋ฐ๊พธ๋ฉฐ, ๋ฒ๋ นยทํ์ ๊ท์น ์ด๋ฆ
๊ฒ์์ด 0๊ฑด์ด๋ฉด ๋ณธ๋ฌธ ๊ฒ์์ผ๋ก ์ ํํฉ๋๋ค. ๋ณธ๋ฌธ ๊ฒ์์ ์ ๋(์ต๋ 100๊ฑด)์ ๋ฐ์ ์๋ฐฉยท๊ฑด์ถ ์๊ด
๊ด๋ จ๋์์ผ๋ก ์ฌ์ ๋ ฌํด ํ์ํ๊ณ , ์ด ๊ฑด์ ๋๋น ํ์ ๊ฑด์๋ฅผ ๋ช
์ํฉ๋๋ค.
๋น ๋ฅธ ์ฝ๋ ๊ฒ์ฆ
Node.js 22 ์ด์์ด ํ์ํ๋ฉฐ ์ ์ค์น์๋ ํ์ฌ LTS์ธ Node.js 24๋ฅผ ๊ถ์ฅํฉ๋๋ค.
git clone https://github.com/ssd7830-cmyk/korean-firefighter-law-mcp.git
cd korean-firefighter-law-mcp
npm ci
npm run verify
verify๋ ํ์
๊ฒ์ฌ, ์ ์ฒด ์๋ ํ
์คํธ, ๋ฐฐํฌ ๋น๋๋ฅผ ์ฐจ๋ก๋ก ์คํํฉ๋๋ค. ์ค์ ์ ๋ถ API ํธ์ถ์ ์ธ์ฆํค์
ํ์ฉ์น์ธ์ด ์์ด์ผ ํ๋ฏ๋ก DEPLOY.md์ ๋ฐฐํฌ ์ ์ค์ฐ๋ ์ ๊ฒ์ ๋ณ๋๋ก ์ํํด์ผ ํฉ๋๋ค.
ํ์ํ ์ ๋ถ API ํค
- ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์์ ๋ค์ 5๊ฐ API๋ฅผ ํ์ฉ์ ์ฒญํ๊ณ
DATA_GO_KR_KEY๋ฅผ ์ค์ ํฉ๋๋ค.
ํ์ฌ์ ๋ณด ยท
๊ตฌ๊ธํต๊ณ ยท
ํน์ ์๋ฐฉ๋์๋ฌผ ยท
์๋ฐฉ์์ค ยท
๊ตญ๊ฐ์ํ๋ฌผ์ ๋ณด
- ๋ฒ์ ์ฒ ๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด ๊ณต๋ํ์ฉ์์ OPEN API๋ฅผ ์ ์ฒญํ๊ณ
LAW_OC๋ฅผ ์ค์ ํฉ๋๋ค.
์น์ธ ๋ฐฉ์, ํธ์ถ ํ๋, ์ ํจ๊ธฐ๊ฐ์ ๋ฐ๋ ์ ์์ผ๋ฏ๋ก ์ ์ฅ์์ ์ซ์๋ณด๋ค ๊ฐ ๋ฐ๊ธ ๊ณ์ ๊ณผ API ์์ธ ํ์ด์ง์
ํ์ฌ ํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
์์ ์ค๊ณ์ ์ด์์ ์ฃผ์
- ์กฐํ ์๋ฃ ์์ด LLM์ด ๋ต์ ์์ฑํ๋ ๊ฒฝ๋ก๋ฅผ ๋์ง ์์ต๋๋ค. ์กฐํ ์คํจ ์ ์ค๋ฅ ๋๋ ์กฐํ ์๋ฌธ์ ํ์ํฉ๋๋ค.
- ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก
127.0.0.1์๋ง ์ด๋ฆฌ๊ณ , ์ธ๋ถ ์ฃผ์ ๋ฐ์ธ๋ฉ์ ์ ์ ํ ํฐ ์์ด๋ ์์์ ๊ฑฐ๋ถํฉ๋๋ค.
- API ํค๋ ํ๊ฒฝ๋ณ์ ๋๋ HTTPS ์์ฒญ ํค๋๋ก๋ง ๋ฐ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ค๋ฅ์ ํค ๊ฐ์ ๋ง์คํนํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐฐํฌํ์ง ์์ต๋๋ค. ๊ณต์ API๋ฅผ ํธ์ถํ๊ณ ํญ๋ชฉ๋ณ TTL์ ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์๋ง ์ฌ์ฉํฉ๋๋ค.
/mcp์ /api/chat์ ์ด์ ์ ํ ํฐ๊ณผ HTTPS๋ก ๋ณดํธํด์ผ ํฉ๋๋ค. ์์ธํ ์ค์ ์ DEPLOY.md์ ์์ต๋๋ค.
- ๊ธฐ๊ด ์๋ฒํ ์ฑ๋ด์ ์ฌ์ฉ์ ์ง๋ฌธ๊ณผ ์กฐํ ์๋ฃ๋ฅผ ์ ํํ ์ธ๋ถ LLM ์ฌ์
์๋ก ์ ์กํฉ๋๋ค. ๊ธฐ๊ด์ ๊ฐ์ธ์ ๋ณดยท๋ณด์ยท
๊ธฐ๋ก๋ฌผ ์ ์ฑ
๊ฒํ ์ ์๋ ๋ฏผ๊ฐ์ ๋ณด๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ์
๋ ฅํ์ง ์์ต๋๋ค. LLM ์ฌ์ฉ์ ์น์ธํ์ง ์๋ ๊ธฐ๊ด์ ์น
์ฑ๋ด ๋์
/mcp ์๊ฒฉ ๋๊ตฌ ๋๋ ๊ฐ๋ณ PC ์ค์นํ(ํด๋ผ์ด์ธํธ LLM ์ฌ์ฉ)์ ๊ฒํ ํฉ๋๋ค.
- ์ด ํ๋ก๊ทธ๋จ์ ๊ฒฐ๊ณผ๋ ์ค๋ฌด ๊ฒํ ๋ณด์กฐ์๋ฃ์
๋๋ค. ๋ฒ์ ํ๋จ๊ณผ ํ์ฅ ์์ ํ๋จ์ ๊ณต์ ์๋ฌธยท๊ธฐ๊ด ์ง์นจ๊ณผ
๋ด๋น์์ ๊ฒํ ๋ฅผ ๋์ ํ์ง ์์ต๋๋ค.
๋ณด์ ๊ตฌ์กฐ์ ์ ํ์ ARCHITECTURE.md, ์ทจ์ฝ์ ์ ๊ณ ์ ์ด์ ๊ธฐ๋ณธ์ ์
SECURITY.md, ๋ณ๊ฒฝ ์๋์ ๊ฒ์ฆ ์ด๋ ฅ์ ๊ธฐ์ค.md, ์ด์ ์ธ๊ณ ์ ์ฐจ๋
์ธ์์ธ๊ณ.md์ ๊ธฐ๋กํฉ๋๋ค.
ํ์ฌ ๊ฒ์ฆ ์ํ
- ์๋ ํ
์คํธยทํ์
๊ฒ์ฌยท๋น๋๋ ํ์ฌ ์์ค์์ ์ฌ์คํํฉ๋๋ค. ๊ฒฐ๊ณผ ์๋
npm run verify ์ถ๋ ฅ์ด ๊ธฐ์ค์
๋๋ค.
- ๊ฒ์ ์ฌ์ ๋ ฌยท์กฐ๋ฌธ ํค์๋ ์ถ์ถยท์ถ๊ฐ ์กฐํ ๋ผ์ด๋ยทํ๋ฉด ๊ฐํธ์ ๊ฒ์ฆ ์ด๋ ฅ๊ณผ 12๋ฌธํญ ์ค์ฌ์ฉ ๊ฐ์ฌ ๊ฒฐ๊ณผ๋
๊ธฐ์ค.md 3-3~3-6์, ๋จ์ ๊ฐ์ ์์๋ ์ธ์์ธ๊ณ.md 16์ฅ์ ๊ธฐ๋ก๋์ด ์์ต๋๋ค.
- ์ค์ GeminiยทClaudeยทOpenAI API ํธ์ถ, Docker ์ด๋ฏธ์ง ๋น๋, ChatGPT/Claude ์๊ฒฉ MCP UI ์ฐ๊ฒฐ์ ํ์ฌ ํ๊ฒฝ์์
์ฌ๊ฒ์ฆํ์ง ๋ชปํ์ต๋๋ค. ๋ฌธ์์ ์๋ฃ๋ก ํ์ํ์ง ์์ผ๋ฉฐ ๊ธฐ๊ด ์ํ ํ๊ฒฝ์์ ํ์ธํด์ผ ํฉ๋๋ค.
- ๋ก์ปฌ ๊ฐ๋ฐ์ฉ
claude-cli์ codex-cli ์ด๋ํฐ๊ฐ ์์ง๋ง ๊ฐ์ธ ๋ก๊ทธ์ธ์ ๊ณต์ ์๋ฒ ์ด์์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ๊ตฌ๊ธํต๊ณ๋ ์ ์ฒด ๊ตฌ๊ธํ๋์ด ์๋๋ผ ๊ตํต์ฌ๊ณ ๊ตฌ๊ธํ๋ ๋ฒ์๋ง ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
๋ผ์ด์ ์ค
MIT License. ์ ๋ถ ์์ฒ ๋ฐ์ดํฐ์ ์ด์ฉ์กฐ๊ฑด์ ๊ฐ ์ ๊ณต๊ธฐ๊ด์ ํ์ฌ ์กฐ๊ฑด์ ๋ณ๋๋ก ๋ฐ๋ฆ
๋๋ค.