PubTator-MCP-Server

by JackKuo666
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides containerized deployment of the PubTator MCP server with a ready-to-use Dockerfile for easy setup and isolation

  • Requires Python 3.10+ to run the server, with explicit configuration examples and installation instructions for Python environments

  • Supports exporting PubTator annotation results in biocxml format for biomedical literature annotations

PubTator MCP 서버

🔍 PubTator3 기반의 생물의학 문헌 주석 및 관계 마이닝 서버로, MCP 인터페이스를 통해 편리한 액세스를 제공합니다.

PubTator MCP 서버는 AI 어시스턴트에게 모델 컨텍스트 프로토콜(MCP)을 통해 PubTator3 생물의학 문헌 주석 시스템에 대한 접근 권한을 제공합니다. 이를 통해 AI 모델은 과학 문헌을 프로그래밍 방식으로 검색하고, 주석 정보를 얻고, 개체 관계를 분석할 수 있습니다.

🤝 기여 • 📝 문제 보고

✨ 핵심 기능

  • 🔎 문헌 주석 내보내기: PubTator 주석 결과를 여러 형식으로 내보내기 지원 ✅
  • 🚀 엔터티 ID 조회: 자유 텍스트를 통해 생물학적 개념에 대한 표준 식별자를 쿼리합니다. ✅
  • 📊 관계 마이닝: 개체 간 생물학적 관계를 발견하세요 ✅
  • 📄 문헌 검색: 키워드 및 엔터티 ID로 문헌 검색 지원 ✅
  • 🧠 일괄 처리: 검색 결과에서 주석 정보의 일괄 내보내기 지원 ✅

🚀 빠른 시작

요구 사항

  • 파이썬 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 )

지정된 엔터티와 관련된 다른 엔터티 찾기:

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 )

문헌 주석 검색 및 일괄 내보내기:

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의 서비스 약관을 준수하고 책임감 있게 사용해 주시기 바랍니다.

ID: o73lb2h19m