UNPKG

k-mfds-fooddb-mcp-server

Version:

식품의약품안전처 식품영양성분DB를 MCP 도구로 제공합니다.

63 lines (57 loc) 1.8 kB
import axios, { AxiosInstance } from 'axios'; import { extractBodyFromResponse } from './util'; import { config } from '../../config'; const DataType = { XML: 'xml', JSON: 'json', } as const; type DataType = typeof DataType[keyof typeof DataType]; const API_URL = 'http://apis.data.go.kr/1471000/FoodNtrCpntDbInfo02'; const axiosInstance: AxiosInstance = axios.create({ baseURL: API_URL, params: { serviceKey: config.govApi.key, type: DataType.JSON, } }); export interface FoodNutritionApiParams { foodNameKr?: string; researchYearMonthDate?: string; makerName?: string; pageNo?: number; numOfRows?: number; type?: 'xml' | 'json'; foodCategory1Name?: string; itemReportNo?: string; updateDate?: string; dbClassName?: string; } // 영양 성분 조회 export async function getFoodNutritionComponentDatabaseInquery( foodNameKr: string = '', researchYearMonthDate: string = '', makerName: string = '', pageNo: number = 1, numOfRows: number = 10, type: 'xml' | 'json' = 'json', foodCategory1Name: string = '', itemReportNo: string = '', updateDate: string = '', dbClassName: string = '', ): Promise<any> { const res = await axiosInstance.get('/getFoodNtrCpntDbInq02', { params: { FOOD_NM_KR: foodNameKr, RESEARCH_YMD: researchYearMonthDate, MAKER_NM: makerName, pageNo, numOfRows, type, FOOD_CAT1_NM: foodCategory1Name, ITEM_REPORT_NO: itemReportNo, UPDATE_DATE: updateDate, DB_CLASS_NM: dbClassName, } }); // 응답 형태 주소: https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15127578#/API%20%EB%AA%A9%EB%A1%9D/getFoodNtrCpntDbInq02 return extractBodyFromResponse(res); }