MCP server for RNAcentral API access with Code Mode execution, GraphQL/SPARQL support, and auto-staging of large responses
Server defines 5 tools with reasonable descriptions and schemas. Naming follows verb_noun pattern (search, execute, query_data). Descriptions are detailed (150-250 chars) and explain WHEN to use each tool. However, parameter descriptions lack specificity on constraints, ranges, and error recovery. The {prefix}_execute tools accept arbitrary JavaScript code, creating security and validation concerns. Output schemas are not explicitly documented. Error handling guidance is minimal. Schemas are present but lack enum constraints and validation rules that would guide LLM input.
Execute JavaScript code against the API with sandboxed V8 isolate. Code runs with api.get/api.post wrappers, catalog search helpers, console.log capture, and optional filesystem access. Large responses (>30KB) auto-stage into SQLite.
Execute JavaScript code against a GraphQL endpoint with sandboxed V8 isolate. Code runs with gql.query(), schema introspection helpers, optional REST api.get/api.post, console.log capture, and optional filesystem access. Large responses auto-stage into SQLite.
Execute JavaScript code against a SPARQL endpoint with sandboxed V8 isolate. Code runs with sparql.query(), sparql.ask(), sparql.raw(), common ontology prefixes, console.log capture, and optional filesystem access. Large responses auto-stage into SQLite.
Query staged data using SQL. Executes SQL against auto-staged large responses stored in SQLite. Returns query results with pagination support.
Search the API catalog (catalog mode) or OpenAPI spec (OpenAPI mode). Returns matching endpoints with full parameter docs. Use this to discover API capabilities before calling {prefix}_execute.
Arbitrary code execution in {prefix}_execute tools lacks input validation and error recovery guidance. No constraints on code complexity, execution time, or resource usage. LLM cannot determine what errors are retryable or how to fix them.
Parameter descriptions lack format constraints and validation rules. 'code' parameter accepts arbitrary JavaScript with no guidance on syntax, available functions, or error handling. 'workspace' parameter has no description of valid format or constraints.
Output schemas not documented. Tools return results but LLM cannot predict field names, types, or structure. No guidance on __staged field format or how to interpret data_access_id.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. Code execution failures will return raw stack traces.
max_results parameter in {prefix}_search lacks explicit bounds documentation. Description says 'default 10, max 25' but no enum or validation rule prevents LLM from passing 1000.