PubTator-MCP-Server
PubTator MCP ์๋ฒ
๐ PubTator3 ๊ธฐ๋ฐ์ ์๋ฌผ์ํ ๋ฌธํ ์ฃผ์ ๋ฐ ๊ด๊ณ ๋ง์ด๋ ์๋ฒ๋ก, MCP ์ธํฐํ์ด์ค๋ฅผ ํตํด ํธ๋ฆฌํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
PubTator MCP ์๋ฒ๋ AI ์ด์์คํดํธ์๊ฒ ๋ชจ๋ธ ์ปจํ ์คํธ ํ๋กํ ์ฝ(MCP)์ ํตํด PubTator3 ์๋ฌผ์ํ ๋ฌธํ ์ฃผ์ ์์คํ ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด AI ๋ชจ๋ธ์ ๊ณผํ ๋ฌธํ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ฒ์ํ๊ณ , ์ฃผ์ ์ ๋ณด๋ฅผ ์ป๊ณ , ๊ฐ์ฒด ๊ด๊ณ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
๐ค ๊ธฐ์ฌ โข ๐ ๋ฌธ์ ๋ณด๊ณ
โจ ํต์ฌ ๊ธฐ๋ฅ
๐ ๋ฌธํ ์ฃผ์ ๋ด๋ณด๋ด๊ธฐ: PubTator ์ฃผ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฌ ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ ์ง์ โ
๐ ์ํฐํฐ ID ์กฐํ: ์์ ํ ์คํธ๋ฅผ ํตํด ์๋ฌผํ์ ๊ฐ๋ ์ ๋ํ ํ์ค ์๋ณ์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค. โ
๐ ๊ด๊ณ ๋ง์ด๋: ๊ฐ์ฒด ๊ฐ ์๋ฌผํ์ ๊ด๊ณ๋ฅผ ๋ฐ๊ฒฌํ์ธ์ โ
๐ ๋ฌธํ ๊ฒ์: ํค์๋ ๋ฐ ์ํฐํฐ ID๋ก ๋ฌธํ ๊ฒ์ ์ง์ โ
๐ง ์ผ๊ด ์ฒ๋ฆฌ: ๊ฒ์ ๊ฒฐ๊ณผ์์ ์ฃผ์ ์ ๋ณด์ ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ ์ง์ โ
Related MCP server: pubmed-search
๐ ๋น ๋ฅธ ์์
์๊ตฌ ์ฌํญ
ํ์ด์ฌ 3.10+
FastMCP ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ค์น
์ค๋ฏธ์๋ฆฌ๋ฅผ ํตํด
Smithery๋ฅผ ์ฌ์ฉํ์ฌ PubTator Server๋ฅผ ์๋์ผ๋ก ์ค์นํ์ธ์.
ํด๋ก๋
์ง์์คํผ1
์ปค์
์ค์ โ ์ปค์ ์ค์ โ MCP โ ์ ์๋ฒ ์ถ๊ฐ์ ๋ถ์ฌ๋ฃ๊ธฐ:
๋งฅ/๋ฆฌ๋ ์ค
npx -y @smithery/cli@latest run @JackKuo666/pubtator-mcp-server --client cursor --config "{}" ์๋์ํ
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client windsurf --config "{}"C๋ผ์ธ
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client cline --config "{}"์๋ ์ค์น
์ ์ฅ์๋ฅผ ๋ณต์ ํฉ๋๋ค.
git clone https://github.com/JackKuo666/PubTator-MCP-Server.git cd PubTator-MCP-Server์ข ์์ฑ ์ค์น:
pip install -r requirements.txt
๐ ์ฌ์ฉ๋ฒ
์๋ฒ๋ฅผ ์ง์ ์คํ
MCP ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
python pubtator_server.py์ด์ ์๋ฒ๋ stdio์ TCP ์ ์ก์ ๋ชจ๋ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก TCP ์ ์ก์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
MCP_TRANSPORT: TCP ์ ์ก์ ๊ฒฝ์ฐ "tcp"๋ก ์ค์ ํ๊ณ stdio ์ ์ก์ ๊ฒฝ์ฐ "stdio"๋ก ์ค์ ํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ์ "tcp").MCP_HOST: ๋ฐ์ธ๋ฉํ ํธ์คํธ(๊ธฐ๋ณธ๊ฐ์ "0.0.0.0")MCP_PORT: ์์ ํ ํฌํธ(๊ธฐ๋ณธ๊ฐ์ 8080)
์ฌ์ฉ์ ์ ์ ์ค์ ์ผ๋ก ์๋ฒ๋ฅผ ์์ํ๋ ์:
MCP_TRANSPORT=tcp MCP_HOST=127.0.0.1 MCP_PORT=8888 python pubtator_server.py์๋ฒ๋ ์ง์ฐ ์ด๊ธฐํ์ ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ข ๋ฃ ์ ํธ(SIGINT ๋ฐ SIGTERM)๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์์ ๋๋ ์๋ ์ค ๋ฐ์ํ๋ ๋ชจ๋ ์ค๋ฅ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
Docker ์ฌ์ฉ
๊ฐํธํ ๋ฐฐํฌ๋ฅผ ์ํด Dockerfile์ ์ ๊ณตํฉ๋๋ค. Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค.
docker build -t pubtator-mcp-server .Docker ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค.
docker run -p 8080:8080 pubtator-mcp-server
์ด๋ ๊ฒ ํ๋ฉด Docker ์ปจํ ์ด๋ ๋ด๋ถ์์ PubTator MCP ์๋ฒ๊ฐ ์์๋์ด ํฌํธ 8080์ ๋ ธ์ถ๋ฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
์๋ฒ๋ฅผ ์์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ:
์ฝ์ ์ถ๋ ฅ์์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ธํ์ธ์.
๋ชจ๋ ํ์ ์ข ์์ฑ์ด ์ค์น๋์๋์ง ํ์ธํ์ธ์(์๊ตฌ ์ฌํญ ์น์ ์ฐธ์กฐ).
ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธํ์ธ์.
์๋ฒ๊ฐ ์์๋์ง ์์ผ๋ฉด ์์ธํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ ์คํํด๋ณด์ธ์.
python -v pubtator_server.py์ด๋ฅผ ํตํด ๋ฌธ์ ์ ๊ทผ์์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ๋์ฑ ์์ธํ ๋ก๊น ์ ๋ณด๊ฐ ์ ๊ณต๋ฉ๋๋ค.
Docker๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ํตํด ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
docker logs <container_id>๊ตฌ์ฑ
ํด๋ก๋ ๋ฐ์คํฌํฑ ๊ตฌ์ฑ
claude_desktop_config.json ์ ์ถ๊ฐ:
(๋งฅ OS)
{
"mcpServers": {
"pubtator": {
"command": "python",
"args": ["-m", "pubtator-mcp-server"]
}
}
}(์๋์ฐ)
{
"mcpServers": {
"pubtator": {
"command": "C:\\Users\\YOUR\\PATH\\miniconda3\\envs\\mcp_server\\python.exe",
"args": [
"D:\\code\\YOUR\\PATH\\PubTator-MCP-Server\\pubtator_server.py"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}CLine ๊ตฌ์ฑ
{
"mcpServers": {
"pubtator": {
"command": "bash",
"args": [
"-c",
"source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py"
],
"env": {
"MCP_TRANSPORT": "stdio"
},
"disabled": false,
"autoApprove": []
}
}
}TCP ์ ์ก์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ์ ์์ ํ์ธ์.
{
"mcpServers": {
"pubtator": {
"command": "bash",
"args": [
"-c",
"source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py"
],
"env": {
"MCP_TRANSPORT": "tcp",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8888"
},
"disabled": false,
"autoApprove": []
}
}
}๐ API ๊ธฐ๋ฅ
PubTator MCP ์๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
1. ์ถํ๋ฌผ ๋ด๋ณด๋ด๊ธฐ(export_publications)
์ง์ ๋ PMID ๋ฌธํ์ ๋ํ PubTator ์ฃผ์ ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ:
result = await export_publications(
ids=["32133824", "34170578"],
id_type="pmid",
format="biocjson", # Supported: pubtator, biocxml, biocjson
full_text=False # Whether to include full text
)2. ์ํฐํฐ ID ์กฐํ(find_entity_id)
์์ ํ ์คํธ๋ฅผ ํตํด ์๋ฌผํ์ ๊ฐ๋ ์ ๋ํ ํ์ค ์๋ณ์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
result = await find_entity_id(
query="COVID-19",
concept="disease", # Optional: gene, disease, chemical, species, mutation
limit=5 # Optional: limit number of results
)3. ๊ด๊ณ ์ฟผ๋ฆฌ(find_related_entities)
์ง์ ๋ ์ํฐํฐ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ํฐํฐ ์ฐพ๊ธฐ:
result = await find_related_entities(
entity_id="@DISEASE_COVID_19",
relation_type="treat", # Optional: treat, cause, interact, etc.
target_entity_type="chemical", # Optional: gene, disease, chemical
max_results=5 # Optional: limit number of results
)4. ๋ฌธํ ๊ฒ์(search_pubtator)
PubTator ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์:
results = await search_pubtator(
query="COVID-19",
max_pages=1 # Optional: maximum number of pages to retrieve
)5. ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ(batch_export_from_search)
๋ฌธํ ์ฃผ์ ๊ฒ์ ๋ฐ ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ:
results = await batch_export_from_search(
query="COVID-19",
format="biocjson",
max_pages=1,
full_text=False,
batch_size=5
)์ฐธ๊ณ : ์ค์ ํจ์ ํธ์ถ์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด ์์๋ ์ต๊ทผ ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ค์ API์ ๋ง๊ฒ ์กฐ์ ํด์ผ ํ ์๋ ์์ต๋๋ค.
โ ๏ธ ์ฌ์ฉ ์ ํ
API ์์ฒญ ์๋ ์ ํ: ์ด๋น ์ต๋ 3๊ฐ ์์ฒญ
์ผ๊ด ๋ด๋ณด๋ด๊ธฐ ์ ์์ฒญ ์๊ฐ ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ ํ batch_size๋ฅผ ์ฌ์ฉํ์ธ์.
๊ด๊ณ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ํฐํฐ ID๋ "@"๋ก ์์ํด์ผ ํฉ๋๋ค(์: "@DISEASE_COVID-19").
๐ ๋ผ์ด์ผ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋์์ต๋๋ค.
โ ๏ธ ๋ฉด์ฑ ์กฐํญ
์ด ๋๊ตฌ๋ ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. PubTator์ ์๋น์ค ์ฝ๊ด์ ์ค์ํ๊ณ ์ฑ ์๊ฐ ์๊ฒ ์ฌ์ฉํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
This server cannot be deployed
Maintenance
Related MCP Connectors
PubTator 3 MCP โ biomedical entity search, literature search with entity
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
MCP gateway federating 22 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
PubMed MCP โ wraps the NCBI E-utilities API (biomedical literature, free, no auth)
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive access to NCBI's PubMed database of over 36 million biomedical citations, allowing users to search, retrieve, and analyze literature directly through MCP tools. It supports advanced queries, citation management, full-text retrieval from PubMed Central, and precise discovery using MeSH terms.1615MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for PubMed search and literature summarization52MIT
- AlicenseBqualityDmaintenanceThis MCP server provides 16 intelligent tools for searching, retrieving, and linking biomedical literature from PubMed and PMC. It enables LLM applications to perform complex queries, batch processing, and cross-database linking.168MIT
- AlicenseNot gradedqualityAmaintenanceRead-only biomedical MCP server connecting PubMed, ClinicalTrials.gov, ClinVar, gnomAD, OncoKB, Reactome, KEGG, UniProt, PharmGKB, CPIC, OpenFDA, Monarch Initiative, GWAS Catalog, and more. One command grammar for all biomedical entities โ genes, variants, diseases, drugs, trials, articles, phenotypes, pathways, proteins, diagnostics, and adverse events. 27 tools. Apache-2.0 license.1Apache 2.0