# Protein Design MCP

> Compose auditable protein-design operations through the configured OpenAI4S protein-design MCP connector: target-conditioned RFdiffusion backbone generation, constrained ProteinMPNN sequence design, monomer or complex structure prediction, Rosetta scoring and relaxation, ESM-2 sequence naturalness scoring, and OpenMM minimization. Use when designing or redesigning proteins, creating target-binding proteins, preserving sequence motifs, validating candidate structures or complexes, refining structures, or ranking protein-design candidates with reproducible model evidence.

- Skill: `pku-yuangroup/protein-design-mcp` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add pku-yuangroup/protein-design-mcp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/pku-yuangroup/protein-design-mcp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: pku-yuangroup (https://skillmd.com/u/pku-yuangroup)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/pku-yuangroup/protein-design-mcp

---


# Compose protein-design operations over MCP

Select atomic tools according to the scientific objective. Do not force every
task through one pipeline, and do not treat a model score as experimental proof.

## Discover the connector

Find the enabled connector with `host.mcp.list()`, then inspect it with
`host.mcp.tools(server)`. The connector can expose:

- `generate_backbone`
- `design_sequence`
- `predict_structure`
- `predict_complex`
- `rosetta_score`
- `rosetta_relax`
- `rosetta_interface_score`
- `score_stability`
- `energy_minimize`

Discovery shows that the server started. Before running a model, also verify
its execution route, external environment, pinned revision, checkpoint,
compute resources and required network-isolation mechanism.

## Select compute before provisioning

Call `host.accelerator_status()` before any GPU-only operation. It probes the
daemon's local GPUs first and then lists configured SSH GPU routes. These are
different from a BYOC provider catalogue and from model-backend readiness.

When both a local route and one or more SSH routes are candidates, ask the user
to choose `local` or `ssh:<alias>` before downloading, installing or launching
anything. Do not silently prefer either route. When only one route exists,
state the selected `execution_target` and record it in the bring-up evidence.
An empty SSH registry is not evidence that the local machine has no GPU, and a
missing Docker executable does not make a natively usable local GPU disappear.

## Acquire checkpoints only when needed

Do not ask for, locate or download checkpoints during generic connector
discovery. Only enter this flow after selecting an operation whose tool schema
requires `checkpoint_path`. Before that call, inspect whether the user already
supplied a path. If not, stop provisioning and ask whether they have an existing
local checkpoint; request its path plus any known digest. Do not search for or
download weights while that question is unanswered, and do not make them
download a second copy merely because it is outside a conventional directory.

If the user says there is no local checkpoint, use the normal approved network
and tool bring-up controls to download it. The framework does not maintain a
closed list of allowed scientific sources: resolve the source selected for this
run to an immutable version, prefer an upstream-published checksum, compute the
downloaded file's SHA-256 independently, and retain source URL, size and digest.
An observed digest with no independently trusted reference proves transfer
identity, not that the file is the intended model; report that distinction.

After acquiring code, environment or weights, run a small real inference
canary on the selected execution target. The canary must exercise the same
adapter, backend revision and checkpoint that the formal call will use, produce
the output types the adapter promises, and pass the adapter's parser and digest
checks. Set `run_mode="canary"` on this attempt. Record failed bring-up attempts.
Only after its result contains a verified `bringup_admission` may a new attempt
use `run_mode="formal"`. A formal attempt made too early ends in a durable
failure, so retry it with a new `attempt_id` after admission rather than reusing
the failed ID. Only after a canary reaches a verified
terminal success may the backend be used in the user's formal work. Then retry
the original scientific operation instead of ending the task with “backend not
configured.” If permission, licensing, source integrity, disk capacity or the
canary genuinely blocks bring-up, report that specific blocker and do not
fabricate results.

## Choose only the operations the task needs

Typical compositions include:

- target-conditioned binder design: `generate_backbone` → `design_sequence` →
  `predict_structure` and `predict_complex` → interface scoring;
- backbone sequence redesign: `design_sequence` → `predict_structure` →
  optional physical scoring;
- fixed-motif sequence design: `design_sequence` with explicit per-chain fixed
  positions → structure validation;
- structure refinement: `rosetta_relax` or `energy_minimize` → score the input
  and refined structures with the same method;
- candidate ranking: combine sequence, monomer, complex and physical evidence
  while retaining the individual scores and provenance.

These are examples, not mandatory pipelines. Start from the user's design
objective and constraints, then choose the smallest informative set of calls.

## Record reproducible attempts

Give each model execution a stable `attempt_id` and explicit seed. Pin the
backend revision and checkpoint SHA-256, use a dedicated output directory, and
retain the resolved configuration, command, residue maps, raw outputs and
terminal record. Reusing the same attempt and configuration is idempotent;
changing the configuration under an existing attempt ID is a conflict.

One call to `generate_backbone` produces one design. Run multiple attempts with
distinct IDs and seeds when sampling a population. A failed attempt remains
part of the provenance rather than being silently discarded.

## Generate target-conditioned binder backbones

The current `generate_backbone` contract requires a target PDB, explicit target
chain or chains, validated target hotspot residues and a binder length. It
verifies the local RFdiffusion checkpoint and returns both PDB and `.trb`
mapping outputs.

Do not describe this operation as epitope-free or purely function-guided de
novo design: the hotspot list supplies structural contact-region information.
If the task does not provide a contact region, epitope selection is a separate
scientific step and its assumptions must be reported.

The current schema also does not express unconditional monomer generation,
motif-scaffolding contigs, symmetric oligomer generation or membrane-specific
constraints. Use another suitable atomic connector or extend this schema before
claiming those backbone-generation capabilities.

## Design sequences without losing constraints

Call `design_sequence` with every input chain represented in
`fixed_positions`. Values are `"all"` or chain-local, 1-based sequence
positions. Include only mutable chains in `design_chains`; mark fixed target or
context chains as `"all"`.

The connector uses ProteinMPNN's `--pdb_path_chains` and
`--fixed_positions_jsonl` inputs and independently rejects output when a fixed
chain or motif changes, a chain length changes, or the residue map does not
close. Inspect this validation before using a sequence downstream.

## Predict structures and complexes without self-conditioning

Use `predict_structure` for monomer evidence and `predict_complex` for blind
sequence-only complex evidence. Formal prediction calls require:

- `msa_mode="single_sequence"`;
- a local checkpoint bundle with verified digests;
- fixed model type, recycles, model count and seed;
- templates and initial guesses disabled;
- an operator-configured OS-level network-isolation prefix.

Preserve raw confidence values and PAE. Treat pLDDT, pTM, ipTM and interface PAE
as model confidence, not as proof of folding, binding, affinity or function.
Do not feed a generated complex back as a template or initial guess for its own
validation.

## Add physical and sequence evidence carefully

Use `rosetta_interface_score` for `dG_separated`, `dSASA`, `packstat`, interface
residue count and `interface_delta_unsat_hbonds`. The final field is a change in
unsatisfied hydrogen bonds, not a count of formed interface hydrogen bonds.

Treat `score_stability` as ESM-2 masked pseudo-log-likelihood or sequence
naturalness, not thermodynamic stability. Treat `energy_minimize` as local
force-field refinement, not evidence that a candidate folds or binds.
`rosetta_relax` is optional; when using it, compare consistently scored input
and relaxed structures and retain both.

## Rank and report without collapsing evidence

Apply hard task constraints before ranking. Keep evidence types separate,
report failed attempts, and preserve structural diversity instead of selecting
only near-duplicates with the best value from one model.

When these tools are used inside a benchmark, keep any withheld references or
labels inaccessible during candidate generation and ranking. This is an
optional benchmark-integrity rule, not a restriction on ordinary protein
design use and not a responsibility assigned to this connector.

