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
from datetime import date
from pydantic import BaseModel, Field
from enum import Enum
class ProviderCategory(str, Enum):
"""Provider 카테고리"""
PAPERS = "papers" # 논문
ANCIENT = "ancient" # 고서류
DICTIONARY = "dictionary" # 사전류 및 기타
class Author(BaseModel):
"""저자 정보"""
name: str
affiliation: str | None = None
orcid: str | None = None
class Paper(BaseModel):
"""논문/문헌 기본 정보 (검색 결과용)"""
id: str = Field(description="기관별 고유 ID")
source: str = Field(description="출처 기관 (kci, riss, dbpia 등)")
title: str
authors: list[Author] = Field(default_factory=list)
journal: str | None = None
year: int | None = None
doi: str | None = None
url: str | None = Field(default=None, description="원문 링크")
abstract: str | None = Field(default=None, description="초록 또는 요약")
class PaperDetail(Paper):
"""논문/문헌 상세 정보"""
# abstract는 Paper에 포함됨
keywords: list[str] = Field(default_factory=list)
volume: str | None = None
issue: str | None = None
pages: str | None = None
citation_count: int | None = Field(default=None, description="피인용 횟수")
references: list[str] = Field(default_factory=list, description="참고문헌 목록")
publisher: str | None = None
language: str | None = None
publication_date: date | None = None
class Citation(BaseModel):
"""인용 정보"""
citing_paper_id: str
citing_paper_title: str
citing_paper_authors: list[str] = Field(default_factory=list)
citing_paper_year: int | None = None
source: str
class SearchQuery(BaseModel):
"""검색 쿼리"""
keyword: str = Field(description="검색 키워드")
author: str | None = Field(default=None, description="저자명")
year_from: int | None = Field(default=None, description="시작 연도")
year_to: int | None = Field(default=None, description="종료 연도")
providers: list[str] | None = Field(default=None, description="검색할 기관 목록 (None이면 전체)")
category: ProviderCategory | None = Field(default=None, description="검색할 카테고리 (None이면 전체)")
max_results: int = Field(default=20, ge=1, le=100, description="최대 결과 수")
class SearchResult(BaseModel):
"""검색 결과"""
query: SearchQuery
total_count: int
papers: list[Paper]
errors: dict[str, str] = Field(default_factory=dict, description="기관별 에러 메시지")