MCP for Addgene - Plasmid Repository API. Provides tools to search, retrieve information about, and download plasmid sequences from the Addgene repository.
The Addgene MCP server demonstrates solid tool definition quality with well-structured schemas, comprehensive parameter descriptions, and clear enum constraints. All four tools have documented input schemas and descriptions that guide LLM usage. However, there are notable gaps in output schema documentation, error handling guidance, and some parameter descriptions could be more explicit about constraints and use cases. The server follows good composition patterns with distinct single-responsibility tools, but lacks recovery guidance and structured error responses.
Download a plasmid sequence file to the local filesystem. This actually downloads the file from Addgene and saves it locally. Use EXACTLY format='genbank' for .gb files (default) or format='snapgene' for .dna files. These are the only two valid format values. Returns the local file path and download status.
Get the most popular plasmids from Addgene (100+ requests each). This is a convenience method for finding widely-used, well-established plasmids. Returns up to 50 results.
Get information about downloading a plasmid sequence file. Requires a valid Addgene plasmid ID. Returns download URL and availability status. Use EXACTLY format='snapgene' for SnapGene .dna files or format='genbank' for GenBank .gb files. These are the only two valid format values.
Search for plasmids in the Addgene repository using text queries and filters. You MUST use the exact string values specified in the parameter documentation. Common use cases: find plasmids for gene expression (specify species and expression system), gene editing (vector_types='crispr'), cloning vectors (plasmid_type='empty_backbone'), or protein expression (expression='bacterial' or 'mammalian').
Output schemas not documented in tool descriptions or type hints. While Pydantic models exist (PlasmidOverview, SearchResult, SequenceDownloadInfo, SequenceDownloadResult), the tool descriptions do not explicitly state what fields are returned. LLMs cannot infer field names or structure from Pydantic definitions alone, they need explicit documentation in the tool interface.
No error recovery guidance. Tool descriptions state what the tool does but do not provide recovery steps if calls fail. E.g., 'search_plasmids' does not explain what to do if no results match filters, or how to expand the search. Error responses from the implementation are not documented.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'page_size' in addgene_search_plasmids has a default of 50 and max of 50, but the description mentions '(maximum: 50)' without explicitly stating the min/max range in a machine-readable way. The NOTE in the code about page_size being capped at 50 is a code comment and not visible to LLMs in the tool description.
Tool description for 'addgene_get_popular_plasmids' states 'Returns up to 50 results' but does not clarify the default page_size (20) or explain pagination if more than 20 results exist. The parameter description for page_size is minimal and does not explain the difference from search_plasmids.
Inconsistent parameter naming between tools. 'addgene_get_sequence_info' uses 'format' with default 'snapgene', while 'addgene_download_sequence' uses 'format' with default 'genbank'. The enum values differ in order ('snapgene'/'genbank' vs 'genbank'/'snapgene'). This invites LLM confusion, both tools operate on the same resource (plasmid sequences) but have inverted defaults.
Resource responses are stripped down (PlasmidOverview has optional fields like 'tags', 'mutation', 'services', 'promoter') but the stripping logic is not documented in descriptions. LLMs may expect more complete information (e.g., full plasmid metadata, sequence length, GC content) without explicit guidance on what's available.