Skip to main content
Glama
iapke486-arch

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. 인증키 발급 완료 후 아래 환경변수에 설정

Related MCP server: KISTI-MCP

설치 및 빌드

1. 프로젝트 클론

git clone https://github.com/iapke486-arch/mcp-server.git
cd mcp-server

npm install
npm run build

실행

직접 실행 (테스트)

KCI_API_KEY=발급받은인증키 node --use-system-ca build/index.js

Windows 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)에 아래와 같이 등록합니다.

{
  "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

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 값을 참고하세요.

Available Tools

5 tools
kci_get_article_detailA

KCI 논문 제어번호(Control Number, 예: ART002358582)로 논문의 상세 정보(저자 소속, 원문 URL, DOI, UCI, FWCI, 피인용 횟수 등)를 조회합니다. 제어번호는 kci_search_articles 결과의 article-id 값입니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKCI 논문 제어번호 (Control Number, 예: ART002358582)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully compensates by stating that it reads data (조회) and listing returned fields like author affiliations, URL, DOI, etc. There is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose, provide a concrete example, and explain how to obtain the required input. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-parameter tool and no output schema, the description fully covers the needed context: what the input is, how to get it, and what information will be returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the schema: it explains the parameter as 'KCI 논문 제어번호' with an example, and crucially tells the agent that the value should come from another tool's result. Schema coverage is 100% but the description enriches it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: retrieve article details from KCI using a control number, listing specific fields. It differentiates from siblings by specifying the input (control number) and output (detailed info), and explains the relationship with kci_search_articles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly indicates when to use the tool (after obtaining a control number from kci_search_articles) and provides context for the input. However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kci_get_citation_detailA

저널(학술지) 제어번호로 해당 저널의 등재 정보, 발행 기관 정보, 학술지 변경 이력, 연도별 인용지수 이력(영향력 지수 3/4/5년, SJR, 자기인용비율 등)을 상세 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes저널(학술지)의 제어 번호 (Control Number)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It clearly states this is a read-only retrieval operation (상세 조회) and lists the types of data returned. It does not mention side effects, authentication, or rate limits, but the absence is acceptable for a simple read tool. The disclosure of return content is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and then lists specific data categories. Every word adds value, and there is no redundant or off-topic content. It is highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the input (control number) and enumerates the types of output (registration, institution, change history, citation history). Given the simple schema (1 parameter, no output schema), this is largely complete. Lacking only is mention of output format or potential errors, which are minor omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a description for the only parameter (id: control number). The tool description merely restates 'journal control number' without adding new semantics, format constraints, or examples. Since schema coverage is 100%, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb (상세 조회, retrieve detailed information), the resource (저널/학술지, journal), and the method (by 제어번호, control number). It lists specific data types (registration info, citation history) that clearly differentiate it from sibling tools like kci_get_article_detail or kci_get_journal_citations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when the user has a journal control number and needs detailed citation and registration data. However, it does not provide explicit guidance on when not to use it or how it compares to siblings (e.g., ‘for article-level data, use kci_get_article_detail’). The context is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kci_get_journal_citationsA

기준년도(year)와 포함년도(years)를 기준으로 저널(학술지)들의 인용지수(영향력 지수, 즉시성 지수, 자기인용 비율 등) 목록을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNoDOI
pageNo페이지 번호
yearYes기준년도 (YYYY, 필수)
yearsYes포함 년도 수 (2~5, 필수, 기본 2)
sortNmNo정렬 기준: title(제목), author(저자명), pubiYr(발행일자)
journalNo저널(학술지) 이름
sortDirNo정렬 방향: asc(오름차순), desc(내림차순)
modDateToNo수정일 끝 (YYYYMMDD)
institutionNo발행 기관명
modDateFromNo수정일 시작 (YYYYMMDD)
displayCountNo출력 건수 (기본 10, 최대 100)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, side effects, or permissions. It only states what the tool retrieves, leaving behavior largely unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence in Korean. It front-loads the key parameters and purpose without any redundant or unclear phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions examples of returned data but does not explain pagination, sorting, or other parameters' roles. For a tool with 11 parameters and no output schema, more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by listing specific citation indices (영향력 지수, 즉시성 지수, 자기인용 비율 등) that are returned, which is beyond what input schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves citation indices (impact factor, immediacy index, self-citation rate) for journals based on year and years. It distinguishes from sibling tools which focus on article details, citation details, or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing journal citation indices by year range, but does not explicitly state when to use this tool versus alternatives or provide exclusions. No usage guidance beyond implied context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kci_search_articlesB

KCI(한국학술지인용색인)에 등재된 논문을 제목, 저자, 저널명 등으로 검색하여 기본 정보(저널 정보, 저자, 초록, 키워드, 피인용 횟수 등)를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNoDOI
pageNo페이지 번호
titleYes논문 제목 (필수, 검색 키워드)
authorNo저자 이름
dateToNo발행년월 끝 (YYYYMM, 6자리)
sortNmNo정렬 기준: title(제목), author(저자명), pubiYr(발행일자)
journalNo저널(학술지) 이름
keywordNo키워드
sortDirNo정렬 방향: asc(오름차순), desc(내림차순)
abstractNo초록 검색어
dateFromNo발행년월 시작 (YYYYMM, 6자리)
modDateToNo수정일 끝 (YYYYMMDD, 8자리)
regDateToNo등록일 끝 (YYYYMMDD, 8자리)
affiliationNo저자 소속 기관명
institutionNo발행 기관명
modDateFromNo수정일 시작 (YYYYMMDD, 8자리)
regDateFromNo등록일 시작 (YYYYMMDD, 8자리)
displayCountNo출력 건수 (기본 10, 최대 100)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It only states 'retrieves basic information' without disclosing traits like pagination, rate limits, or read-only nature. The presence of 'displayCount' parameter implies pagination, but not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that effectively communicates the tool's purpose and scope. No unnecessary words, front-loaded with action verb and target resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate but incomplete: describes general functionality but lacks details on output format, pagination behavior, or handling of large result sets. For a search tool with 18 parameters, more contextual framing would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description mentions key parameters (title, author, journal) but adds no new semantics beyond the schema definitions. No enrichment of meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching KCI-registered articles by various fields (title, author, journal) and retrieving basic info. It implies a search-and-list capability, distinguishing it from sibling tools like kci_get_article_detail which likely provides full details on a single article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description is generic and does not specify use cases, prerequisites, or exclusions, leaving the agent to infer context from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kci_search_referencesB

특정 제목/저자/기관/연도로 검색되는 논문들이 인용한 참고문헌 목록을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes검색할 논문 제목 (필수)
authorNo저자명
pubiYrNo발행년도 (YYYY)
sortNmNo정렬 기준: title(제목), author(저자명), pubiYr(발행일자)
sortDirNo정렬 방향: asc(오름차순), desc(내림차순)
institutionNo발행 기관명
displayCountNo출력 건수 (기본 10, 최대 100)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not mention whether the operation is read-only, destructive, or has side effects. Also missing are details on pagination, rate limits, or any constraints beyond the input schema. The description only states what the tool does, not its behavioral characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence that covers the essential purpose. It is front-loaded and avoids unnecessary verbosity. However, it could be slightly improved by adding structure (e.g., separating search criteria from output description) without increasing length significantly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return format, pagination behavior, or how results correspond to input parameters. A more complete description would provide an overview of the response structure and any limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds context that parameters are used to search for papers whose references are retrieved, but it does not provide additional semantics beyond what the schema descriptions already specify (e.g., format constraints, default values). Thus, it meets the baseline without significant added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('조회합니다' - retrieves) and resource ('참고문헌 목록' - reference list) with specific search criteria (title, author, institution, year). It effectively distinguishes from sibling tools like kci_search_articles (which searches articles) and kci_get_citation_detail (which gets citation details).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. While the purpose implies its use for retrieving references, there is no mention of when not to use it, prerequisites, or comparison with sibling tools. This lack of contextual guidance reduces its helpfulness for an AI agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedkci_get_article_detail
    • First observedkci_get_citation_detail
    • First observedkci_get_journal_citations
    • First observedkci_search_articles
    • First observedkci_search_references

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct operation: searching articles, getting article details, journal citation details, journal citation lists, and reference searching. Descriptions clearly differentiate them.

Naming Consistency5/5

All tools follow the consistent pattern 'kci_<verb>_<noun>' (e.g., kci_search_articles, kci_get_article_detail) with all lowercase and underscores.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Integrates with KISTI's ScienceON, NTIS, and DataON APIs to search and retrieve scientific papers, patents, reports, national R\&D projects, and research data.
    15
    Creative Commons Attribution Non Commercial 4.0 International
  • A
    license
    A
    quality
    A
    maintenance
    Enables searching and harvesting Korean Citation Index literature, citation indices, and references via REST API and OAI-PMH.
    7
    2
    MIT