MCP server for fetching nucleotide and protein sequences from NCBI databases using E-utilities API
Server has 5 tools with basic verb-noun naming (get_*, search_*, help). All tools have descriptions (10-200 chars, within baseline range). Input schemas are present with type declarations and parameter descriptions. However, output schemas are completely undocumented, no structured return types specified. Error handling is minimal: tools return plain strings with no guidance on recovery, retryability, or next steps. No parameter validation, no enums for constrained inputs (e.g., 'db' parameter accepts free-form strings). The 'help' tool is a workaround for missing discovery, indicates poor tool composition. Descriptions lack WHEN/WHY context needed for LLM selection. No pagination support despite search_ncbi returning up to 10 results. Overall: functional but below production baseline.
Fetch nucleotide sequence from NCBI by accession number. Args: accession: NCBI nucleotide accession number (e.g., NM_000546, NG_005905) Returns: FASTA format sequence data
Fetch protein sequence from NCBI by accession number. Args: accession: NCBI protein accession number (e.g., NP_000537, P53_HUMAN) Returns: FASTA format protein sequence
Fetch metadata about a sequence from NCBI. Args: accession: NCBI accession number db: Database to search (nucleotide or protein) Returns: GenBank/GenPept format with detailed metadata
Get help information about the NCBI Sequence Fetcher tools
Search NCBI databases with a text query. Args: query: Search term (e.g., "BRCA1", "p53 tumor suppressor") db: Database to search (nucleotide, protein, gene, etc.) Returns: List of matching accession numbers and descriptions
No output schemas documented. Tools return plain strings (FASTA, GenBank, search results) with no structured field definitions. LLMs cannot plan downstream operations or extract specific fields.
'db' parameter in get_sequence_metadata and search_ncbi accepts free-form strings with no enum constraint. Should declare valid values: ['nucleotide', 'protein', 'gene', ...]. Prevents LLM hallucination of invalid database names.
Error handling returns plain strings ('No results found', 'No record found') with no recovery guidance. Should indicate: is this retryable? Should the user refine the query? What are alternatives?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
search_ncbi returns up to 10 results with no pagination support. No limit parameter, no next_cursor, no total count. Large result sets will blow context window.
'help' tool is a workaround for missing tool discovery. Indicates poor composition, tool descriptions should be self-documenting without needing a help tool.