Skip to main content
Glama

get_translation

Convert biological identifiers, such as gene symbols to Ensembl IDs, using Biomart MCP. Specify source and target attributes to retrieve translated results quickly with caching for efficiency.

Instructions

Translates a single identifier from one attribute type to another.

This function allows conversion between different identifier types, such as
converting a gene symbol to an Ensembl ID. Results are cached to improve performance.

Args:
    mart (str): The mart identifier (e.g., "ENSEMBL_MART_ENSEMBL")
    dataset (str): The dataset identifier (e.g., "hsapiens_gene_ensembl")
    from_attr (str): The source attribute name (e.g., "hgnc_symbol")
    to_attr (str): The target attribute name (e.g., "ensembl_gene_id")
    target (str): The identifier value to translate (e.g., "TP53")

Returns:
    str: The translated identifier, or an error message if not found.

Example:
    get_translation("ENSEMBL_MART_ENSEMBL", "hsapiens_gene_ensembl", "hgnc_symbol", "ensembl_gene_id", "TP53")
    >>> "ENSG00000141510"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
datasetYes
from_attrYes
martYes
targetYes
to_attrYes

Implementation Reference

  • The complete handler function for the 'get_translation' MCP tool, including the @mcp.tool() decorator, type hints, docstring schema, and execution logic. It retrieves a cached translation dictionary and looks up the target identifier.
    @mcp.tool()
    def get_translation(mart: str, dataset: str, from_attr: str, to_attr: str, target: str):
        """
        Translates a single identifier from one attribute type to another.
    
        This function allows conversion between different identifier types, such as
        converting a gene symbol to an Ensembl ID. Results are cached to improve performance.
    
        Args:
            mart (str): The mart identifier (e.g., "ENSEMBL_MART_ENSEMBL")
            dataset (str): The dataset identifier (e.g., "hsapiens_gene_ensembl")
            from_attr (str): The source attribute name (e.g., "hgnc_symbol")
            to_attr (str): The target attribute name (e.g., "ensembl_gene_id")
            target (str): The identifier value to translate (e.g., "TP53")
    
        Returns:
            str: The translated identifier, or an error message if not found.
    
        Example:
            get_translation("ENSEMBL_MART_ENSEMBL", "hsapiens_gene_ensembl", "hgnc_symbol", "ensembl_gene_id", "TP53")
            >>> "ENSG00000141510"
        """
        try:
            result_dict = _get_translation_dict(mart, dataset, from_attr, to_attr)
            if target not in result_dict:
                print(f"Target '{target}' not found in translation", file=sys.stderr)
                return f"Error: Target '{target}' not found"
            return result_dict[target]
        except Exception as e:
            print(f"Error in translation: {str(e)}", file=sys.stderr)
            return f"Error: {str(e)}"
  • Supporting helper function _get_translation_dict, cached with lru_cache, that queries Biomart to create a dictionary mapping values from 'from_attr' to 'to_attr'. Used by get_translation and batch_translate tools.
    def _get_translation_dict(mart: str, dataset: str, from_attr: str, to_attr: str):
        """
        Helper function to get and cache a translation dictionary.
        """
        try:
            server = get_server()
            dataset_obj = server[mart][dataset]
            df = dataset_obj.query(attributes=[from_attr, to_attr])
            return dict(zip(df.iloc[:, 0], df.iloc[:, 1]))
        except Exception as e:
            print(f"Error getting translation dictionary: {str(e)}", file=sys.stderr)
            return {}

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Related Tools

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/jzinno/biomart-mcp'

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