Skip to main content
Glama

MCP-AlphaFold

A Model Context Protocol (MCP) server that provides programmatic access to AlphaFold predictions and UniProt data. Built with FastMCP and Python, it offers tools for protein structure predictions, UniProt summaries, and protein annotations.

Requirements

  • Python ≥ 3.11

  • uv package manager

⚙️ Configure Claude Desktop

  • Open Claude Desktop settings

  • Navigate to Developer section

  • Click "Edit Config" and add:

{
  "mcpServers": {
    "mcp_alphafold": {
      "command": "uv",
      "args": [
        "--directory",
        "path to /mcp-alphafold/src/mcp_alphafold",
        "run",
        "mcp-alphafold",
        "--transport",
        "stdio"
      ]
    }
  }
}
  • Restart Claude Desktop and start chatting about biomedical topics!

🐳 Using with Docker

"mcpServers": {
  "mcp_alphafold": {
    "command": "docker",
    "args": [
      "run",
      "--rm",
      "-p", "8050:8050",
      "zeinabsheikhi/mcp-alphafold:0.1.0"
    ]
  }
}

🔧 Tools

The server offers these core tools:

🧬 AlphaFold Tools

  • alphafold_prediction

    • Retrieves protein structure predictions using AlphaFold. Input a protein identifier or sequence checksum to get structural predictions.

  • uniprot_summary

    • Fetches comprehensive protein summaries from UniProt database, including protein function, domains, and other key characteristics.

  • annotations

    • Retrieves specific protein annotations including mutations, modifications, and other experimental data. Default annotation type is "MUTAGEN".

Related MCP server: UniProt MCP Server

🚀 Development

📦 Prerequisites

  1. Install uv (Universal Virtualenv):

# Using pip
pip install uv

# Using Homebrew on macOS
brew install uv

# Using cargo (Rust package manager)
cargo install uv
  1. Clone the repository and set up development environment:

# Clone the repository
git clone https://github.com/zeinab-sheikhi/mcp-alphafold.git
cd mcp-alphafold

# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate  # On Unix/macOS
.venv\Scripts\activate     # On Windows

# Install dependencies including dev dependencies
make install
  1. Run the server with

make run-server

🐳 Docker

Build and run the Docker container:

# Build the image
make build-docker
# Run the container
make run-docker

Available Tools

3 tools
get_alphafold_predictionA

This tool retrieves all available AlphaFold models for a specified UniProt accession. It allows querying by the UniProt accession or by the CRC64 checksum of the UniProt sequence.

Arguments

  • qualifier (str): UniProt accession (e.g., 'Q5VSL9').

  • sequence_checksum (str, optional): CRC64 checksum of the UniProt sequence.

Example Input:

  • qualifier: Q5VSL9

  • sequence_checksum: 5F9BA1D4C7DE6925

Response Structure

The response will be a list of objects, each containing detailed information about the available AlphaFold models.

Example Output:

[
  {
    "entryId": "AF-Q5VSL9-F1",
    "gene": "STRIP1",
    "sequenceChecksum": "5F9BA1D4C7DE6925",
    "sequenceVersionDate": "2004-12-07",
    "uniprotAccession": "Q5VSL9",
    "uniprotId": "STRP1_HUMAN",
    "uniprotDescription": "Striatin-interacting protein 1",
    "taxId": 9606,
    "organismScientificName": "Homo sapiens",
    "uniprotStart": 1,
    "uniprotEnd": 837,
    "uniprotSequence": "MEPAVGGPGPLIVNNKQPQPPPPPPPAAAQPPPGAPRAAAGLLPGGKAREFN...",
    "modelCreatedDate": "2022-06-01",
    "latestVersion": 4,
    "allVersions": [1, 2, 3, 4],
    "bcifUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-model_v4.bcif",
    "cifUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-model_v4.cif",
    "pdbUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-model_v4.pdb",
    "paeImageUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-predicted_aligned_error_v4.png",
    "paeDocUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-predicted_aligned_error_v4.json",
    "amAnnotationsUrl": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-aa-substitutions.csv",
    "amAnnotationsHg19Url": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-hg19.csv",
    "amAnnotationsHg38Url": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-hg38.csv",
    "isReviewed": true,
    "isReferenceProteome": true
  }
]
ParametersJSON Schema
NameRequiredDescriptionDefault
qualifierYes
output_jsonNo
sequence_checksumNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does disclose that the response is a list of model objects and includes a detailed example output, but it omits behavioral details such as what happens when no models are found, potential rate limits, or authentication requirements. The provided response structure adds some transparency but not comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headings for arguments, example input, and response structure. The purpose is front-loaded, and the large example output is informative but adds verbosity. Overall, every section earns its place, though the example output could be trimmed without losing essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and low schema coverage, the description compensates by providing a comprehensive response example and field listing, making the return structure clear. It still misses edge-case behavior and the `output_json` parameter documentation, but for a simple retrieval tool, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains `qualifier` as a UniProt accession and `sequence_checksum` as a CRC64 checksum, with examples. However, it entirely omits the `output_json` parameter, leaving it undocumented. Thus, it covers two of three parameters but fails to explain the functional effect of `output_json`.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'retrieves all available AlphaFold models for a specified UniProt accession.' It specifies the resource (AlphaFold models) and the query key (UniProt accession), and this distinctly differentiates it from sibling tools like get_uniprot_summary and get_annotations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the two query modes (UniProt accession or CRC64 checksum) but provides no explicit guidance on when to use this tool versus the sibling tools. It does not mention alternatives, exclusions, or appropriate use cases beyond the basic retrieval functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_annotationsB

