Academic MCP
The Academic MCP server enables AI tools to search Korean and Japanese academic databases through a unified interface.
Core Capabilities:
Integrated Academic Search - Search across multiple Korean and Japanese databases (KCI, OAK, LOSI, CiNii, NL, KOSTMA, HGIS, etc.) using keywords, authors, publication years, and other filters (up to 100 results)
Retrieve Detailed Paper Information - Get comprehensive details for specific papers including abstracts, keywords, citation data, and metadata by providing its identifier and source database
Access Diverse Content Types - Query various academic resources:
Academic papers and research reports (KCI, OAK, LOSI, CiNii)
Ancient documents and historical materials (NL, KOSTMA, HGIS, Gugak)
Specialized dictionaries and encyclopedias (KoreanTK, Eyis, NRICH, Tripitaka, Folkency, Stdict)
Provider Management - List available database providers and their status, customize which providers are active through environment variables, and filter searches by specific databases
Flexible Integration - Compatible with MCP-enabled AI tools (Claude Desktop, Cursor, Windsurf), supports both free and API key-protected databases, and allows extending functionality by adding custom providers through the modular codebase
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Academic MCPsearch for research papers on artificial intelligence in KCI and CiNii"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Academic MCP
한국·일본 학술 데이터베이스를 AI 도구에서 검색할 수 있게 해주는 MCP(Model Context Protocol) 서버입니다.
Claude Desktop, Cursor, Windsurf 등 MCP를 지원하는 AI 도구에서 사용할 수 있습니다.
지원 데이터베이스
📌 안내: Provider 목록은 향후 추가, 수정 또는 삭제될 수 있습니다.
1. 📚 논문/문헌 (Academic Papers)
학술 논문 및 연구 보고서를 검색합니다.
Provider | 국가 | 콘텐츠 | API 키 | 비고 |
KCI | 🇰🇷 | 한국학술지인용색인 | ❌ 불필요 | OAI-PMH (최신자료 위주) |
OAK | 🇰🇷 | 오픈액세스코리아 | ❌ 불필요 | OAI-PMH (최신자료 위주) |
LOSI | 🇰🇷 | 국회도서관 입법정보 | ✅ 필요 | |
CiNii | 🇯🇵 | 일본 학술논문 | ✅ 필요 |
⚠️ KCI/OAK 검색 제한사항
KCI와 OAK는 별도의 검색 API 키 없이 OAI-PMH 프로토콜을 사용하여 데이터를 수집합니다. 프로토콜 특성상 최근 6개월 이내의 데이터만 검색 범위에 포함되며, 과거 전체 논문에 대한 키워드 검색은 제한될 수 있습니다. (전체 검색을 위해서는 해당 기관의 정식 검색 API 키가 필요할 수 있으나, 현재 본 패키지는 무료 OAI-PMH만 지원합니다.)
2. 📜 고서류/역사 (Ancient Documents & History)
고문헌, 역사 자료, 지리 정보를 검색합니다.
Provider | 국가 | 콘텐츠 | API 키 | 비고 |
NL | 🇰🇷 | 한국고문헌종합목록 | ❌ 불필요 | 국립중앙도서관 (KORCIS) |
KOSTMA | 🇰🇷 | 한국학자료센터 | ❌ 불필요 | 고서/고문서 원문 |
ITKC | 🇰🇷 | 한국고전종합DB OpenAPI | ❌ 불필요 | 한국고전번역원 |
HGIS | 🇰🇷 | 국사편찬위원회 역사지리 | ✅ 필요 | 역사/지리 통합 정보 |
Gugak | 🇰🇷 | 국립국악원 학술연구-고서 | ✅ 필요 | 고서/고악보 |
3. 📖 사전/기타 (Dictionary & Others)
특수 목적의 사전 및 인물 정보를 검색합니다.
Provider | 국가 | 콘텐츠 | API 키 | 비고 |
KoreanTK | 🇰🇷 | 지식재산 용어사전 | ✅ 필요 | 특허청/공공데이터포털 |
Eyis | 🇰🇷 | 여성사전시관 인물연구 | ✅ 필요 | 여성가족부/공공데이터포털 |
NRICH | 🇰🇷 | 한국고고학사전 | ❌ 불필요 | 국립문화유산연구원 |
Tripitaka | 🇰🇷 | 고려대장경지식베이스 | ✅ 필요 | 고려대장경연구소 |
Folkency | 🇰🇷 | 한국민속대백과사전 | ✅ 필요 | 국립민속박물관 |
Stdict | 🇰🇷 | 표준국어대사전 | ✅ 필요 | 국립국어원 |
Note: API 키가 필요한 Provider는 각 기관에서 개별 발급받아야 합니다. 아래 API 키 발급 섹션을 참고하세요.
Related MCP server: Korean Law MCP Server
빠른 시작
1. 설치
git clone https://github.com/xinsyousuozhi/academic-mcp.git
cd academic-mcp
uv sync2. 설정
cp .env.example .env
# 필요한 API 키 입력 (선택사항)
# KCI, OAK, KOSTMA는 키 없이도 사용 가능3. Claude Desktop 설정
claude_desktop_config.json에 추가:
{
"mcpServers": {
"academic-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/academic-mcp",
"run",
"academic-mcp"
]
}
}
}설정 파일 위치:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
4. 재시작
Claude Desktop을 완전히 종료 후 다시 시작하면 사용 가능합니다.
환경 변수
.env 파일에서 설정:
# 활성화할 Provider (쉼표 구분)
# 키 없이 사용 가능: kci, oak, kostma, itkc
ENABLED_PROVIDERS=kci,oak,kostma,itkc
# API 키가 필요한 Provider 추가 시
# ENABLED_PROVIDERS=kci,oak,kostma,itkc,losi,cinii
# 개별 API 키 (필요한 것만 입력)
LOSI_API_KEY=your_losi_key
HISTORY_API_KEY=your_history_key
DATA_GO_KR_API_KEY=your_data_go_kr_key
CINII_API_KEY=your_cinii_key
GUGAK_API_KEY=your_gugak_key
TRIPITAKA_API_KEY=your_tripitaka_key
FOLKENCY_API_KEY=your_folkency_key
STDICT_API_KEY=your_stdict_keyAPI 키 발급
Provider | 발급처 | 비고 |
LOSI | 회원가입 후 신청 | |
HGIS | 역사지리정보 | |
NL | KORCIS 사용 시 키 불필요 | |
CiNii | 일본 NII 계정 필요 | |
Gugak | "학술연구-고서" 신청 | |
Tripitaka | "고려대장경지식베이스" 신청 | |
Folkency | "한국민속대백과사전" 신청 | |
Stdict | 회원가입 후 API 키 신청 | |
KoreanTK | "지식재산 용어사전" 신청 | |
Eyis | "여성사전시관 인물연구" 신청 |
커스터마이징
이 프로젝트는 자유롭게 수정해서 사용할 수 있습니다.
Provider 추가/제거
.env 파일의 ENABLED_PROVIDERS에서 원하는 것만 활성화:
# 예: KCI와 CiNii만 사용
ENABLED_PROVIDERS=kci,cinii새 Provider 작성
src/academic_mcp/providers/ 폴더에 새 Provider 추가:
from academic_mcp.providers.base import BaseProvider
class MyProvider(BaseProvider):
name = "my_provider"
display_name = "My Custom Provider"
async def search(self, query):
# 구현
pass프로젝트 구조
academic-mcp/
├── src/academic_mcp/
│ ├── __main__.py # 진입점
│ ├── server.py # MCP 서버 설정
│ ├── config.py # 환경 변수 설정
│ ├── models.py # 데이터 모델
│ ├── tools.py # MCP 도구 정의
│ └── providers/ # 데이터베이스별 Provider
│ ├── base.py
│ ├── kci.py # KCI (OAI-PMH)
│ ├── oak.py # OAK (OAI-PMH)
│ ├── kostma.py
│ ├── losi.py
│ ├── hgis.py
│ ├── nl.py
│ └── cinii.py
├── .env.example
└── pyproject.toml다른 MCP 클라이언트
Claude Desktop 외에도 MCP를 지원하는 도구에서 사용 가능합니다:
Cursor:
// ~/.cursor/mcp.json
{
"mcpServers": {
"academic-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/academic-mcp", "run", "academic-mcp"]
}
}
}라이선스
MIT License
관련 프로젝트
CNKI MCP - 중국 CNKI 학술 데이터베이스
Available Tools
3 toolsget_paper_detailC
논문/문헌의 상세 정보(초록, 키워드, 인용정보 등)를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| paper_id | Yes | 논문 ID | |
| source | Yes | 출처 기관. 가능한 값: ['kci', 'losi'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a retrieval operation ('조회합니다'), implying read-only behavior, but doesn't cover critical aspects like authentication needs, rate limits, error handling (e.g., invalid paper IDs), response format, or whether it's a real-time query. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose. It's front-loaded with the core action and resource, with no wasted words. However, it could be slightly more structured by explicitly separating the tool's function from the types of details retrieved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a retrieval tool with 2 required parameters), no annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., JSON structure), error conditions, or behavioral constraints. For a tool that fetches detailed information, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('paper_id' and 'source') with descriptions and required status. The description doesn't add any parameter-specific details beyond what's in the schema, such as examples of paper IDs or how 'source' affects the data retrieved. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('조회합니다' - retrieves/looks up) and resource ('논문/문헌의 상세 정보' - detailed information of papers/documents), specifying what information is retrieved (abstract, keywords, citation info). It distinguishes from 'search' (which likely finds papers) and 'list_providers' (which likely lists sources), though the differentiation could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing a paper ID), when not to use it (e.g., for searching papers), or how it relates to sibling tools like 'search' (which might return brief results) or 'list_providers' (which might list available sources).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersB
사용 가능한 학술 DB 목록을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action ('retrieves a list') without mentioning any behavioral traits such as whether it's read-only, if it requires authentication, rate limits, or what the output format might be. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence in Korean that directly states the tool's purpose without any fluff or redundancy. It is appropriately sized and front-loaded, making it easy to understand at a glance. Every word earns its place, contributing to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what the returned list contains (e.g., provider names, IDs, metadata), how it's structured, or any prerequisites. For a tool that might return complex data (academic databases), more context is needed to understand the output and usage implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline score of 4 is given as it handles the lack of parameters correctly without unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '사용 가능한 학술 DB 목록을 조회합니다' (Retrieves a list of available academic databases). It specifies the verb '조회합니다' (retrieves) and the resource '학술 DB 목록' (academic database list). However, it doesn't explicitly distinguish this tool from its siblings (get_paper_detail, search), which might have overlapping academic contexts, so it doesn't reach a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention its siblings (get_paper_detail, search) or specify contexts where listing providers is preferred over searching or getting details. This lack of comparative usage information limits its effectiveness in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
여러 학술 DB에서 논문/문헌을 통합 검색합니다. 키워드, 저자, 연도 등으로 검색할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | 검색 키워드 | |
| author | No | 저자명 (선택) | |
| year_from | No | 시작 연도 (선택) | |
| year_to | No | 종료 연도 (선택) | |
| providers | No | 검색할 기관 목록 (선택). 가능한 값: ['kci', 'losi'] | |
| category | No | 검색할 카테고리 (선택). papers(논문), ancient(고서류), dictionary(사전류) | |
| max_results | No | 최대 결과 수 (기본: 20, 최대: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool performs integrated search across multiple databases but lacks details on behavioral traits such as rate limits, authentication requirements, pagination behavior, or what happens with partial matches. The description is minimal and doesn't adequately disclose operational characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that efficiently state the tool's function and examples of search criteria. It's front-loaded with the core purpose, though it could be slightly more structured by explicitly mentioning it's a read-only operation or default behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations, and no output schema, the description is insufficient. It doesn't explain what the search returns (e.g., result format, fields included), how results are sorted, or error handling. For a search tool with multiple parameters and no structured output, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by listing examples of search criteria (keyword, author, year) but doesn't provide additional semantic context beyond what's in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '통합 검색합니다' (integrated search) across multiple academic databases for papers/documents. It specifies the resource (academic papers/documents) and scope (multiple databases), though it doesn't explicitly differentiate from sibling tools like 'get_paper_detail' or 'list_providers'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions what the tool does but doesn't indicate scenarios where 'search' is appropriate versus 'get_paper_detail' (likely for retrieving specific paper details) or 'list_providers' (likely for listing available databases).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no ambiguity: get_paper_detail retrieves detailed metadata for a specific paper, list_providers shows available academic databases, and search performs cross-database searches. There is no overlap in functionality that would cause misselection.
All three tools follow a consistent verb_noun pattern (get_paper_detail, list_providers, search). While 'search' is a single verb without an explicit noun, it fits naturally as a search action in this context and maintains readability with the other tools.
With only 3 tools, the set feels thin for an academic research server. While the tools cover basic operations (search, detail retrieval, provider listing), more comprehensive functionality like citation analysis, paper recommendations, or database-specific operations would enhance the scope. It's borderline but functional for minimal use.
The tool surface covers core search and retrieval workflows but has notable gaps. There is no way to save papers, manage collections, track citations over time, or access full-text content. Agents can work around this by using the provided tools, but advanced academic tasks will be limited.
Maintenance
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
Semantic search across Japan's government white papers, in English or Japanese. Free beta.
Korean fact-verification tools for AI agents: business registration, address, DART, apt prices, laws
Search Japanese company credit, financials, subsidies, and procurement via AI agents.
Korea-native MCP gateway: Korean commerce, payments, messaging, gov & finance APIs for AI agents.
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides a structured interface to the Japanese National Diet Library's parliamentary proceedings API, allowing AI models to search and retrieve Diet meeting records and speeches.31
- FlicenseNot gradedqualityDmaintenanceEnables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.73
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, retrieve, and analyze South Korean legal documents including statutes, precedents, constitutional decisions, and administrative rulings via the Ministry of Government Legislation Open API. Provides 89 specialized tools with features like legal abbreviation auto-recognition, annex extraction, and complex research chain workflows.MIT
- FlicenseAqualityBmaintenanceEnables searching and retrieving full text and translations from the Korean Classics Database (ITKC), including collections such as the Annals of the Joseon Dynasty, Seungjeongwon Ilgi, Ilseongnok, and more.6
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xinyousuozhi/academic-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server