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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (gene name, symbol, etc.) | |
| max_results | No | Maximum number of results to return (default: 20) |
Implementation Reference
- ncbi_gene_mcp_client/bridge.py:98-124 (handler)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") )
- ncbi_gene_mcp_client/mcp_server.py:71-88 (registration)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'}" }] })
- ncbi_gene_mcp_client/models.py:33-39 (schema)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"]