gene_getter
Retrieve detailed gene annotations, including names, summaries, aliases, types, and database links from MyGene.info. Use for accurate, real-time gene information on symbols or IDs like TP53 or BRAF.
Instructions
Get detailed gene information from MyGene.info.
⚠️ PREREQUISITE: Use the 'think' tool FIRST to understand your research goal!
Provides real-time gene annotations including:
- Official gene name and symbol
- Gene summary/description
- Aliases and alternative names
- Gene type (protein-coding, etc.)
- Links to external databases
This tool fetches CURRENT gene information from MyGene.info, ensuring
you always have the latest annotations and nomenclature.
Example usage:
- Get information about TP53 tumor suppressor
- Look up BRAF kinase gene details
- Find the official name for a gene by its alias
Note: For genetic variants, use variant_searcher. For articles about genes, use article_searcher.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gene_id_or_symbol | Yes | Gene symbol (e.g., 'TP53', 'BRAF') or Entrez ID (e.g., '7157') |
Implementation Reference
- src/biomcp/individual_tools.py:718-755 (handler)The primary handler function for the 'gene_getter' MCP tool. Registered via @mcp_app.tool() decorator. Includes schema via Annotated Field and executes by delegating to _gene_details.@mcp_app.tool() @track_performance("biomcp.gene_getter") async def gene_getter( gene_id_or_symbol: Annotated[ str, Field( description="Gene symbol (e.g., 'TP53', 'BRAF') or Entrez ID (e.g., '7157')" ), ], ) -> str: """Get detailed gene information from MyGene.info. ⚠️ PREREQUISITE: Use the 'think' tool FIRST to understand your research goal! Provides real-time gene annotations including: - Official gene name and symbol - Gene summary/description - Aliases and alternative names - Gene type (protein-coding, etc.) - Links to external databases This tool fetches CURRENT gene information from MyGene.info, ensuring you always have the latest annotations and nomenclature. Example usage: - Get information about TP53 tumor suppressor - Look up BRAF kinase gene details - Find the official name for a gene by its alias Note: For genetic variants, use variant_searcher. For articles about genes, use article_searcher. """ return await _gene_details( call_benefit="Get up-to-date gene annotations and information", gene_id_or_symbol=gene_id_or_symbol, ) # Disease Tools
- src/biomcp/genes/getter.py:15-79 (helper)Core helper function implementing the gene fetching logic from MyGene.info via BioThingsClient, formatting as markdown or JSON.async def get_gene( gene_id_or_symbol: str, output_json: bool = False, ) -> str: """ Get gene information from MyGene.info. Args: gene_id_or_symbol: Gene ID (Entrez, Ensembl) or symbol (e.g., "TP53", "7157") output_json: Return as JSON instead of markdown Returns: Gene information as markdown or JSON string """ client = BioThingsClient() try: gene_info = await client.get_gene_info(gene_id_or_symbol) if not gene_info: error_data = { "error": f"Gene '{gene_id_or_symbol}' not found", "suggestion": "Please check the gene symbol or ID", } return ( json.dumps(error_data, indent=2) if output_json else to_markdown([error_data]) ) # Convert to dict for rendering result = gene_info.model_dump(exclude_none=True) # Add helpful links if gene_info.entrezgene: result["_links"] = { "NCBI Gene": f"https://www.ncbi.nlm.nih.gov/gene/{gene_info.entrezgene}", "PubMed": f"https://pubmed.ncbi.nlm.nih.gov/?term={gene_info.symbol}", } # Format aliases nicely if gene_info.alias: result["alias"] = ", ".join( gene_info.alias[:10] ) # Limit to first 10 if len(gene_info.alias) > 10: result["alias"] += f" (and {len(gene_info.alias) - 10} more)" if output_json: return json.dumps(result, indent=2) else: return to_markdown([result]) except Exception as e: logger.error(f"Error fetching gene info for {gene_id_or_symbol}: {e}") error_data = { "error": "Failed to retrieve gene information", "details": str(e), } return ( json.dumps(error_data, indent=2) if output_json else to_markdown([error_data]) )
- src/biomcp/genes/getter.py:81-111 (helper)Intermediate helper wrapper called by the handler, delegates to get_gene with markdown output.async def _gene_details( call_benefit: Annotated[ str, "Define and summarize why this function is being called and the intended benefit", ], gene_id_or_symbol: Annotated[ str, Field(description="Gene symbol (e.g., TP53, BRAF) or ID (e.g., 7157)"), ], ) -> str: """ Retrieves detailed information for a single gene from MyGene.info. This tool provides real-time gene annotations including: - Official gene name and symbol - Gene summary/description - Aliases and alternative names - Gene type (protein-coding, etc.) - Links to external databases Parameters: - call_benefit: Define why this function is being called - gene_id_or_symbol: Gene symbol (e.g., "TP53") or Entrez ID (e.g., "7157") Process: Queries MyGene.info API for up-to-date gene annotations Output: Markdown formatted gene information with description and metadata Note: For variant information, use variant_searcher. For articles about genes, use article_searcher. """ return await get_gene(gene_id_or_symbol, output_json=False)
- src/biomcp/individual_tools.py:718-719 (registration)Registration decorators for the gene_getter tool in the MCP app.@mcp_app.tool() @track_performance("biomcp.gene_getter")
- Pydantic schema definition for the tool input parameter via Annotated Field.gene_id_or_symbol: Annotated[ str, Field( description="Gene symbol (e.g., 'TP53', 'BRAF') or Entrez ID (e.g., '7157')" ), ], ) -> str: