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이 내린 모든 결정과 그 근거가 포함된 마크다운 요약본을 얻을 수 있으며, 이를 디스크에 저장할 수 있습니다.
도구
도구 | 설명 |
| 체인 수준 검사: 유형, 서열, 잔기 범위, 번호 매기기 간격, 백본 끊김 |
| 다중 구성 요소 PDB를 유형별 파일(단백질, 핵산, 리간드)로 분할 |
| PDBFixer 래퍼: 이종 원자 제거, 비표준 잔기 교체, 누락된 원자/수소 추가 |
| 여러 PDB 파일을 충돌 해결과 함께 하나로 병합 |
| OpenMM 에너지 최소화 + 선택적 단기 백본 제한 MD |
| 사용 가능한 힘장(force-field) 프리셋 및 매개변수 목록 |
| 모든 도구 호출 및 LLM 추론에 대한 마크다운 보고서 반환 및/또는 저장 |
| 새 구조를 위해 세션 로그 초기화 |
| 상대 경로 확인을 위한 작업 디렉토리 변경 |
힘장(Force-Field) 프리셋
프리셋 | 용매 | 참고 |
| GBn2 암시적 | 기본값. 주기적 상자 불필요. 빠름. |
| TIP3P-FB 명시적 | 미리 용매화된 주기적 상자 필요 |
| OBC2 암시적 | 구형 AMBER, 암시적 용매 |
| CHARMM TIP3P 명시적 | 미리 용매화된 주기적 상자 필요 |
수동 설치
GPU 가속 OpenMM을 원하거나 로컬 체크아웃을 선호하는 경우 이 방법을 사용하세요.
1. OpenMM 설치 (GPU 지원을 위해 conda 권장)
conda install -c conda-forge openmm pdbfixer2. 복제 및 의존성 설치
git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync3. Claude Code에 등록
claude mcp add "biomolecule-modeling" --scope user -- \
/path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.py/path/to/uv를 which 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: true4단계 — 구조 완화
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.9Claude의 요약: 최소화 과정에서 에너지가 약 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: trueClaude의 사용자 경고: "체인 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.4Claude의 요약: 최소화 → 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
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations using a set of MCP tools.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations, with templates and performance suggestions.12GPL 3.0
- AlicenseNot gradedqualityFmaintenanceIntegrates GROMACS molecular dynamics simulations with VMD visualization, enabling setup, execution, analysis, and 3D visualization of molecular dynamics workflows through natural language.21MIT
- AlicenseAqualityBmaintenanceEnables 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.28MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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