PubTator MCP ์๋ฒ
๐ PubTator3 ๊ธฐ๋ฐ์ ์๋ฌผ์ํ ๋ฌธํ ์ฃผ์ ๋ฐ ๊ด๊ณ ๋ง์ด๋ ์๋ฒ๋ก, MCP ์ธํฐํ์ด์ค๋ฅผ ํตํด ํธ๋ฆฌํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
PubTator MCP ์๋ฒ๋ AI ์ด์์คํดํธ์๊ฒ ๋ชจ๋ธ ์ปจํ ์คํธ ํ๋กํ ์ฝ(MCP)์ ํตํด PubTator3 ์๋ฌผ์ํ ๋ฌธํ ์ฃผ์ ์์คํ ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด AI ๋ชจ๋ธ์ ๊ณผํ ๋ฌธํ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ฒ์ํ๊ณ , ์ฃผ์ ์ ๋ณด๋ฅผ ์ป๊ณ , ๊ฐ์ฒด ๊ด๊ณ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
๐ค ๊ธฐ์ฌ โข ๐ ๋ฌธ์ ๋ณด๊ณ
โจ ํต์ฌ ๊ธฐ๋ฅ
๐ ๋ฌธํ ์ฃผ์ ๋ด๋ณด๋ด๊ธฐ: PubTator ์ฃผ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฌ ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ ์ง์ โ
๐ ์ํฐํฐ ID ์กฐํ: ์์ ํ ์คํธ๋ฅผ ํตํด ์๋ฌผํ์ ๊ฐ๋ ์ ๋ํ ํ์ค ์๋ณ์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค. โ
๐ ๊ด๊ณ ๋ง์ด๋: ๊ฐ์ฒด ๊ฐ ์๋ฌผํ์ ๊ด๊ณ๋ฅผ ๋ฐ๊ฒฌํ์ธ์ โ
๐ ๋ฌธํ ๊ฒ์: ํค์๋ ๋ฐ ์ํฐํฐ ID๋ก ๋ฌธํ ๊ฒ์ ์ง์ โ
๐ง ์ผ๊ด ์ฒ๋ฆฌ: ๊ฒ์ ๊ฒฐ๊ณผ์์ ์ฃผ์ ์ ๋ณด์ ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ ์ง์ โ
Related MCP server: PubMed MCP Server
๐ ๋น ๋ฅธ ์์
์๊ตฌ ์ฌํญ
ํ์ด์ฌ 3.10+
FastMCP ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ค์น
์ค๋ฏธ์๋ฆฌ๋ฅผ ํตํด
Smithery๋ฅผ ์ฌ์ฉํ์ฌ PubTator Server๋ฅผ ์๋์ผ๋ก ์ค์นํ์ธ์.
ํด๋ก๋
์ง์์คํผ1
์ปค์
์ค์ โ ์ปค์ ์ค์ โ MCP โ ์ ์๋ฒ ์ถ๊ฐ์ ๋ถ์ฌ๋ฃ๊ธฐ:
๋งฅ/๋ฆฌ๋ ์ค
์๋์ํ
C๋ผ์ธ
์๋ ์ค์น
์ ์ฅ์๋ฅผ ๋ณต์ ํฉ๋๋ค.
git clone https://github.com/JackKuo666/PubTator-MCP-Server.git cd PubTator-MCP-Server์ข ์์ฑ ์ค์น:
pip install -r requirements.txt
๐ ์ฌ์ฉ๋ฒ
์๋ฒ๋ฅผ ์ง์ ์คํ
MCP ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
์ด์ ์๋ฒ๋ stdio์ TCP ์ ์ก์ ๋ชจ๋ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก TCP ์ ์ก์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
MCP_TRANSPORT: TCP ์ ์ก์ ๊ฒฝ์ฐ "tcp"๋ก ์ค์ ํ๊ณ stdio ์ ์ก์ ๊ฒฝ์ฐ "stdio"๋ก ์ค์ ํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ์ "tcp").MCP_HOST: ๋ฐ์ธ๋ฉํ ํธ์คํธ(๊ธฐ๋ณธ๊ฐ์ "0.0.0.0")MCP_PORT: ์์ ํ ํฌํธ(๊ธฐ๋ณธ๊ฐ์ 8080)
์ฌ์ฉ์ ์ ์ ์ค์ ์ผ๋ก ์๋ฒ๋ฅผ ์์ํ๋ ์:
์๋ฒ๋ ์ง์ฐ ์ด๊ธฐํ์ ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ข ๋ฃ ์ ํธ(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์ ๋ ธ์ถ๋ฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
์๋ฒ๋ฅผ ์์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ:
์ฝ์ ์ถ๋ ฅ์์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ธํ์ธ์.
๋ชจ๋ ํ์ ์ข ์์ฑ์ด ์ค์น๋์๋์ง ํ์ธํ์ธ์(์๊ตฌ ์ฌํญ ์น์ ์ฐธ์กฐ).
ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธํ์ธ์.
์๋ฒ๊ฐ ์์๋์ง ์์ผ๋ฉด ์์ธํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ ์คํํด๋ณด์ธ์.
์ด๋ฅผ ํตํด ๋ฌธ์ ์ ๊ทผ์์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ๋์ฑ ์์ธํ ๋ก๊น ์ ๋ณด๊ฐ ์ ๊ณต๋ฉ๋๋ค.
Docker๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ํตํด ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ
ํด๋ก๋ ๋ฐ์คํฌํฑ ๊ตฌ์ฑ
claude_desktop_config.json ์ ์ถ๊ฐ:
(๋งฅ OS)
(์๋์ฐ)
CLine ๊ตฌ์ฑ
TCP ์ ์ก์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ์ ์์ ํ์ธ์.
๐ API ๊ธฐ๋ฅ
PubTator MCP ์๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
1. ์ถํ๋ฌผ ๋ด๋ณด๋ด๊ธฐ(export_publications)
์ง์ ๋ PMID ๋ฌธํ์ ๋ํ PubTator ์ฃผ์ ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ:
2. ์ํฐํฐ ID ์กฐํ(find_entity_id)
์์ ํ ์คํธ๋ฅผ ํตํด ์๋ฌผํ์ ๊ฐ๋ ์ ๋ํ ํ์ค ์๋ณ์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
3. ๊ด๊ณ ์ฟผ๋ฆฌ(find_related_entities)
์ง์ ๋ ์ํฐํฐ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ํฐํฐ ์ฐพ๊ธฐ:
4. ๋ฌธํ ๊ฒ์(search_pubtator)
PubTator ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์:
5. ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ(batch_export_from_search)
๋ฌธํ ์ฃผ์ ๊ฒ์ ๋ฐ ์ผ๊ด ๋ด๋ณด๋ด๊ธฐ:
์ฐธ๊ณ : ์ค์ ํจ์ ํธ์ถ์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด ์์๋ ์ต๊ทผ ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ค์ API์ ๋ง๊ฒ ์กฐ์ ํด์ผ ํ ์๋ ์์ต๋๋ค.
โ ๏ธ ์ฌ์ฉ ์ ํ
API ์์ฒญ ์๋ ์ ํ: ์ด๋น ์ต๋ 3๊ฐ ์์ฒญ
์ผ๊ด ๋ด๋ณด๋ด๊ธฐ ์ ์์ฒญ ์๊ฐ ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ ํ batch_size๋ฅผ ์ฌ์ฉํ์ธ์.
๊ด๊ณ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ํฐํฐ ID๋ "@"๋ก ์์ํด์ผ ํฉ๋๋ค(์: "@DISEASE_COVID-19").
๐ ๋ผ์ด์ผ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋์์ต๋๋ค.
โ ๏ธ ๋ฉด์ฑ ์กฐํญ
์ด ๋๊ตฌ๋ ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. PubTator์ ์๋น์ค ์ฝ๊ด์ ์ค์ํ๊ณ ์ฑ ์๊ฐ ์๊ฒ ์ฌ์ฉํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.