This tool retrieves all annotations for a specified UniProt residue range. It allows querying by the UniProt accession and the annotation type (e.g., MUTAGEN for AlphaMissense).

Arguments

  • qualifier (str): UniProt accession (e.g., 'Q5VSL9').

  • annotation_type (str): Type of annotation (e.g., 'MUTAGEN' for AlphaMissense).

Example Input:

  • qualifier: Q5VSL9

  • annotation_type: MUTAGEN

Response Structure

The response includes detailed information about the UniProt entry and its associated annotations.

Example Output:

{
  "accession": "Q5VSL9",
  "id": "STRP1_HUMAN",
  "sequence": "MEPAVGGPGPLIVNNKQPQPPPPPPPAAAQPPPGAPRAAAGLLPGGKAREFNRNQRKDSEGYSESPDLEFEYADTDKWAAELSELYSYTEGPEFLMNRKCFEEDFRIHVTDKKWTELDTNQHRTHAMRLLDGLEVTAREKRLKVARAILYVAQGTFGECSSEAEVQSWMRYNIFLLLEVGTFNALVELLNMEIDNSAACSSAVRKPAISLADSTDLRVLLNIMYLIVETVHQECEGDKAEWRTMRQTFRAELGSPLYNNEPFAIMLFGMVTKFCSGHAPHFPMKKVLLLLWKTVLCTLGGFEELQSMKAEKRSILGLPPLPEDSIKVIRNMRAASPPASASDLIEQQQKRGRREHKALIKQDNLDAFNERDPYKADDSREEEEENDDDNSLEGETFPLERDEVMPPPLQHPQTDRLTCPKGLPWAPKVREKDIEMFLESSRSKFIGYTLGSDTNTVVGLPRPIHESIKTLKQHKYTSIAEVQAQMEEEYLRSPLSGGEEEVEQVPAETLYQGLLPSLPQYMIALLKILLAAAPTSKAKTDSINILADVLPEEMPTTVLQSMKLGVDVNRHKEVIVKAISAVLLLLLKHFKLNHVYQFEYMAQHLVFANCIPLILKFFNQNIMSYITAKNSISVLDYPHCVVHELPELTAESLEAGDSNQFCWRNLFSCINLLRILNKLTKWKHSRTMMLVVFKSAPILKRALKVKQAMMQLYVLKLLKVQTKYLGRQWRKSNMKTMSAIYQKVRHRLNDDWAYGNDLDARPWDFQAEECALRANIERFNARRYDRAHSNPDFLPVDNCLQSVLGQRVDLPEDFQMNYDLWLEREVFSKPISWEELLQ",
  "annotation": [
    {
      "type": "MUTAGEN",
      "description": "AM score",
      "source_name": "AFDB",
      "source_url": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-aa-substitutions.csv",
      "evidence": "COMPUTATIONAL/PREDICTED",
      "residues": [1, 2, 3, ...],
      "regions": [
        {
          "start": 1,
          "end": 837,
          "annotation_value": [0.3234, 0.3281, ...],
          "unit": null
        }
      ]
    }
  ]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
qualifierYes
output_jsonNo
annotation_typeNoMUTAGEN

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the response structure with a detailed example, but it doesn't mention potential limitations, safety, or side effects. The 'residue range' vs 'accession' ambiguity also detracts from transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for arguments, example input, and response structure. The example output is quite extensive (including the full sequence), which is somewhat verbose but serves to clarify the return format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is fairly complete for a retrieval tool: it provides parameter meanings and an example output that compensates for the lack of an output schema. It falls short by not covering output_json and providing no usage guidance relative to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by explaining qualifier and annotation_type with examples. However, it completely omits the output_json parameter, which is part of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves annotations for a UniProt entry and explains the query parameters (accession and annotation type). However, the phrase 'residue range' is misleading since the qualifier is an accession, and it doesn't explicitly differentiate from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to use the tool with arguments and an example, but it never states when to choose this tool over the sibling tools (get_alphafold_prediction, get_uniprot_summary) or provides any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uniprot_summaryC

This tool fetches AlphaFold model predictions for a given UniProt residue range. The tool takes in a UniProt accession number (AC), entry name (ID), or CRC64 checksum and returns detailed information about the structure models available for the specified sequence range.

Arguments

  • qualifier (str): UniProtKB accession number (AC), entry name (ID), or CRC64 checksum of the UniProt sequence (e.g., 'Q5VSL9').

Example Input:

  • qualifier: Q5VSL9

Response Structure

The response includes detailed information about the UniProt entry and its associated AlphaFold models.

Example Response:

{
  "uniprot_entry": {
    "ac": "Q5VSL9",
    "id": "STRP1_HUMAN",
    "uniprot_checksum": "5F9BA1D4C7DE6925",
    "sequence_length": 837,
    "segment_start": 1,
    "segment_end": 837
  },
  "structures": [
    {
      "summary": {
        "model_identifier": "AF-Q5VSL9-F1",
        "model_category": "AB-INITIO",
        "model_url": "https://alphafold.ebi.ac.uk/files/AF-Q5VSL9-F1-model_v4.cif",
        "model_format": "MMCIF",
        "model_type": null,
        "model_page_url": "https://alphafold.ebi.ac.uk/entry/Q5VSL9",
        "provider": "AlphaFold DB",
        "number_of_conformers": null,
        "ensemble_sample_url": null,
        "ensemble_sample_format": null,
        "created": "2022-06-01",
        "sequence_identity": 1,
        "uniprot_start": 1,
        "uniprot_end": 837,
        "coverage": 1,
        "experimental_method": null,
        "resolution": null,
        "confidence_type": "pLDDT",
        "confidence_version": null,
        "confidence_avg_local_score": 80.82,
        "oligomeric_state": null,
        "preferred_assembly_id": null,
        "entities": [
          {
            "entity_type": "POLYMER",
            "entity_poly_type": "POLYPEPTIDE(L)",
            "identifier": "Q5VSL9",
            "identifier_category": "UNIPROT",
            "description": "Striatin-interacting protein 1",
            "chain_ids": [
              "A"
            ]
          }
        ]
      }
    }
  ]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
qualifierYes
output_jsonNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It provides a detailed response example and explains the accepted qualifier formats, which is useful. However, the inaccurate reference to a 'residue range' parameter and the lack of any mention of error behavior or limitations reduce transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for arguments and response structure. It is front-loaded with the main purpose. The extensive JSON example is lengthy but directly illustrates the output, earning its place. Minor redundancy exists, but the overall organization is effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the response example provides strong completeness for return values. However, the description does not address when to use this tool relative to siblings, and the misleading residue-range statement creates confusion. These gaps prevent a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning to the qualifier parameter by specifying it can be a UniProt AC, ID, or CRC64 checksum, with a concrete example. This goes well beyond the schema's generic string type. The output_json parameter is not described, but its name and default value are self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('fetches AlphaFold model predictions'), but the tool name is get_uniprot_summary and the response example includes UniProt entry details, creating confusion about the actual purpose. It also references a 'residue range' argument that does not exist in the schema. The description does not distinguish this tool from the sibling get_alphafold_prediction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_alphafold_prediction or get_annotations. The description simply explains what the tool does and gives an example input, without any context about selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedget_alphafold_prediction
    • First observedget_annotations
    • First observedget_uniprot_summary

TDQS

B3.4/5.0
Disambiguation2/5

get_alphafold_prediction and get_uniprot_summary both retrieve AlphaFold model information for a UniProt accession, with overlapping purposes. The descriptions do not clearly distinguish when to use one over the other, causing potential misselection. get_annotations is the only clearly distinct tool.

Naming Consistency5/5

All tool names follow a consistent get_<noun> pattern using snake_case. This predictable naming convention makes the tool set easy to navigate.

Tool Count5/5

With only 3 tools, the server is well-scoped and focused on AlphaFold data retrieval. Each tool has a meaningful role, even though two overlap functionally.

Completeness5/5

The server covers the core operations for AlphaFold: listing models, fetching a summary, and retrieving annotations. There are no obvious gaps for the intended domain, as structure URLs are included in responses.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides seamless access to UniProtKB protein database, enabling queries for protein entries, sequences, Gene Ontology annotations, full-text search, and ID mapping across 200+ database types.
    5
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to AlphaFold predicted protein 3D structures from EBI, enabling retrieval of prediction metadata, summaries, annotations, and UniProt data.
    15
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to UniProt protein sequence and function knowledge base, enabling search and retrieval of protein entries, proteomes, taxonomy, and feature annotations.
    13
    MIT

Latest Blog Posts

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/zeinab-sheikhi/mcp-alphafold'

If you have feedback or need assistance with the MCP directory API, please join our Discord server