kci-mcp-server
# kci-mcp-server
KCI(한국학술지인용색인, Korea Citation Index) Open API를 호출하는 MCP(Model Context Protocol) 서버입니다.
## 사전 준비: KCI Open API 인증키 발급
1. KCI 포털(https://www.kci.go.kr) 회원가입
2. Open API 인증키 신청서 작성 후 한국연구재단(kciadmin@nrf.re.kr)에 공문 발송
3. 인증키 발급 완료 후 아래 환경변수에 설정
## 설치 및 빌드
### 1. 프로젝트 클론
```bash
git clone https://github.com/iapke486-arch/mcp-server.git
cd mcp-server
npm install
npm run build
```
## 실행
### 직접 실행 (테스트)
```bash
KCI_API_KEY=발급받은인증키 node --use-system-ca build/index.js
```
Windows PowerShell:
```powershell
$env:KCI_API_KEY = "발급받은인증키"
node --use-system-ca build/index.js
```
> **`--use-system-ca` 플래그가 필요한 이유**: 사내망/회사 프록시가 TLS 트래픽을 검사(SSL 인터셉션)하는 환경에서는 Node.js의 기본 인증서 목록에 없는 사설 루트 인증서가 응답에 포함되어 `self-signed certificate in certificate chain` 오류로 요청이 실패할 수 있습니다. `--use-system-ca`(Node 22+)는 Windows 인증서 저장소를 함께 신뢰하도록 하여 이 문제를 해결합니다. 이런 프록시 환경이 아니라면 없어도 무방합니다.
### Claude Desktop / Claude Code 설정
#### Claude Desktop
`claude_desktop_config.json`(보통 `%APPDATA%\Claude\claude_desktop_config.json`)에 아래와 같이 등록합니다.
```json
{
"mcpServers": {
"kci": {
"type": "stdio",
"command": "node",
"args": ["--use-system-ca", "/path/to/mcp-server/build/index.js"],
"env": {
"KCI_API_KEY": "발급받은인증키"
}
}
}
}
```
경로 예시:
- Windows: `C:/Users/YourName/Documents/projects/mcp-server/build/index.js`
- macOS/Linux: `/home/username/projects/mcp-server/build/index.js`
#### Claude Code CLI
```bash
claude mcp add --env KCI_API_KEY=발급받은인증키 -- node --use-system-ca /path/to/mcp-server/build/index.js
# 모든 프로젝트에서 사용하려면 사용자 전역 스코프로 등록
claude mcp add --scope user --env KCI_API_KEY=발급받은인증키 -- node --use-system-ca /path/to/mcp-server/build/index.js
```
### 연결 확인
Claude Code: `/mcp` 목록에서 `kci` 서버가 ✓ Connected 상태인지 확인하세요.
## 제공 도구 (Tools)
| Tool | KCI API Code | 설명 |
|---|---|---|
| `kci_search_articles` | `articleSearch` | 제목/저자/저널명 등으로 논문 기본 정보 검색 |
| `kci_get_article_detail` | `articleDetail` | 논문 제어번호로 상세 정보 조회 (초록, 키워드, DOI, FWCI, 피인용 횟수 등) |
| `kci_search_references` | `referenceSearch` | 논문의 참고문헌 목록 조회 |
| `kci_get_journal_citations` | `citation` | 기준년도별 저널 인용지수(영향력 지수 등) 목록 조회 |
| `kci_get_citation_detail` | `citationDetail` | 저널 제어번호로 인용지수 상세 이력 조회 |
모든 도구는 KCI Open API가 XML로 응답하는 데이터를 JSON으로 변환하여 반환합니다.
## 참고
- KCI Open API는 XML 응답만 지원하며, 이 서버는 내부적으로 XML을 JSON으로 파싱해 반환합니다.
- 인증키가 만료되었거나 잘못된 경우, KCI가 반환하는 원본 오류 메시지를 그대로 전달합니다.
- KCI 서버는 `displayCount` 파라미터 값과 무관하게 기본 10건을 반환하는 경우가 있습니다(KCI 서버 자체의 동작이며 클라이언트 코드 문제가 아님). 정확한 전체 건수는 응답의 `result.total` 값을 참고하세요.
TDQS
Scored across 5 tools
Each tool targets a distinct operation: searching articles, getting article details, journal citation details, journal citation lists, and reference searching. Descriptions clearly differentiate them.
All tools follow the consistent pattern 'kci_<verb>_<noun>' (e.g., kci_search_articles, kci_get_article_detail) with all lowercase and underscores.
5 tools appropriately cover the core functionalities of a citation index server: search, article details, journal citation details, citation lists, and reference searching. Neither too few nor too many.
The tool set covers key research workflows (search, article details, citation info). A minor gap might be a dedicated journal search tool, but kci_get_journal_citations partially fills that role. Overall well-scoped.