Skip to main content
Glama
huangjianhuster

Biomolecule Modeling MCP Server

생체분자 모델링 MCP 서버

AI 어시스턴트(Claude 등)가 PDB 구조를 정제하고 초기 단계 에너지 완화를 수행할 수 있게 해주는 MCP(Model Context Protocol) 서버입니다. 이는 생산용 MD 또는 조대화(예: Martini) 파이프라인 이전의 준비 단계입니다.


빠른 시작 (Claude Code)

이 서버를 사용하는 가장 쉬운 방법은 uvx를 이용하는 것입니다. 수동으로 의존성을 관리할 필요가 없습니다:

claude mcp add "biomolecule-modeling" --scope user -- \
  uvx --from git+https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp biomodeling

이것으로 끝입니다. uvx는 패키지와 모든 Python 의존성을 격리된 환경에 자동으로 설치합니다. 이 명령을 실행한 후 Claude Code를 재시작하면 활성 MCP 서버 목록에 해당 서버가 나타납니다.

OpenMM 참고: uvx는 OpenMM의 PyPI 휠(CPU 전용)을 설치합니다. GPU 가속이 필요한 경우, 먼저 conda를 통해 OpenMM을 설치하고(conda install -c conda-forge openmm pdbfixer) 수동 설치 방법을 사용하세요.


Related MCP server: PLUMED2 MCP Server

주요 기능

이 서버는 LLM이 구조화된 워크플로우를 따르도록 안내하는 일련의 도구를 제공합니다:

query_pdb_structure          # inspect chains, sequences, gaps, structural breaks
  └─ split_pdb               # separate protein / nucleic acid / ligands
       └─ fix_pdb_structure  # clean structure (PDBFixer): residues, hydrogens, heavy atoms
            └─ assemble_pdb_structures  # recombine components after separate fixing
                 └─ relax_pdb_structure # energy minimise ± short restrained MD (OpenMM)

언제든지 get_workflow_report를 호출하면 LLM이 내린 모든 결정과 그 근거가 포함된 마크다운 요약본을 얻을 수 있으며, 이를 디스크에 저장할 수 있습니다.


도구

도구

설명

query_pdb_structure

체인 수준 검사: 유형, 서열, 잔기 범위, 번호 매기기 간격, 백본 끊김

split_pdb

다중 구성 요소 PDB를 유형별 파일(단백질, 핵산, 리간드)로 분할

fix_pdb_structure

PDBFixer 래퍼: 이종 원자 제거, 비표준 잔기 교체, 누락된 원자/수소 추가

assemble_pdb_structures

여러 PDB 파일을 충돌 해결과 함께 하나로 병합

relax_pdb_structure

OpenMM 에너지 최소화 + 선택적 단기 백본 제한 MD

query_ff_presets

사용 가능한 힘장(force-field) 프리셋 및 매개변수 목록

get_workflow_report

모든 도구 호출 및 LLM 추론에 대한 마크다운 보고서 반환 및/또는 저장

reset_workflow_report

새 구조를 위해 세션 로그 초기화

set_working_directory

상대 경로 확인을 위한 작업 디렉토리 변경


힘장(Force-Field) 프리셋

프리셋

용매

참고

amber14_implicit

GBn2 암시적

기본값. 주기적 상자 불필요. 빠름.

amber14_explicit

TIP3P-FB 명시적

미리 용매화된 주기적 상자 필요

amber99sb_implicit

OBC2 암시적

구형 AMBER, 암시적 용매

charmm36_explicit

CHARMM TIP3P 명시적

미리 용매화된 주기적 상자 필요


수동 설치

GPU 가속 OpenMM을 원하거나 로컬 체크아웃을 선호하는 경우 이 방법을 사용하세요.

1. OpenMM 설치 (GPU 지원을 위해 conda 권장)

conda install -c conda-forge openmm pdbfixer

2. 복제 및 의존성 설치

git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync

3. Claude Code에 등록

claude mcp add "biomolecule-modeling" --scope user -- \
  /path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.py

/path/to/uvwhich uv의 결과로 바꾸고 복제된 저장소의 절대 경로를 사용하세요.

중요: --project 대신 --directory를 사용하세요. --project는 가상 환경을 설정하지만 cwd를 호출자가 있는 위치로 남겨두어 상대 경로 utils/ 임포트가 깨질 수 있습니다.

독립형 스크립트 (MCP 클라이언트 불필요)

uv run utils/pdb_query.py structure.pdb        # inspect structure
uv run utils/pdb_fix.py input.pdb              # fix structure
uv run utils/openmm_relax.py input.pdb         # minimise structure

