EMDB (EBI Electron Microscopy Data Bank) MCP — keyless. 3D cryo-EM and electron-tomography density maps of proteins, complexes, and viruses. Search maps by keyword and fetch an entry's title, sample, method, and resolution. Complements PDB/AlphaFold (experimental structures).
Two well-named, read-only tools with complete input schemas and solid descriptions. search_maps and get_map follow verb_noun convention and clearly state their purpose. Descriptions (150 - 200 chars) are adequate but lack actionable guidance on when to use each tool or how they complement each other. Input schemas are properly typed with required fields. However, output schemas are not documented, LLMs cannot predict the structure of returned maps or entries. Error handling is basic (generic error objects) and does not guide recovery. No pagination support for search_maps despite potentially large result sets. Missing tool annotations (readOnlyHint) despite both tools being read-only.
Get a single EMDB entry by its EMDB id (e.g. "EMD-1080"). Returns a trimmed record: title, sample, structure-determination method, resolution (Angstrom), and release date. EMDB holds 3D electron-microscopy density maps of proteins, complexes, and viruses. Keyless.
Search the EBI Electron Microscopy Data Bank (EMDB) for 3D cryo-EM / electron-tomography density maps by free-text keyword (e.g. "ribosome", "spike protein", "apoptosis"). Returns matching maps with EMDB id, title, resolution (Angstrom), and structure-determination method. Keyless. Complements PDB/AlphaFold (which hold atomic/experimental structures).
Output schemas not documented. LLMs cannot predict the structure of search_maps results (maps array with emdb_id, title, resolution_angstrom, method) or get_map response fields. This forces agents to reason about response structure without explicit guidance.
Error handling is generic. Both tools return {error: string} on failure, but do not guide recovery. E.g., 'EMDB: 404 ...' tells the LLM nothing about whether to retry, adjust the query, or ask the user. Missing actionable error messages.
No pagination support for search_maps. The tool accepts a limit parameter (max 50) but does not return a total count, next_cursor, or offset mechanism. Large result sets cannot be iterated; agents cannot discover all matching maps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Tool annotations missing. Both tools are read-only and should declare readOnlyHint: true in their definitions. This helps agents understand safety and retry semantics without reading descriptions.
Descriptions lack dependency hints. No guidance on when to call search_maps vs get_map, or how they complement each other. E.g., 'Use search_maps to find entries by keyword, then call get_map with the emdb_id to fetch full details.'