MCP server for searching and executing queries against the Europe PMC API with Code Mode support
Two tools with partial schema visibility. europepmc_search has a complete Zod schema with typed parameters (query, category, max_results) and descriptions, but the description is verbose (>1024 chars) and mixes usage guidance with tool purpose. europepmc_execute has a description but NO visible input schema in the provided source, only a code parameter description is shown. Output schemas are not documented for either tool. Error handling and recovery guidance are absent. The server uses a custom codemode framework (Cloudflare Workers) rather than standard MCP patterns, making tool composition and chaining unclear.
Execute JavaScript code against the Europe PMC API. Code runs in a sandboxed V8 isolate with: - searchSpec(query) — search the API catalog - listCategories() — list endpoint categories - getEndpoint(path) — get full endpoint docs - api.get(path, params) / api.post(path, body, params) — make HTTP requests - api.getAll(path, params) — exhaustive fetch with auto-pagination - db.stage(data, opts?) — stage large datasets into SQLite - db.queryStaged(dataAccessId, sql) — query staged data - fs.readFile / fs.writeFile / fs.glob ... — persistent virtual filesystem (if enabled) - console logging (log, warn, error, info) — captured output The last expression or return value is the result.
Search the Europe PMC API catalog. Returns matching endpoints with full parameter docs. Use this to discover API capabilities before calling europepmc_execute. Categories: (0) USAGE IN europepmc_execute: - api.get(path, params) for GET, api.post(path, body, params) for POST - Path params like /lookup/{id} are auto-interpolated from params: api.get('/lookup/{id}', {id: 'ENSG...'}) - Remaining params become query string - Large responses (>100KB) are auto-staged: check result.__staged, return the staging info, use europepmc_query_data to explore - Use limit/pagination params to control response size. Large datasets auto-stage for SQL queries.
europepmc_execute has no visible input schema in source code. Only parameter descriptions are shown; no Zod schema, JSON Schema, or type definitions are provided.
europepmc_search description exceeds 1024 chars and conflates tool purpose with usage guidance for downstream tools (europepmc_execute, europepmc_query_data). Descriptions should focus on WHAT the tool does, not HOW to use other tools. Splits guidance into separate parameter descriptions.
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract required fields without knowing the response structure. europepmc_search should document endpoint object fields; europepmc_execute should document result structure and __staged field semantics.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Tools do not document what errors are possible, whether they are retryable, or what the LLM should do next. Missing pattern:recovery-guide implementation.
Tool composition unclear. europepmc_search description references europepmc_execute and europepmc_query_data, but those tools are not visible in the provided source. If europepmc_query_data exists, it should be documented; if not, the reference is broken.