개요
DataON MCP 서버는 KISTI의 DataON OpenAPI (데이터 검색 / 상세정보 조회 API) 를 MCP(Model Context Protocol) 형태로 제공합니다.
이를 통해 MCP 호환 클라이언트는 별도의 HTTP 호출 없이 DataON 데이터를 직접 질의하고 상세정보를 가져올 수 있습니다.
1. DataON MCP 서버 개념
- DataON MCP 서버는 KISTI의 DataON 플랫폼 데이터를 외부 응용 프로그램에서 손쉽게 활용할 수 있도록 연결해주는 인터페이스입니다.
- MCP(Model Context Protocol) 형식을 사용하여, AI 클라이언트가 별도의 HTTP 통신 코드를 작성하지 않아도 DataON의 공개 데이터를 검색하고 상세정보를 조회할 수 있습니다.
| 기능 | 설명 |
|---|---|
| 데이터 검색 API | DataON 포털의 공개 데이터셋, 연구자료, 논문 등을 검색 (키워드 기반) |
| 상세정보 조회 API | 검색된 개별 항목의 메타데이터, 다운로드 링크, DOI 등 세부 정보를 제공 |
| MCP 통합 | 클라이언트에서 자연어로 질의하면 MCP 서버가 DataON API를 호출하여 결과를 반환 |
2. 연결 및 인증 방식
- DataON MCP 서버는 두가지 방식으로 연결할 수 있습니다.
- 연결을 위해 OpenAPI 키 (Bearer Token)가 필요하며, DataON 포털에서 발급받은 OpenAPI 키를 사용합니다.
- 이 키는 Authorization: Bearer <키> 형태로 MCP 설정에 포함됩니다.
| 구분 | npx (mcp-remote) | streamable-http |
|---|---|---|
| 역할 | 로컬에서 Node.js로 MCP 요청을 중계 | 클라이언트가 서버의 HTTP 스트림에 직접 접속 |
| 통신방식 | STDIO -> HTTP 중계 | HTTP 스트리밍(SSE 호환) 실시간 연결 |
| 필요 환경 | Node.js | 없음 (클라이언트만 있으면 가능) |
3. npx (mcp-remote) 방식
- MCP 클라이언트는 npx mcp-remote 명령어를 통해 서버와 통신합니다.
- 이 방식은 로컬 환경에서 Node.js를 이용하여 MCP 요청을 중계하며, 요청은 DataON MCP 서버로 포워딩됩니다.
설정예시
- - 아래 예시는 MCP 클라이언트 설정 파일에 DataON MCP 서버를 등록하는 방법을 보여줍니다.
- - DATAON_OPENAPI_KEY는 DataON 포털에서 발급받은 OpenAPI 키를 입력해야 합니다.
json
{
"mcpServers": {
"dataon": {
"command": "npx",
"args": [
"mcp-remote",
"https://dataon.kisti.re.kr/mcp/mcp",
"--header",
"Authorization: Bearer ${DATAON_OPENAPI_KEY}"
]
}
}
}
npx 설치 및 환경 설정
| 항목 | 설명 |
|---|---|
| npx 란 | Node.js 환경에서 npm 패키지를 바로 실행할 수 있도록 지원하는 명령어 |
| 필수 환경 | Node.js 5.2.0 이상 |
| 설치 방법 | Node.js 공식 홈페이지에서 LTS(Long Term Support) 버전 설치 시 npx 자동 포함 |
| 설치 확인 | 터미널에서 node -v, npx -v 입력하여 버전 출력 확인 |
npx 실행 예시
- - MCP 요청 시, npx가 mcp-remote 패키지를 자동 다운로드 및 실행합니다.
- - 별도의 설치 과정은 필요하지 않으며, 인터넷 연결 환경에서만 정상 동작합니다.
bash
npx mcp-remote https://dataon.kisti.re.kr/mcp/mcp --header "Authorization: Bearer ${DATAON_OPENAPI_KEY}"
4. streamable-http 방식
- MCP 클라이언트가 DataON 서버의 HTTP 스트림(streamable-http) 엔드포인트에 직접 연결하여 실시간으로 데이터를 주고받습니다.
- 이 방식은 로컬 브리지(npx) 없이 MCP 서버에 바로 접속할 수 있어 가볍고 빠릅니다.
설정예시
json
{
"mcpServers": {
"dataon": {
“type": "streamable-http",
"url": "https://dataon.kisti.re.kr/mcp/mcp",
"headers": {
"Authorization": "Bearer ${DATAON_OPENAPI_KEY}"
}
}
}
}