K Sign Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited K Sign Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
| 서버 이름 | ksign (표시명: K-Sign) |
| 설명 | 국립국어원 공공 수어 데이터(3만 건+)를 검색·조회하는 한국수어(KSL) MCP 서버. 수어 단어, 수형 설명, 이미지·영상 URL을 AI에게 제공합니다. |
| Git | https://github.com/a4file/k-sign-mcp-server |
| MCP Endpoint | https://k-sign-mcp-server.playmcp-endpoint.kakaocloud.io/mcp |
| 인증 | 없음 |
Claude Desktop, ChatGPT MCP Client, 카카오 PlayMCP 등 MCP 클라이언트에서 사용할 수 있습니다.
| Tool | 설명 |
|---|---|
search_sign | 한국어 키워드로 수어 검색 (FTS5 + LIKE 폴백) |
get_sign_detail | 수어 ID로 상세 정보·이미지·영상 URL 조회 |
국립국어원 KCISA Open API에서 실제 sldict.korean.go.kr 미디어 URL을 수집합니다.
| 데이터셋 | API | 약 件수 |
|---|---|---|
| 일상생활 수어 | getCTE01701 | ~7,500 |
| 전문용어 수어 | getCTE01702 | ~10,000 |
| 문화정보 수어 | getCTE01703 | ~1,200 |
| 통합 수어정보 | API_CNV_054 | ~19,000 |
API마다 인증키가 다를 수 있습니다. 아래 공공데이터 수집 참고.
Clean Architecture + DDD
src/
├── domain/sign/ # SignTerm, Repository, errors
├── application/sign/ # SearchSign, GetSignDetail UseCase
├── infrastructure/
│ ├── persistence/sqlite/ # SQLite + FTS5
│ ├── collectors/culture-sign/ # KCISA API 수집기
│ ├── transport/ # stdio / HTTP (Fastify)
│ └── di/
├── interfaces/mcp/ # MCP tool adapters
└── config/env.ts@modelcontextprotocol/server 2.0.0-alpha.2SignTermRepository 인터페이스)npm install
cp .env.example .env
npm run db:setup # migrate + 공공 API 수집 (키 필요)
npm run dev # stdio MCPHTTP 모드 (배포/PlayMCP):
MCP_TRANSPORT=http npm run dev
# Health: GET http://localhost:8000/health
# MCP: POST http://localhost:8000/mcp프로덕션:
npm run build && npm start| 변수 | 기본값 | 설명 | |
|---|---|---|---|
MCP_TRANSPORT | stdio | stdio \ | http |
MCP_SERVER_NAME | k-sign-mcp-server | MCP 서버 이름 | |
HTTP_HOST | 0.0.0.0 | HTTP 바인드 호스트 | |
HTTP_PORT / PORT | 8000 | HTTP 포트 (KC는 PORT 우선) | |
DB_PROVIDER | sqlite | sqlite \ | postgres |
SQLITE_PATH | ./data/ksign.db | SQLite 경로 | |
SEARCH_RESULT_LIMIT | 20 | 검색 결과 상한 | |
LOG_LEVEL | info | 로그 레벨 |
| 변수 | 설명 |
|---|---|
DATA_GO_KR_SERVICE_KEY | 공통 키 (단일 키 모드) |
DATA_GO_KR_SERVICE_KEY_DAILY | 일상생활 수어 |
DATA_GO_KR_SERVICE_KEY_PROFESSIONAL | 전문용어 수어 |
DATA_GO_KR_SERVICE_KEY_CULTURE | 문화정보 수어 |
DATA_GO_KR_SERVICE_KEY_COMPREHENSIVE | 통합 수어정보 |
KCISA_API_IP_FALLBACK | api.kcisa.kr DNS 실패 시 IP (기본 175.125.91.8) |
COLLECT_ON_START | Docker 시작 시 자동 수집 |
COLLECT_PAGE_SIZE | 페이지 크기 (기본 100) |
COLLECT_REQUEST_DELAY_MS | 요청 간격 ms (기본 200) |
USE_SAMPLE_DATA | 키 없을 때 샘플 5건 (데모용) |
문화공공데이터광장 또는 공공데이터포털에서 API별 활용신청:
| API | 환경변수 |
|---|---|
| 일상생활 수어 | DATA_GO_KR_SERVICE_KEY_DAILY |
| 전문용어 수어 | DATA_GO_KR_SERVICE_KEY_PROFESSIONAL |
| 문화정보 수어 | DATA_GO_KR_SERVICE_KEY_CULTURE |
| 통합 수어정보 | DATA_GO_KR_SERVICE_KEY_COMPREHENSIVE |
키가 API마다 다를 때 (권장):
DATA_GO_KR_SERVICE_KEY_DAILY=...
DATA_GO_KR_SERVICE_KEY_PROFESSIONAL=...
DATA_GO_KR_SERVICE_KEY_CULTURE=...
DATA_GO_KR_SERVICE_KEY_COMPREHENSIVE=...개별 키를 하나라도 넣으면 DATA_GO_KR_SERVICE_KEY로 나머지가 자동 대체되지 않습니다. 키가 있는 API만 수집됩니다.
npm run db:migrate # 스키마만
npm run db:collect # API 수집 → DB 저장
npm run db:setup # migrate + collect504 타임아웃 등 일시 오류는 자동 재시도하며, 실패 시 이미 수집한 페이지는 유지합니다.
| 항목 | 값 |
|---|---|
| MCP 식별자 | ksign |
| Git 저장소 | https://github.com/a4file/k-sign-mcp-server |
| Active Endpoint | https://k-sign-mcp-server.playmcp-endpoint.kakaocloud.io/mcp |
KC Git 소스 빌드 화면에는 PAT·Git URL만 있고 런타임 환경변수 입력란이 없습니다. 이 저장소는 이미 수집된 SQLite DB(docker/seed/ksign.db, 약 3.7만 건)를 Docker 이미지에 포함하므로, KC에서 API 키 없이도 검색이 동작합니다.
https://github.com/a4file/k-sign-mcp-server (공개 저장소 → PAT 불필요)main, Dockerfile: Dockerfile데이터를 다시 수집해 이미지에 반영하려면 로컬에서:
npm run db:setup
npm run db:export-seed # data/ksign.db → docker/seed/ksign.db
git add docker/seed/ksign.db && git commit && git pushKC에서 환경변수를 넣을 수 있는 다른 경로가 생기면, 아래 키로 COLLECT_ON_START=true 시 컨테이너 기동 시 재수집도 가능합니다.
DATA_GO_KR_SERVICE_KEY_DAILY=...
DATA_GO_KR_SERVICE_KEY_PROFESSIONAL=...
DATA_GO_KR_SERVICE_KEY_CULTURE=...
DATA_GO_KR_SERVICE_KEY_COMPREHENSIVE=...
COLLECT_ON_START=true.env는 git에 올리지 마세요.
docker compose up --buildGET http://localhost:8000/healthPOST http://localhost:8000/mcp~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"k-sign": {
"command": "node",
"args": ["/absolute/path/to/k-sign-mcp-server/dist/index.js"],
"env": {
"SQLITE_PATH": "/absolute/path/to/k-sign-mcp-server/data/ksign.db"
}
}
}
}{ "keyword": "안녕하세요" }{
"results": [
{
"id": "ksign-daily-…",
"word": "안녕하세요",
"description": "인사 표현",
"imageUrl": "http://sldict.korean.go.kr/multimedia/…jpg",
"videoUrl": "http://sldict.korean.go.kr/multimedia/…mp4"
}
]
}{ "signId": "ksign-daily-…" }npm test
npm run test:coverageVercel/GitHub 연동은 `a4file` 프로필 하나만 사용합니다. 커밋이 a4file-ai로 잡히지 않도록 저장소 루트에서 한 번 실행하세요:
./scripts/setup-git.sh이 스크립트는:
a4file GitHub noreply 이메일로 설정 ([email protected])Co-authored-by: Cursor / a4file-ai 트레일러를 커밋 메시지에서 자동 제거하는 Git hook 활성화푸시는 gh auth login으로 `a4file` 계정이 active인지 확인 후 진행하세요.
| 스크립트 | 설명 |
|---|---|
npm run dev | 개발 서버 (tsx watch) |
npm run build | TypeScript 빌드 |
npm run db:migrate | DB 스키마 생성 |
npm run db:collect | 공공 API 수집 |
npm run db:setup | migrate + collect |
PostgresSignTermRepository 구현 완료 상태.env: DB_PROVIDER=postgres, POSTGRES_URL=…MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.