safesign-mcp
by ddolmange00
README.md
# ๐ฉบ ์ธ์ธ์ ์ (SafeSign)
> ์นด์นด์ค **AGENTIC PLAYER 10** ์ถํ์ ยท ๊ณ์ฝ์ ๊ฑด๊ฐ๊ฒ์ง MCP
> **์ฌ์ธํ๊ธฐ ์ ์, 30์ด ๊ฑด๊ฐ๊ฒ์ง.**
๊ณ์ฝ์ยท์ฝ๊ด์ **์์ ๋ ์ ์ยท๋ฑ๊ธ(A~F)**์ผ๋ก ์ง๋จํ๊ณ , ๋
์์กฐํญยท**๋น ์ง ๋ณดํธ์ฅ์น**๋ฅผ ์ก๊ณ ,
**์ค์ ๋ถ์ ๋ค๋ฐ ์ ํ๊ณผ์ ์ผ์น๋ยท์์ ํผํดยท๊ถ์ฅ ์์ ์**๊น์ง ๋ํด **๊ฑด๊ฐ๊ฒ์ง ์นด๋** ํ ์ฅ์ผ๋ก ๋๋ ค์ฃผ๋ MCP ์๋ฒ์
๋๋ค.
*("AI๊ฐ ๊ณ์ฝ์ ์ฝ์ด์ค"์ด ์๋๋ผ "์ฌ์ธ ์ 30์ด ๊ฑด๊ฐ๊ฒ์ง"์
๋๋ค.)*
## ์ ๋ค๋ฅธ๊ฐ (ChatGPT๋ก๋ ๋ถ๊ฐ๋ฅ)
| | |
|---|---|
| ๐ฉบ **์์ ๋ ์ ์ยท๋ฑ๊ธ** | ๊ณ์ฝ์ 100์ ๋ง์ + A~F ๋ฑ๊ธ์ผ๋ก. "๋ด ์ ์ธ๊ณ์ฝ 62์ ใทใท"์ด ์นดํก์ ํผ์ง๋๋ค. |
| ๐จ **๋ถ์ ๋ค๋ฐ ์ ํ ๋งค์นญ** | "์ด ์กฐํญ, ์ ์ธ ๋ณด์ฆ๊ธ ๋ฐํ ์ง์ฐ **๋ถ์์์ ์์ฃผ ๋ฑ์ฅํ๋ ์ ํ**" + **์์ ํผํด + ๊ถ์ฅ ์์ ์**. |
| ๐ **์์ธ ๊ต์ฐจ๊ฒ์ฆ** | ๊ตญํ ๋ถ ์ค๊ฑฐ๋๊ฐ๋ก **๊นกํต์ ์ธ(์ ์ธ๊ฐ์จ)** ๋ฅผ ๋ฐ์ดํฐ๋ก ํ์ *(์ ๊ตญ ์๊ตฐ๊ตฌ 268๊ณณ)*. |
| โ๏ธ **๊ฒ์ฆ๋ ์กฐ๋ฌธ ์๋ฌธ** | ์ํ๋ง๋ค ์ค์ ์กฐ๋ฌธ ์๋ฌธ ์ธ์ฉ(๊ตญ๊ฐ๋ฒ๋ น์ ๋ณด์ผํฐ). ํ๊ฐ ๋ฐฉ์ง โ **ํ์ ์ ๋ฃฐ, ์ถ์ถ์ LLM**. |
| ๐ **๋๋ฝ ์ญํ์ง** | "์๋ ์ํ"์ด ์๋๋ผ **"์์ด์ ์ํํ ๊ฒ"**(ํ์ ์ผ์ยท๋ณด์ฆ๋ณดํ ํน์ฝ ๋ฑ)์ ์ก์ต๋๋ค. |
## ๋น ๋ฅธ ์์
```bash
npm install
npm start # MCP ์๋ฒ + ๋ฐ๋ชจ: http://127.0.0.1:8787
# โ / ์นด์นด์คํก ์คํ์ผ ๋ฐ๋ชจ (์ํ 1ํญ ์ฒดํ)
# โ /health ๋ฐฐํฌ ํ๋ก๋ธ
# โ POST /mcp MCP (tools/list, tools/call)
npm test # ๋๋ฉ์ธยท์๋ฒ e2e (์ ํ
์คํธ ํต๊ณผ)
npm run typecheck
```
๋์ปค(์นด์นด์ค ํด๋ผ์ฐ๋ ๋ฐฐํฌ):
```bash
docker build -t safesign-mcp . && docker run -p 8787:8787 --env-file .env safesign-mcp
```
๋ฐฐํฌยท๋ฑ๋ก: [docs/deploy/kakao-cloud.md](docs/deploy/kakao-cloud.md) ยท [docs/deploy/playmcp-registration.md](docs/deploy/playmcp-registration.md)
๋ถ์ ํธ์ถ(์):
```bash
curl -X POST http://127.0.0.1:8787/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analyze_contract","arguments":{"text":"<๊ณ์ฝ์ ํ
์คํธ>"}}}'
```
## MCP ๋๊ตฌ
- `analyze_contract` โ **ํ
์คํธยท์ฌ์ง(๋น์ OCR)ยทPDF** ๋ฌด์์ด๋ ์
๋ ฅ โ ์์ ๋ ์ ์ยท๋ฑ๊ธ + ์ํ์กฐํญ + ๋ถ์์ ํ/์์ํผํด + ๊ฒ์ฆ์กฐ๋ฌธ + ์๋์ฐจ ๊นกํต์ ์ธ(์ ์ธ๊ฐ์จ) + **์นด๋ PNG URL**
- `situation_guide` โ **"โโํ ๋ ๋ญ ๋ด์ผ ํด?"** โ ์๋ฃธ/์ ์ธ/์คํผ์คํ
ยท๊ตํต์ฌ๊ณ ยท๋ณ์ยท๋ณดํ์ฒญ๊ตฌยท์ค๊ณ ๊ฑฐ๋ยท๋์ถ ๋ฑ ์ํฉ๋ณ ์ฒดํฌ๋ฆฌ์คํธยท์ฑ๊ธธ์๋ฅยทํ์ธ์ฌํญยทํจ์
- `explain_for_family` โ **๋ถ๋ชจ๋ยท์น๊ตฌ์๊ฒ ์ค๋ช
ํ๋ฏ** ์ด๋ ค์ด ์ฉ์ด ์์ด ์ฌ์ด ๋ง๋ก ํ์ด์ฃผ๋ ์์ฝ
- `explain_term` โ ํ์ ์ผ์ยท๋ํญ๋ ฅยท์ ์์ ํํด ๋ฑ ์ฉ์ด ํ์ด ์ค๋ช
- `suggest_negotiation` โ ๋ถ๋ฆฌ ์กฐํญ์ ๋ํ ์๊ตฌยท์์ ๋ฌธ๊ตฌ ์์ฑ
## ์์ ยท์ฑ
์
๋ฒ๋ฅ ์๋ฌธ์ด ์๋ **์ฐธ๊ณ ์ฉ 1์ฐจ ์ ๊ฒ**์
๋๋ค. ๋ชจ๋ ์๋ต์ ๋ฉด์ฑ
+ ์ ๋ฌธ๊ฐ ํ์ธ CTA๋ฅผ ํฌํจํ๋ฉฐ,
๊ฐ์ธ์ ๋ณด(PII)๋ **๊ธฐ๋ณธ ๋น์ ์ฅ + ๊ฒฝ๊ณ ๋ง์คํน**ํฉ๋๋ค.
## ๋ฌธ์
- ์ถํ ํ์ฅ ์์ฝ: [docs/SUBMISSION.md](docs/SUBMISSION.md)
- 3๋ถ ๋ฐ๋ชจ ์๋๋ฆฌ์ค: [docs/demo-scenario.md](docs/demo-scenario.md)
- ์ด์ ์ง์นจ: [CLAUDE.md](CLAUDE.md)
- ์ ํ ์ ์: [docs/PRD.md](docs/PRD.md)
- ๊ตฌํ ์ผ์ : [docs/IMPLEMENTATION_PLAN.md](docs/IMPLEMENTATION_PLAN.md)
- ๋ฒ๋ฅ ๊ฒ์ฆ ๋ก๊ทธ: [docs/legal/verification-log.md](docs/legal/verification-log.md)
- ์๋ธ์์ด์ ํธ: [.claude/agents/](.claude/agents/)
## ์ํคํ
์ฒ
```
MCP ๋๊ตฌ โ Express(Streamable HTTP) โ ๋๋ฉ์ธ(์์ ๋ฃฐ์์ง: ํ์ ) โ ์๋น์ค(๋น์ ์ถ์ถ/์นด๋)
```
ํ์ ๋ก์ง์ `src/domain/`(๊ฒฐ์ ๋ก ยทํ
์คํธ ๊ฐ๋ฅ)์, ๋ถ์ํจ๊ณผ(LLM/์ ์ฅ/HTTP)๋ `src/server`ยท`src/services`์.
์คํ์ moyo์์ ๊ฒ์ฆ๋ TS ESM + MCP SDK + @resvg(ํ๊ธ ์นด๋) + zod + vitest.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues