Skip to main content
Glama
JackKuo666

PubTator-MCP-Server

by JackKuo666

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

์ˆ˜๋™ ์„ค์น˜

  1. ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.

    git clone https://github.com/JackKuo666/PubTator-MCP-Server.git
    cd PubTator-MCP-Server
  2. ์ข…์†์„ฑ ์„ค์น˜:

    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 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

    docker build -t pubtator-mcp-server .
  2. Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    docker run -p 8080:8080 pubtator-mcp-server

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ PubTator MCP ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜์–ด ํฌํŠธ 8080์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ:

  1. ์ฝ˜์†” ์ถœ๋ ฅ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

  2. ๋ชจ๋“  ํ•„์ˆ˜ ์ข…์†์„ฑ์ด ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”(์š”๊ตฌ ์‚ฌํ•ญ ์„น์…˜ ์ฐธ์กฐ).

  3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  4. ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉด ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.

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
)

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์˜ ์„œ๋น„์Šค ์•ฝ๊ด€์„ ์ค€์ˆ˜ํ•˜๊ณ  ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    16
    15
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    This 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.
    16
    8
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Read-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.
    1
    Apache 2.0