예시 세션

다음 예시는 Claude에게 줄 수 있는 실제 자연어 프롬프트와 그에 대응하여 서버가 실행할 도구 호출 순서를 보여줍니다.


사례 1 — RCSB에서 PDB 다운로드, 검사, 정제 및 완화

Claude에게 보내는 프롬프트:

PDB 1UBQ를 다운로드하고, 구조 정보를 쿼리하고, 단백질 부분을 정제한 다음 구조를 완화하세요.

Claude의 작업:

1단계 — 파일 다운로드

Claude가 RCSB(https://files.rcsb.org/download/1UBQ.pdb)에서 1UBQ.pdb를 가져와 로컬에 저장합니다.

2단계 — 구조 검사

query_pdb_structure(
    pdb_file="1UBQ.pdb",
    notes="Initial inspection before cleaning. Need to identify chain types, "
          "any non-standard residues, and structural gaps."
)
chains:
  A — protein, 76 residues (MET1–GLY76), no numbering gaps, no structural breaks
heterogens: HOH (58 water molecules)
non_standard_residues: []
missing_residues: []

Claude의 추론: 단일 단백질 체인, 간격 없음, 비표준 잔기 없음. 물 분자가 존재하므로 제거할 예정임. 리간드는 없으므로 바로 fix_pdb_structure로 진행 가능.

3단계 — 구조 정제

fix_pdb_structure(
    input_pdb="1UBQ.pdb",
    output_pdb="1UBQ_fixed.pdb",
    remove_heterogens=True,      # removes the 58 water molecules
    add_hydrogens=True,
    ph=7.0,
    fix_missing_residues=False,  # no gaps — nothing to fix
    notes="Removing waters, adding hydrogens at pH 7.0. No non-standard residues "
          "or gaps detected so no other fixing steps needed."
)
output_pdb: 1UBQ_fixed.pdb
n_residues: 76
n_atoms: 1231
heterogens_removed: 58
nonstandard_residues: []
missing_atoms_added: 0
hydrogens_added: true

4단계 — 구조 완화

relax_pdb_structure(
    input_pdb="1UBQ_fixed.pdb",
    output_pdb="1UBQ_relaxed.pdb",
    preset="amber14_implicit",
    run_md=False,
    notes="Minimisation-only run. Structure is clean and small (76 residues); "
          "a full MD run is not needed for clash removal."
)
output_pdb: 1UBQ_relaxed.pdb
preset_used: amber14_implicit
n_atoms: 1231
energy_initial_kJ_mol: -18423.4
energy_final_kJ_mol:   -24817.9

Claude의 요약: 최소화 과정에서 에너지가 약 6400 kJ/mol 감소함 — 수소 추가 후 결정 구조에서 일반적인 현상임. 출력 파일 1UBQ_relaxed.pdb는 후속 MD 또는 조대화 작업 준비 완료.


사례 2 — 로컬 다중 체인 구조 정제, 선택한 체인만 유지

Claude에게 보내는 프롬프트:

./structures/complex.pdb의 PDB 구조를 쿼리하고, 체인 A와 체인 B만 남기도록 정제한 후 구조를 완화하세요.

Claude의 작업:

1단계 — 구조 검사

query_pdb_structure(
    pdb_file="./structures/complex.pdb",
    notes="Inspecting the multi-chain complex before chain selection and cleaning."
)
chains:
  A — protein, 312 residues (SER5–LEU316), 2 numbering gaps (at 47–51, 203–208)
  B — protein, 289 residues (MET1–LYS289), no gaps
  C — protein, 145 residues (ALA1–GLU145), no gaps
  D — nucleic (DNA), 24 residues
heterogens: MG (3 ions), HOH (412 waters), ATP (1 molecule)
non_standard_residues: [MSE → MET in chain A (4 occurrences)]

Claude의 추론: 사용자가 체인 A와 B만 원함. 체인 A에 두 개의 번호 매기기 간격이 있음 — 결정 구조에서 짧은 무질서 루프일 가능성이 높음; 루프 모델링은 시도하지 않음. 체인 A의 MSE(셀레노메티오닌)는 MET로 변환됨. OpenMM 완화 전에 ATP와 이온은 제거해야 함.

2단계 — 체인 A와 B만 남기고 정제

fix_pdb_structure(
    input_pdb="./structures/complex.pdb",
    output_pdb="./structures/complex_AB_fixed.pdb",
    chains_to_keep=["A", "B"],
    replace_nonstandard_residues=True,   # converts MSE → MET
    remove_heterogens=True,              # removes ATP, Mg²⁺, waters
    add_missing_heavy_atoms=True,
    add_hydrogens=True,
    ph=7.0,
    fix_missing_residues=False,          # gaps are 4–5 residues; skipping loop modelling
    notes="Keeping chains A and B only per user request. Converting 4 × MSE → MET "
          "in chain A. Removing ATP, Mg ions, and waters — these cannot be "
          "parameterised with standard AMBER presets. Not fixing the two loops "
          "in chain A (gaps of 4–5 residues) to avoid poor loop geometry."
)
output_pdb: complex_AB_fixed.pdb
n_residues: 601   (312 + 289)
n_atoms: 9847
chains_kept: [A, B]
nonstandard_residues: [MSE→MET ×4 in chain A]
heterogens_removed: 416   (ATP ×1, MG ×3, HOH ×412)
missing_atoms_added: 12
hydrogens_added: true

Claude의 사용자 경고: "체인 A에는 여전히 잔기 47–51 및 203–208에 두 개의 짧은 간격이 있습니다(결정 구조에서 누락됨). 이 영역은 완화된 출력물에서 제외됩니다. 후속 시뮬레이션을 위해 완전한 루프가 필요한 경우 알려주시면 루프 모델링을 시도할 수 있습니다. 단, 이 정도 크기의 간격은 기하학적 구조가 거칠 수 있습니다."

3단계 — 2체인 복합체 완화

relax_pdb_structure(
    input_pdb="./structures/complex_AB_fixed.pdb",
    output_pdb="./structures/complex_AB_relaxed.pdb",
    preset="amber14_implicit",
    run_md=True,
    restrain_backbone=True,
    restraint_k=1000.0,
    production_steps=25000,
    notes="Running short restrained MD (25 000 steps ≈ 100 ps) to relax side chains "
          "around the 12 newly added heavy atoms and the two gap termini in chain A. "
          "Backbone restrained at 1000 kJ/mol/nm² to preserve experimental fold."
)
output_pdb: complex_AB_relaxed.pdb
preset_used: amber14_implicit
n_atoms: 9847
energy_initial_kJ_mol: -71203.1
energy_post_min_kJ_mol: -89441.6
energy_post_md_kJ_mol:  -94308.2
energy_final_kJ_mol:    -95112.4

Claude의 요약: 최소화 → MD → 최종 최소화 과정을 통해 에너지가 꾸준히 감소함. 구조가 수렴되었으며 준비 완료됨. 출력: complex_AB_relaxed.pdb.


프로젝트 구조

biomolecule-modeling-mcp/
├── main.py                  # MCP server entry point; all @mcp.tool() definitions
├── pyproject.toml           # dependencies + CLI entry point (biomodeling)
├── utils/
│   ├── pdb_query.py         # Structure inspection (BioPython)
│   ├── pdb_fix.py           # PDBFixer wrapper
│   ├── pdb_splitter.py      # Split multi-component PDB by chain type
│   ├── pdb_assemble.py      # Merge PDB files
│   └── openmm_relax.py      # OpenMM energy minimisation + restrained MD
└── data/                    # Example / test PDB files

주요 주의사항

  • 기본적으로 큰 루프를 수정하지 마세요. fix_missing_residues=False가 안전한 기본값입니다. 5~10개 잔기 이상의 루프는 PDBFixer로 작업 시 기하학적 구조가 좋지 않게 생성됩니다.

  • 리간드는 표준 완화를 방해합니다. 비표준 HETATM 잔기는 OpenMM을 AMBER/CHARMM 프리셋으로 실행하기 전에 제거(또는 별도로 매개변수화)해야 합니다.

  • OpenMM >= 8.x 암시적 용매. 암시적 용매 XML(예: implicit/gbn2.xml)은 createSystem()이 아니라 ForceField()에 전달해야 합니다.


라이선스

MIT

Install Server
F
license - not found
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations, with templates and performance suggestions.
    12
    GPL 3.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Integrates GROMACS molecular dynamics simulations with VMD visualization, enabling setup, execution, analysis, and 3D visualization of molecular dynamics workflows through natural language.
    21
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to execute computational chemistry and drug discovery workflows using Schrödinger Suites 2026, including protein preparation, docking, ADMET, QM/MM calculations, and job management.
    28
    MIT

View all related MCP servers

Related MCP Connectors

  • AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP

  • Build, validate, and deploy multi-agent AI solutions from any AI environment.

  • Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/huangjianhuster/biomolecule-modeling-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server