Skip to main content
Glama
mohammadnajeeb

NCBI Gene MCP Server

search_genes

Search for genes in the NCBI database using gene names, symbols, or other identifiers to retrieve relevant gene information and metadata.

Instructions

Search for genes in NCBI database using a query

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (gene name, symbol, etc.)
max_resultsNoMaximum number of results to return (default: 20)

Implementation Reference

  • Core implementation of the search_genes tool using NCBI Entrez esearch API to search the gene database.
    def search_genes(self, query: str, max_results: int = 20) -> SearchResult:
        """
        Search for genes using NCBI Entrez.
        
        Args:
            query: Search query (gene name, symbol, etc.)
            max_results: Maximum number of results to return
            
        Returns:
            SearchResult object containing IDs and metadata
        """
        params = {
            "db": "gene",
            "term": query,
            "retmax": max_results
        }
        
        response = self._make_request("esearch", params)
        
        esearch_result = response.get("esearchresult", {})
        
        return SearchResult(
            count=int(esearch_result.get("count", 0)),
            ids=esearch_result.get("idlist", []),
            query_translation=esearch_result.get("querytranslation")
        )
  • Registration of the search_genes tool in the MCP server's tools/list, defining name, description, and input schema.
        "name": "search_genes",
        "description": "Search for genes in NCBI database using a query",
        "inputSchema": {
            "type": "object",
            "properties": {
                "query": {
                    "type": "string",
                    "description": "Search query (gene name, symbol, etc.)"
                },
                "max_results": {
                    "type": "integer",
                    "description": "Maximum number of results to return (default: 20)",
                    "default": 20
                }
            },
            "required": ["query"]
        }
    },
  • MCP server handler for tools/call requests to search_genes, extracting parameters and calling the bridge implementation.
    if name == "search_genes":
        query = arguments.get("query")
        max_results = arguments.get("max_results", 20)
        if not query:
            raise ValueError("query is required")
        
        result = self.bridge.search_genes(query, max_results)
        self.send_response({
            "content": [{
                "type": "text", 
                "text": f"Found {result.count} genes matching '{query}':\n\nGene IDs: {', '.join(result.ids[:10])}\n\nQuery translation: {result.query_translation or 'N/A'}"
            }]
        })
  • Pydantic model SearchResult used as return type for search_genes, defining structure of search results.
    class SearchResult(BaseModel):
        """Model for search results from NCBI Entrez."""
        
        count: int = Field(description="Total number of results")
        ids: List[str] = Field(description="List of IDs found")
        query_translation: Optional[str] = Field(default=None, description="Translated query")
  • Input schema definition for search_genes tool in MCP registration.
    "inputSchema": {
        "type": "object",
        "properties": {
            "query": {
                "type": "string",
                "description": "Search query (gene name, symbol, etc.)"
            },
            "max_results": {
                "type": "integer",
                "description": "Maximum number of results to return (default: 20)",
                "default": 20
            }
        },
        "required": ["query"]

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/mohammadnajeeb/ncbi_gene_mcp_client'

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