cnyambura/rcsb-mcp
If you are the rightful owner of rcsb-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
An MCP server for interacting with the RCSB Protein Data Bank API.
RCSB PDB MCP Server
An MCP (Model Context Protocol) server that provides tools for interacting with the RCSB Protein Data Bank API.
Overview
This server exposes tools for:
- Querying PDB entry information
- Retrieving polymer entity details
- Downloading structure files in various formats
- Making custom API queries to RCSB Data API
Installation
- Install dependencies using uv:
uv sync
Or with pip:
pip install -e .
Running the Server
As a Standalone Server
python server.py
With Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"rcsb-pdb": {
"command": "uv",
"args": [
"--directory",
"/Users/cnyambura/Documents/rcsb_api/api/rcsb-mcp",
"run",
"server.py"
]
}
}
}
After adding the configuration, restart Claude Desktop.
Available Tools
1. get_pdb_entry
Get comprehensive information about a PDB entry.
Parameters:
pdb_id(string): 4-character PDB identifier (e.g., '1ABC', '7BQY')
Returns: JSON with structure information including title, experimental method, resolution, dates, authors, and source organism.
Example:
get_pdb_entry("1ABC")
2. get_polymer_entity
Get information about a polymer entity (protein, DNA, RNA) within a PDB entry.
Parameters:
pdb_id(string): 4-character PDB identifierentity_id(string, optional): Entity number (default: "1")
Returns: JSON with molecule name, sequence, molecular weight, entity type, and source organism.
Example:
get_polymer_entity("1ABC", "1")
3. download_structure_file
Download a structure file from RCSB PDB.
Parameters:
pdb_id(string): 4-character PDB identifierfile_format(string, optional): Format to download (default: "pdb")pdb: PDB formatcif: mmCIF formatxml: PDBML/XML formatpdb.gz: Compressed PDBcif.gz: Compressed mmCIFxml.gz: Compressed XML
output_dir(string, optional): Directory to save the filefilename(string, optional): Custom filename
Returns: JSON with download status and file path.
Example:
download_structure_file("1ABC", "pdb", "/path/to/output")
4. query_rcsb_api
Make a custom query to the RCSB Data API.
Parameters:
endpoint(string): API endpoint path (e.g., 'assembly/1ABC-1', 'uniprot/P12345')params(string, optional): JSON string of query parameters
Common endpoints:
entry/{pdb_id}: Entry-level informationpolymer_entity/{pdb_id}_{entity_id}: Polymer entity infoassembly/{pdb_id}-{assembly_id}: Biological assembly infononpolymer_entity/{pdb_id}_{entity_id}: Small molecule/ligand infouniprot/{uniprot_id}: UniProt cross-reference
Returns: JSON containing the API response.
Example:
query_rcsb_api("assembly/1ABC-1")
5. search_pdb_by_organism
Get information about how to search for PDB entries by organism.
Parameters:
organism(string): Organism name (e.g., 'Homo sapiens', 'E. coli')
Returns: Instructions and example queries for searching by organism.
Example Usage with Claude
Once connected to Claude Desktop, you can ask:
- "Get information about PDB entry 1ABC"
- "Download the structure file for 7BQY in mmCIF format"
- "Show me the polymer entity details for PDB 4HHB entity 1"
- "Query the assembly information for 1ABC assembly 1"
Project Structure
rcsb-mcp/
├── rcsb_api.py # Core RCSB API functions
├── server.py # FastMCP server implementation
├── pyproject.toml # Project dependencies
└── README.md # This file
API Documentation
For more information about the RCSB Data API, visit:
License
MIT