Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Rosetta/PyRosetta protein modeling and Biotite translation for computational biology
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ROSETTA_BIN, PYTHON_BIN, MCP_DEBUGต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"rosetta": {
"command": "npx",
"args": [
"-y",
"rosetta-mcp-server"
],
"env": {
"ROSETTA_BIN": "ใส่ค่าของคุณ",
"PYTHON_BIN": "ใส่ค่าของคุณ",
"MCP_DEBUG": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add rosetta --env ROSETTA_BIN='ใส่ค่าของคุณ' --env PYTHON_BIN='ใส่ค่าของคุณ' --env MCP_DEBUG='ใส่ค่าของคุณ' -- npx -y rosetta-mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"rosetta": {
"command": "npx",
"args": [
"-y",
"rosetta-mcp-server"
],
"env": {
"ROSETTA_BIN": "ใส่ค่าของคุณ",
"PYTHON_BIN": "ใส่ค่าของคุณ",
"MCP_DEBUG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"rosetta": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"rosetta-mcp-server"
],
"env": {
"ROSETTA_BIN": "ใส่ค่าของคุณ",
"PYTHON_BIN": "ใส่ค่าของคุณ",
"MCP_DEBUG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ROSETTA_BIN envPYTHON_BIN envMCP_DEBUG envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Arielbs ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.3.1) เข้า registry 7 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, FactLot
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cited CRE facts and deterministic calculators for agents: rent, CAM, debt sizing, IRR, parcel IDs.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Author: Ariel J. Ben-Sasson
A Model Context Protocol (MCP) server that lets Cursor (or any MCP client) work with Rosetta, PyRosetta, and Biotite: run RosettaScripts, validate XML protocols, translate between Rosetta and Biotite, score structures, and query documentation -- all from your AI coding assistant.
repeats, disable_design, cartesian, tolerance, threshold, distance, and moreMoveMap (with Span), Reweight, ScoreFunctioncache_cli_docs firstper_residue option returns per-residue energy breakdown{}validate_against_schema option checks element names against the Rosetta XSD schema (catches typos like FastRleax)tools/call responses now use correct { content: [{ type: "text", text }] } formatisError: true (not JSON-RPC errors)resources capability advertisementos.tmpdir() (not module directory)list_functions (merged into get_rosetta_info), search_pyrosetta_wheels, cache_cli_docs (auto-cache in get_cached_docs)This is what makes the MCP server powerful -- an AI agent can answer domain questions by calling the right tools automatically:
User asks in Cursor: *"How do I relax my protein and what's the Biotite equivalent?"*
The agent calls two MCP tools behind the scenes:
1. `get_rosetta_help("FastRelax")` returns 6000+ chars of live documentation:
FastRelax performs all-atom relaxation using the FastRelax protocol. Parameters include
scorefxn,repeats,cartesian,disable_design,MoveMapconfiguration...
2. `rosetta_to_biotite("FastRelax")` returns:
{
"found": true, "results": [{ "rosetta": { "name": "FastRelax", "example": ["relax = FastRelax()", "relax.set_scorefxn(get_score_function('ref2015'))", "relax.apply(pose)"] }, "biotite": null, "equivalence": "none_from_biotite", "notes": "Biotite does NOT perform structure optimization. These are Rosetta-specific capabilities." }] }
The agent synthesizes: *"FastRelax is Rosetta's all-atom relaxation protocol. Here's how to use it... Note: Biotite is analysis-only and has no equivalent -- you need PyRosetta for structure optimization."*
Without the MCP, the agent would guess from training data and likely get parameter names or API signatures wrong.
| Tool | Description |
|---|---|
get_rosetta_info | All available score functions, movers, filters, selectors, parameters |
get_rosetta_help | Help for any topic -- accepts mover names, concepts, or score functions |
pyrosetta_introspect | Live PyRosetta API search with docs and signatures |
| Tool | Description |
|---|---|
search_rosetta_web_docs | Search rosettacommons.org documentation |
get_rosetta_web_doc | Fetch and read a specific docs page |
get_cached_docs | Search cached CLI help (auto-caches on first use) |
| Tool | Description |
|---|---|
run_rosetta_scripts | Run a RosettaScripts XML protocol on a PDB |
pyrosetta_score | Score a PDB with optional per-residue breakdown |
| Tool | Description |
|---|---|
xml_to_pyrosetta | XML to PyRosetta Python (37 element types) |
rosetta_to_biotite | Find Biotite equivalent of a Rosetta function |
biotite_to_rosetta | Find Rosetta equivalent of a Biotite function |
translate_rosetta_script_to_biotite | Translate full scripts from Rosetta to Biotite |
| Tool | Description |
|---|---|
validate_xml | Check XML syntax + optional schema validation |
rosetta_scripts_schema | Generate XSD schema and extract element names |
| Tool | Description |
|---|---|
python_env_info | Python version and installed packages |
check_pyrosetta | Verify PyRosetta is available |
install_pyrosetta_installer | Auto-install PyRosetta (10-30 min) |
find_rosetta_scripts | Locate the rosetta_scripts binary |
npm install -g rosetta-mcp-server
# Create a venv with PyRosetta and Biotite
uv venv ~/.venvs/rosetta-mcp ~/.venvs/rosetta-mcp/bin/pip install pyrosetta-installer biotite ~/.venvs/rosetta-mcp/bin/python -c "import pyrosetta_installer as I; I.install_pyrosetta()"
Or skip this step -- PyRosetta auto-installs on first use (takes 10-30 min).
Cursor (~/.cursor/mcp.json):
{
"mcpServers": { "rosetta": { "command": "rosetta-mcp-server", "args": [], "env": { "ROSETTA_BIN": "/path/to/rosetta_scripts.default.macosclangrelease", "PYTHON_BIN": "/path/to/.venvs/rosetta-mcp/bin/python" } } } }
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": { "rosetta": { "command": "rosetta-mcp-server", "env": { "ROSETTA_BIN": "/path/to/rosetta_scripts.default.macosclangrelease", "PYTHON_BIN": "/path/to/.venvs/rosetta-mcp/bin/python" } } } }
Environment variables:
| Variable | Required | Description |
|---|---|---|
ROSETTA_BIN | No | Path to rosetta_scripts binary or its directory. If not set, searches common paths and PATH. |
PYTHON_BIN | No | Python interpreter with PyRosetta/Biotite. Defaults to python3. |
MCP_DEBUG | No | Set to 1 for debug logging to stderr. |
Open Settings -> MCP. The "rosetta" server should appear green with 18 tools.
Input XML:
<ROSETTASCRIPTS>
Generated PyRosetta code:
import pyrosetta
from pyrosetta import pose_from_pdb from pyrosetta.rosetta.core.scoring import get_score_function from pyrosetta.rosetta.core.select.residue_selector import * from pyrosetta.rosetta.protocols.relax import *
pyrosetta.init("-mute all")
pose = pose_from_pdb("your_protein.pdb")
chainSelector = ChainSelector() chainSelector.set_chain_strings("A")
fastRelax = FastRelax() fastRelax.set_scorefxn(get_score_function("ref")) fastRelax.set_default_repeats(5) fastRelax.cartesian(True)
sfxn = get_score_function("ref2015")
fastRelax.apply(pose)
pose.dump_pdb("output.pdb") score = pose.energies().total_energy() print(f"Final score: {score}")
| Category | Rosetta | Biotite | Equivalence |
|---|---|---|---|
| Structure I/O | pose_from_pdb | PDBFile.read | Full |
| Structure I/O | pose.dump_pdb | PDBFile.write | Full |
| Structure I/O | pose_from_file (CIF) | CIFFile.read | Full |
| Surface Analysis | SasaMetric | biotite.structure.sasa | Full |
| Alignment | SuperimposeMover | biotite.structure.superimpose | Full |
| RMSD | all_atom_rmsd | biotite.structure.rmsd | Full |
| Secondary Structure | DsspMover | annotate_sse | Partial |
| Sequence | pose.sequence() | get_residues | Full |
| Distance | AtomPairConstraint | biotite.structure.distance | Full |
| Angles | pose.phi/psi/omega | biotite.structure.dihedral | Full |
| Interface | InterfaceAnalyzerMover | sasa + selection | Partial |
| Database | rcsb.pose_from_rcsb | rcsb.fetch | Full |
| Selection | ChainSelector etc. | numpy boolean indexing | Full |
| Contacts | distance matrices | CellList | Partial |
| Ramachandran | pose.phi/psi | dihedral_backbone | Partial |
| H-bonds | HBondSet | biotite.structure.hbond | Partial |
| B-factors | pdb_info().bfactor | AtomArray.b_factor | Full |
| Center of Mass | center_of_mass | mass_center | Full |
| Scoring | ScoreFunction | *None* | Rosetta only |
| Optimization | FastRelax | *None* | Rosetta only |
| Design | FastDesign | *None* | Rosetta only |
/opt/homebrew/bin/rosetta-mcp-server). Ensure Node 14+ and Python 3.8+.ROSETTA_BIN points to a valid binary. Try "$ROSETTA_BIN" -help.pip install pyrosetta-installer then run the installer, or let the MCP server auto-install on first use.pip install biotite# Check version
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}' | rosetta-mcp-server 2>/dev/null | python3 -c "import sys,json; print(json.loads(sys.stdin.readline())'result')"
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | rosetta-mcp-server 2>/dev/null | python3 -c "import sys,json; [print(t['name']) for t in json.loads(sys.stdin.readline())'result']"
rosetta-mcp-server/
├── rosetta_mcp_wrapper.js # Node MCP server (protocol + all 18 tools) ├── rosetta_mcp_server.py # Python helper (static Rosetta data)
ตัดมาแค่ช่วงต้น อ่านต่อใน repo