PoseBusters MCP Server

PoseBusters MCP Server

Validates the physical and chemical plausibility of ligand–protein docking poses using the PoseBusters tool.

Category
访问服务器

README


title: Posebusters MCP Server emoji: 😻 colorFrom: gray colorTo: pink sdk: gradio sdk_version: 5.36.2 app_file: app.py pinned: false license: bsd-3-clause short_description: 'MCP server for PoseBusters: validates ligand–protein struct'

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

🧪 PoseBusters MCP Server

<img width="1536" height="1024" alt="image" src="https://github.com/user-attachments/assets/5f4e0750-9168-4963-b8cd-1b7ec9892cef" />

This Hugging Face Space provides an MCP-compatible API around PoseBusters, a command-line tool for validating the physical and chemical plausibility of molecular docking poses.

⚠️ Disclaimer
This project is unofficial and not affiliated with or endorsed by the original author of PoseBusters.


✅ Features

Supports molecular file uploads
Accepts ligand files (.sdf) and protein structures (.pdb) via either:

  • a simple web interface (Gradio tab UI), or
  • HTTP POST requests using multipart/form-data.

🔁 Redocking validation (optional)
If a crystal ligand (.sdf) is provided, the API performs redocking validation by comparing it to the predicted ligand pose.

⚙️ Leverages the bust CLI from PoseBusters
Internally, this server uses the PoseBusters command-line tool to evaluate:

  • pose plausibility
  • chemical validity
  • geometry checks

📊 Structured JSON responses
The output follows the Model Context Protocol (MCP), making it easy to use results in:

  • UI panels
  • workflows
  • logic pipelines

🤖 MCP-Compatible API (for use in AI workflows)

This project is fully MCP-compliant, meaning it follows the Model Context Protocol (MCP), the standard for exposing tools in AI-driven workflows and UIs.

  • ✅ Exposes a valid GET /mcp/context for tool discovery and UI generation.
  • ✅ Accepts POST /mcp/predict with multipart/form-data for structured tool execution.
  • ✅ Returns results in structured JSON, ready for use in agents, chatbots, or pipelines.
  • ✅ When deployed on your own Hugging Face Spaces, it works as an MCP server that can be added to your toolset from the MCP badge.

🧠 What does this mean for you?

If you're using VSCode with Hugging Face MCP, Claude, or any other MCP-compatible client, you can:

  • 🔹 Add this tool directly from its Space card using the MCP badge.
  • 🔹 Interact with it using standard UI panels or programmatic workflows.
  • 🔹 Submit files like .sdf and .pdb and receive validated pose results.

Notes

  • The app runs perfectly inside a Gradio Space or a Docker container, using FastAPI as its backend.
  • The app is fully MCP-compatible and discoverable once deployed.
  • You can host it on your own infrastructure, or push it to Spaces for instant integration into MCP-enabled environments.

🤗 How to Use (in Hugging Face Space)

👉 Space UI: https://huggingface.co/spaces/lepanto1571/posebusters-mcp-server

  • Upload your .sdf ligand and .pdb protein files
  • (Optional) Add a .sdf with the ''true'' crystal ligand
  • Click on Submit
  • Results will appear in the interactive table

🐳 Run Locally with Docker

1. Clone the repository

git clone https://github.com/lepanto1571/posebusters-mcp-server.git
cd posebusters-mcp-server

2. Build the Docker image

docker buildx build --load -t posebusters-mcp-server .

3. Run the container

docker run -p 7860:7860 posebusters-mcp-server

The server will start on http://localhost:7860.


⚙️ How to Use the API (MCP-compatible)

🔎 1. Discover API via MCP Context

# Using curl
curl -X GET http://localhost:7860/mcp/context

# Using Python
import requests
response = requests.get("http://localhost:7860/mcp/context")
context = response.json()

2. Run validation (ligand + protein)

# Using curl
curl -X POST http://localhost:7860/mcp/predict \
  -F action=validate_pose \
  -F ligand_input=@ligand.sdf \
  -F protein_input=@protein.pdb

# Using Python
import requests

files = {
    'ligand_input': ('ligand.sdf', open('ligand.sdf', 'rb')),
    'protein_input': ('protein.pdb', open('protein.pdb', 'rb'))
}
data = {'action': 'validate_pose'}

response = requests.post(
    "http://localhost:7860/mcp/predict",
    files=files,
    data=data
)
results = response.json()

3. Run redocking validation (ligand + crystal + protein)

# Using curl
curl -X POST http://localhost:7860/mcp/predict \
  -F action=redocking_validation \
  -F ligand_input=@ligand.sdf \
  -F protein_input=@protein.pdb \
  -F crystal_input=@crystal.sdf

# Using Python
import requests

files = {
    'ligand_input': ('ligand.sdf', open('ligand.sdf', 'rb')),
    'protein_input': ('protein.pdb', open('protein.pdb', 'rb')),
    'crystal_input': ('crystal.sdf', open('crystal.sdf', 'rb'))
}
data = {'action': 'redocking_validation'}

response = requests.post(
    "http://localhost:7860/mcp/predict",
    files=files,
    data=data
)
results = response.json()

Response Format

All responses follow the MCP standard format:

{
    "object_id": "validation_results",
    "data": {
        "columns": ["ligand_id", "status", "passed/total", "details"],
        "rows": [
            ["mol1", "✅", "8/8", "All tests passed"],
            # ... more results
        ]
    }
}

Error Handling

The API uses standard HTTP status codes:

  • 200: Success
  • 400: Invalid request (wrong file type, missing required files)
  • 500: Server error (validation failed, internal error)

Error responses include detailed messages:

{
    "object_id": "validation_results",
    "data": {
        "columns": ["ligand_id", "status", "passed/total", "details"],
        "rows": [
            ["unknown", "❌", "0/0", "Detailed error message"]
        ]
    }
}

🧪 Development and Testing

Running Tests

Tests can be run directly using Docker:

# Run tests with verbose output
docker run posebusters-mcp-server pytest -v

# Run tests with coverage report
docker run posebusters-mcp-server pytest --cov=. --cov-report=term-missing

Validation

The API uses JSON Schema validation for:

  • MCP Context (/mcp/context)
  • Prediction Responses (/mcp/predict)
  • File Types (MIME validation)

Schema definitions are in schema.py.


📚 Documentation & Citation

📖 PoseBusters documentation:

Full usage and command-line reference available at https://posebusters.readthedocs.io/en/latest

🧾 Scientific paper:

Martin Buttenschoen, Andreas Bender (2023). "PoseBusters: a consistency check for 3D protein–ligand binding poses". Read it on arXiv: https://arxiv.org/abs/2308.05777

💡 If you use this server or PoseBusters in your work, consider citing the original paper.


📄 License & Credits

This project uses PoseBusters by Martin Buttenschoen (© 2023),
licensed under the BSD 3-Clause License.
A full copy of the original license is available at: third_party/posebusters/LICENSE.

This service is an independent wrapper and is not affiliated with or endorsed by the original author.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选