MCP server for the NASA Astrophysics Data System (ADS) API
NASA ADS server demonstrates solid tool definitions with comprehensive schemas and clear descriptions. Most tools (11/11) have descriptive text and input schemas present. Tool naming follows verb_noun conventions (ads_search, ads_export, ads_metrics). However, several tools lack critical parameter-level descriptions and constraint documentation. Output schemas are not explicitly documented in the source code. Error handling is present but lacks recovery guidance. Security considerations around API token injection are not visible in parameter definitions.
Retrieve full paper metadata by bibcodes from ADS.
Suggest papers that should be cited alongside the given set. Given a set of bibcodes (e.g. from a paper's bibliography), the citation helper returns papers that are frequently co-cited with the input set but are not yet included.
Export paper records in various citation formats. Supports 18+ formats including BibTeX, AASTeX, RIS, EndNote, CSL-JSON, Dublin Core XML, VOTable, and more. Returns formatted citation text.
Manage ADS libraries (saved paper collections). Actions: list: List all your libraries; get: Get a library's details and bibcodes (requires library_id); create: Create a new library (requires name); edit: Edit library metadata (requires library_id); delete: Permanently delete a library (requires library_id)
Manage documents and notes within an ADS library. Document actions: add/remove: Add or remove bibcodes from the library; union/intersection/difference/copy/empty: Set operations with other libraries. Note actions: get_notes: List all notes in the library; add_note/edit_note/delete_note: Manage notes on individual papers
Missing output schema documentation. While input schemas are comprehensive, the source code does not show documented return types or response shapes for any tool. LLMs cannot plan downstream calls without knowing what fields to expect.
Field descriptions for some parameters lack constraint details. For example, 'fl' (fields list) and 'sort' parameters don't explain valid field names or sort syntax. 'object' in ads_object lacks format guidance (does it accept 'M31', 'NGC 224', '00:42:44.3 +41:16:09'?). LLMs require explicit constraint documentation to avoid hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Compute citation metrics for a set of papers. Returns h-index, g-index, i10-index, citation counts, read counts, and time-series histograms. Works for 1 to ~2000 bibcodes.
Compute author or paper network graphs for a set of bibcodes. Returns hierarchical network data suitable for visualization.
Search for astronomical objects and translate to ADS-queryable coordinates. Given an object name or coordinates, returns the translated ADS query format.
Resolve reference strings to ADS bibcodes. Given a list of reference strings (as they appear in a bibliography), attempt to match them to ADS records and return bibcodes.
Resolve a bibcode to available links and metadata. Given an ADS bibcode, returns available links (full text, data, arXiv, etc.) and resolver metadata.
Search the NASA ADS database for papers using a query string.
ads_library and ads_library_documents combine multiple unrelated actions in a single tool via action enums. 'create', 'edit', 'delete', 'get', 'list' are all distinct operations with different parameter requirements and side effects. This violates single responsibility. Consider splitting into create_library, update_library, delete_library, get_library, list_libraries.
Error handling lacks recovery guidance. Source code does not show error categorization (retryable vs. user-fixable vs. fatal) or actionable error messages. A bibcode lookup failure should guide the agent: 'Bibcode not found. Try ads_reference_resolve() to find the correct code.'
ads_library 'action' enum includes dangerous write operations (delete) with no confirmation or dry-run step. Agents make mistakes, destructive tools should require an explicit confirmation or implement a confirm_before_execute pattern.
Parameter interdependencies not documented. ads_export's 'journalformat' only applies to certain export formats, but the description does not state which ones or when to omit it. ads_library's 'library_id' is required for some actions (get, edit, delete) but not others (list, create), which should be explicit in each parameter description.