Skip to main content
Glama

영양 정답지 (food-db-answer-key)

AI 챗봇이 말한 식품 영양값을 농촌진흥청 국가표준식품성분 DB 10.4로 채점하고, AI가 처음부터 DB 값으로 답하게 연결하는 웹 + MCP 서버 + 오차 실측 원자료.

출처: 농촌진흥청, 2026. 국가표준식품성분 DB 10.4. https://koreanfood.rda.go.kr (공공누리 제1유형·출처표시)

무엇이 들어 있나

경로

내용

web/

정적 웹. 3,366식품 검색 → 가식부 100 g·섭취량 환산 18성분 → 표시 기호(- 결측·Tr 미량·( ) 산출) 원문 풀이 → AI 답변 붙여넣기 채점. 외부 요청 0, 입력은 브라우저 밖으로 나가지 않음

mcp_server.py

MCP 서버(표준 입출력). 도구 search_food · get_nutrients · check_answer. 파이썬 3.8+ 표준 라이브러리만(설치 0)

results/

오차 실측 결과 — 요약 · summary.json · measurements.csv

data/sample.json, data/runs/*.jsonl

사전 등록 규칙으로 뽑은 100식품, AI 원 응답 전부(모델명·도구 호출 기록 포함)

SPEC.md

목적·용어·수용 기준(표본 규칙·질문 문안·허용폭은 실측 전에 고정)

Related MCP server: nutrition-mcp-server

AI에 연결하기 (MCP)

Claude Desktop claude_desktop_config.json:

{ "mcpServers": { "food-db": { "command": "python3", "args": ["/경로/food-db-answer-key/mcp_server.py"] } } }

Codex CLI:

codex -c 'mcp_servers.food-db.command="python3"' -c 'mcp_servers.food-db.args=["/경로/food-db-answer-key/mcp_server.py"]'

모든 도구 결과에 출처 표기 문자열이 붙고, 결측(-)은 0으로 바꾸지 않습니다.

실측 재현

python3 -m venv .venv && .venv/bin/pip install openpyxl pytest
# 1) DB 10.4 엑셀(농식품올바로 → 국가표준식품성분표 → DB(Excel) 다운로드) → web/data/foods.json
.venv/bin/python -m answerkey.infrastructure.cli build-data --xlsx "식품성분표(10개정판).xlsx"
# 2) 표본(seed 20260924, 식품군 비례 100식품)
.venv/bin/python -m answerkey.infrastructure.cli sample
# 3) 질문(웹 검색 끔) — 기억으로 답함 / DB 연결(MCP)
.venv/bin/python -m answerkey.infrastructure.cli measure --model claude --condition ungrounded
.venv/bin/python -m answerkey.infrastructure.cli measure --model gpt --condition grounded
# 4) 집계(숫자는 원 응답에서 다시 계산)
.venv/bin/python -m answerkey.infrastructure.cli report

DB가 갱신되면(10.5 등) 1)만 다시 돌리면 웹·MCP가 새 값으로 바뀝니다.

테스트

.venv/bin/python -m pytest -q          # 도메인·유스케이스·어댑터·MCP 왕복
node --test tests/js/grade.test.mjs    # 웹 채점 규칙(파이썬과 같은 픽스처)
python3 scripts/capture_web.py         # 390/1280 캡처 + 가로 스크롤·외부 요청·채점 동작 검사

판정 규칙

허용폭 = max(DB값의 20%, 바닥값: 에너지 5 kcal · 단백질·지방·탄수화물·당류 0.5 g · 나트륨 5 mg). 차이가 허용폭을 넘으면 「이탈」. 이 규칙은 이 프로젝트가 정한 비교 기준이며 법정 기준이 아닙니다. 20%는 실측 전에 고정했고(SPEC v0.1), 10%·30%로 바꾼 결과도 results/summary.json의 sensitivity에 함께 냅니다.

한계

  • 표본은 DB 안의 무작위 100식품이고, 국민 섭취 빈도로 가중하지 않았습니다.

  • AI는 각 회사의 명령줄 도구로 불렀고 웹 검색을 껐습니다(codex CLI 0.153.4 · gpt-6-astra · 추론 강도 기본값 none / Claude Code CLI 2.1.281 · claude-opus-5-5). 앱 화면의 챗봇과 설정이 다를 수 있습니다.

  • 질병·식이 처방을 대신하지 않습니다.

라이선스

코드: MIT. 데이터 web/data/foods.json은 국가표준식품성분 DB 10.4에서 변환한 것으로 원 저작권은 농촌진흥청에 있으며 공공누리 제1유형(출처표시) 조건을 따릅니다.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides intelligent access to the USDA nutrition database through AI assistants, enabling users to search foods, compare nutritional content, find foods high in specific nutrients, and query authoritative nutrition data across 7,146+ food items through natural language.
    1
    -