Model Context Protocol server for Europe PMC literature evidence retrieval and ranking
Literature MCP demonstrates solid naming, clear tool registration with descriptions, and properly annotated tools with enum constraints. All four tools follow verb_noun naming (search_, collect_, get_) and are registered with tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). Input schemas are visible and include type definitions with reasonable constraints (page_size 1-100, sort enums). However, parameter descriptions are incomplete or vague in places (e.g., 'disease_id' lacks clarity on what constitutes a valid EFO identifier), and output schemas are not documented in the source code. Tool descriptions are loaded from external text files, content not shown in source, so descriptions cannot be fully assessed beyond the inline brief descriptions provided. Error handling and recovery guidance are not evident in the code. The server is well-structured and follows modern patterns, but lacks depth in documentation and explicit output schema definitions that production tools require.
Collect ranked literature evidence for a target and optional disease context.
Fetch a single article by PMID from Europe PMC.
Return endpoint and client settings.
Search Europe PMC using a free-form query.
Output schemas are not documented in source code. LLMs cannot infer what fields search_literature_articles, collect_literature_target_evidence, or get_literature_article_by_pmid return. This forces agents to guess at response structure and makes chaining uncertain.
Parameter descriptions are vague or incomplete. 'disease_id' is described as 'Optional disease identifier, for example EFO_0000311' but does not explain the format, validation rules, or where to find valid identifiers. 'gene_symbol' references 'HGNC gene symbol' without explaining the constraint or validation. These lack the actionable detail required for LLMs to construct correct calls.
No error handling or recovery guidance visible in source code. If a call to Europe PMC fails (network timeout, invalid query, rate limit), the agent has no guidance on what to do next or whether to retry. Tools should return actionable errors with recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Tool description content is loaded from external .txt files (tools/search/description.txt, etc.) and is not visible in the source code provided. The brief inline descriptions are minimal (e.g., 'Search Europe PMC using a free-form query'). Without seeing the full descriptions, it is unclear whether they meet the 50-200 character, LLM-optimized standard or whether they include WHEN/WHY context.
get_literature_service_metadata returns 'endpoint and client settings' but output schema is not documented. This is a discovery/metadata tool, agents need to know what fields are returned (e.g., endpoint URL, timeout, version) to use the result.
No pagination guidance for search_literature_articles. The tool accepts page_size (max 100) but no indication of whether there is a 'next_cursor', 'page', or total count in the response. Large result sets could blow context windows without documented pagination support.