MCP Server for querying and exploring RDF databases through SPARQL endpoints, with support for multiple biological databases including UniProt, PubChem, PDB, ChEMBL, MeSH, Wikidata, and others.
Server has 12 tools with basic schemas and descriptions, but significant gaps limit production readiness. Descriptions are present but generic (avg ~80 chars, below 194-char baseline). No output schemas documented. Error handling is absent, tools return raw API responses or JSON strings without guidance. Tool naming is verb-forward (search_, get_) which is good, but parameter naming inconsistencies (e.g., 'query' vs 'compound_name') and missing type info on some params reduce clarity. No security considerations visible (credentials, rate limits, input validation). Composition is reasonable, tools are single-purpose, but chaining support is weak (no IDs returned to enable downstream calls).
Describe the PDB RDF schema.
Get ChEMBL entity by ID.
Get compound attributes from PubChem RDF
Get a PubChem compound ID
Get the available SPARQL endpoints for RDF Portal.
Get VoID data for the given graph URI.
Search for ChEMBL ID by query.
Missing parameter descriptions on most tools. Rubric requires 100% of A+ tools have param descriptions; this server has ~30% coverage. E.g., search_chembl_target(query, limit) lacks descriptions in the schema.
No output schemas documented. Tools return raw JSON strings or dicts without specifying field names, types, or structure. LLMs cannot plan downstream calls or extract data reliably.
No error handling or recovery guidance. Tools call external APIs and return raw responses or raise exceptions without telling LLMs what to do next (retry, ask user, etc.).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Search for ChEMBL molecule by query.
Search for ChEMBL target by query.
Search for MeSH ID by query.
Search for PDBj entry information by keywords.
Search for a UniProt entity ID by query.
Inconsistent parameter naming across similar tools. search_uniprot_entity uses 'query', get_pubchem_compound_id uses 'compound_name'. This forces LLMs to reason about field mappings.
No input validation or constraints. Parameters like 'limit' are unbounded integers; 'query' accepts any string. Rubric requires format, range, and constraint documentation.