scix-mcp
A Model Context Protocol (MCP) server for the NASA Astrophysics Data System (SciX) API
Install / Use
claude mcp add adsabs -- npx -y github:adsabs/scix-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of scix-mcp
scix-mcp scores 81/100 on our quality scale, 3477th of 4,628 Development & Engineering skills we index.
Its MCP Server is 16 KB long, well organised into 47 sections with 15 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 11 days ago, so scix-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
scix-mcp compared with similar skills
All 4 of these similar skills score higher than scix-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| scix-mcp (this skill)by adsabs | 81 | 10 | 11d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 105.0k | 3d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 103.8k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.1k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 66.9k | today | CLAUDE.md |
Frequently asked questions
- How do I install scix-mcp?
- Run
claude mcp add adsabs -- npx -y github:adsabs/scix-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does scix-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is scix-mcp safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is scix-mcp still maintained?
- The repository was last updated 11 days ago, so scix-mcp is actively maintained.
Skill content
View source on GitHubSciX MCP Server
A Model Context Protocol (MCP) server for the SciX API. This server enables LLMs to search astronomical literature, retrieve paper metadata, analyze citation metrics, and export bibliographic data.
Quick Start (MCP clients)
Get an API Key
- Create an account at SciX
- Generate an API token at https://scixplorer.org/user/settings/token
- Set the environment variable:
export SCIX_API_TOKEN=your_api_key_here
Or create a .env file:
cp .env.example .env
# Edit .env and add your key
Configure your MCP client (Claude, Codex, etc.)
Add to your MCP client configuration:
{
"mcpServers": {
"scix": {
"command": "npx",
"args": ["scix-mcp"],
"env": {
"SCIX_API_TOKEN": "your_api_key_here"
}
}
}
}
Common locations: Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %AppData%\\Claude\\claude_desktop_config.json on Windows) and Codex CLI (~/.config/codex/config.json). Restart your client after editing.
Local MCP clients that read .mcp/server.json can also pick up the packaged config in .mcp/server.json; just drop in your SCIX_API_TOKEN.
Environment variables
SCIX_API_TOKEN(required for stdio): your SciX API key. Not used by the HTTP transport, which takes the token from each request.SCIX_API_BASE(optional): override the API base URL. Defaults tohttps://api.scixplorer.org/v1when unset. Primarily used to point the server at a local mock during the e2e test suite.SCIX_WEB_BASE(optional): override the host used when building the scixplorer.org links in tool output. Defaults tohttps://scixplorer.org.PORT/HOST(HTTP only): where the HTTP transport listens. Default8000on0.0.0.0.
HTTP transport
scix-mcp-http serves the same tools over Streamable HTTP instead of stdio:
POST /mcp for JSON-RPC, GET /healthz as an unauthenticated probe.
Unlike stdio, the server holds no token of its own — each request must carry the caller's, and requests without one get a 401:
Authorization: Bearer <your SciX API token>
Tool calls act as the calling user and spend that user's rate limit. Clients that cannot set the header (ChatGPT connectors, which need OAuth or no auth) cannot use this endpoint.
Example Prompts
- Find refereed JWST exoplanet papers from 2022-2024 sorted by citation_count, return the top 5 in markdown with bibcodes, titles, first author, and citation counts.
- Build a query for gravitational wave kilonova follow-ups since 2017 (fielded abstract search), add the first 50 results to library <library_id>, and then give me metrics (h-index, total cites) for those bibcodes in JSON.
- Fetch paper 2020ApJ...905....3A, list its first 10 references with titles, and also list the first 10 forward citations with publication years.
- Create a public library named “Cosmic Web Reviews”, seeded with bibcodes [...], then share the public URL and export the contents in BibTeX.
- For bibcodes [...], return citation metrics plus a ranked list of which papers cite the most recent one (rows=25) in markdown.
- Get all my libraries, pick the one with the most documents, and return its metadata plus the first 5 document titles in JSON.
Features
- Literature Search: Full-text search with advanced Solr query syntax
- Faceting: Break a result set down by any of the 16 SciX facets and feed the counts back as filters via the
get_facetstool - Paper Details: Retrieve metadata for any publication
- Citation Metrics: Calculate h-index, citation counts, and usage statistics
- Citation Network: Explore forward and backward citations
- Export: Generate citations in 23 bibliographic formats (BibTeX, AASTeX, EndNote, RIS, and more) — see the
exporttool'sformatenum insrc/types.tsfor the full list - Documentation Search: Query SciX help/docs content via the
search_docstool - Health Check: Diagnose setup (token, API reachability, tool registry) via the
health_checktool - Dual Format: Support for both human-readable Markdown and machine-readable JSON
Available Tools
Search & Metadata
search: Solr-powered search across SciX. Params:query(required),filter_query(up to 20 Solrfqstrings, each sent as its own repeated parameter and ANDed together),rows(1-100, default 10),start(offset, default 0),sort(score desc|citation_count desc|date desc|date asc|read_count desc, defaultscore desc),response_format(markdown|json, defaultmarkdown).- Example queries:
author:"Einstein, A." title:relativity,black holes year:2020-2023,author:^Smith,dark energy AND galaxy clusters.
- Example queries:
get_facets: Count how a result set breaks down across facets, so a search can be narrowed. Params:query(required),filter_query,facets(defaultauthor,year,publications,keywords,refereed,collections),limit(1-200 buckets per facet, default 10),sort(count desc|count asc|index asc|index desc),prefix(drill into a hierarchy; only valid with exactly one facet),response_format.-
Every bucket carries a
filterstring ready to pass straight back as asearchfilter_queryentry. -
Available facets, with the Solr field each one counts:
| Facet | Solr field | Hierarchical | | --- | --- | --- | |
author|author_facet_hier| yes (2 levels) | |collections|database| no | |refereed|property| no | |institutions|aff_facet_hier| yes (2 levels) | |keywords|keyword_facet| no | |publications|pub_abbrev| no | |bibgroups|bibgroup_facet| no | |simbad|simbad_object_facet_hier| yes (2 levels) | |ned|ned_object_facet_hier| yes (2 levels) | |award|grant_facet_hier| yes (2 levels) | |data|data_facet| no | |vizier|vizier_facet| no | |pubtype|doctype_facet_hier| yes (2 levels) | |planetary|planetary_feature_facet_hier_3level| yes (3 levels) | |uat|uat| no | |year|year| no | -
Hierarchical facet values are prefixed with their level, e.g.
0/Smith, Jat the root and1/Smith, J/Smith, Johnone level down. Expandable buckets report achild_prefixto pass back asprefix.
-
get_paper: Fetch a paper bybibcode, DOI, arXiv ID, or SciX ID (scix:...) with optionalresponse_format.get_metrics: Metrics forbibcodes(1-2000) with optionalresponse_format; returns h-index, g-index, citation counts, usage stats.
Citation Network
get_citations: Forward citations for a paper (bibcode, DOI, arXiv ID, or SciX ID); optionalrows(1-100, default 20) andresponse_format.get_references: Backward references for a paper (bibcode, DOI, arXiv ID, or SciX ID); optionalrows(1-100, default 20) andresponse_format.
Export
export: Exportbibcodes(1-2000) informat— one of the 23 formats in theExportInputSchemaenum insrc/types.ts(e.g.bibtex,aastex,endnote,ris,ieee,mnras). Usecustom_formatwithformat: customfor a template. Returns plain text in the chosen format.
Documentation
search_docs: Search SciX help documentation. Params:query(required, natural language),limit(1-20, default 5). Returns a ranked list with title, section/subsection, source URL, relevance score, and a focused snippet.
Libraries
get_libraries: List libraries; optionaltype(all|owner|collaborator, defaultall) andresponse_format.get_library: Metadata + documents forlibrary_id; optionalresponse_format.create_library: Create withname(required), optionaldescription,public(defaultfalse),bibcodes, andresponse_format.delete_library: Permanently delete bylibrary_id; optionalresponse_format.edit_library: Updatename,description, orpublicforlibrary_id; optionalresponse_format.manage_documents: Add/remove documents withlibrary_id,bibcodes(1-2000),action(add|remove), and optionalresponse_format.add_documents_by_query: Add search results to a library withlibrary_id,query, optionalrows(1-2000, default 25), andresponse_format.library_operation: Run set ops on a library withlibrary_id,operation(union|intersection|difference|copy|empty), optionalsource_library_ids,name/description(for copy), andresponse_format.
Permissions & Sharing
get_permissions: View owners/collaborators forlibrary_id; optionalresponse_format.update_permissions: Grant/change a user's access withlibrary_id,email,permission(owner|admin|write|read), and optionalresponse_format.transfer_library: Transfer ownership withlibrary_id,email, and optionalresponse_format.
Annotations
get_annotation: Fetch note content forlibrary_id+bibcode; optionalresponse_format.manage_annotation: Add/update note withlibrary_id,bibcode,content, and optionalresponse_format.delete_annotation: Remove note forlibrary_id+bibcode; optionalresponse_format.
Diagnostics
health_check: Diagnose the server setup. No required params (optionalresponse_format). Reports server name/version, API base URL, whether a token is configured, an authentication probe result (ok|unauthorized|rate_limited|unreachable|skipped), and the registered tool names. Never emits the token value. Runs without a token (probe isskipped); use it to tell setup problems apart from ordinary API errors.
Rate Limits
- 5000 requests per day per API key
- Rate limit info is returned in response headers
- Request higher limits at https://scixplorer.org/feedback/general
SciX Search Syntax
The SciX search supports Solr query syntax:
| Syntax | Description | Example |
| ----------------------- | ----------------- | -------------------------------- |
| author:"Last, F." | Exact author | author:"Huchra, John" |
| author:^Last | First author | author:^Smith |
| title:keyword | Title search | title:exoplanet |
| abstract:keyword | Abstract search | abstract:"dark matter" |
| year:YYYY-YYYY | Year range | year:2020-2023 |
| property:refereed | Refereed only | property:refereed |
| citations(bibcode:X) | Papers citing X | citations(bibcode:2019ApJ...) |
| references(bibcode:X) | Papers cited by X | references(bibcode:2019ApJ...) |
| AND, OR, NOT | Boolean operators | black holes AND galaxy |
Values discovered through get_facets are better applied as filter_query
entries than folded into query: Solr caches filters separately, and the
facet/filter split is what the SciX web UI does.
Outbound request tagging
Every request this server makes to the SciX API carries:
X-Client-Source: scix-mcp— a stable, low-cardinality tag so SciX access logs can attribute MCP traffic without parsing User-Agent.User-Agent: scix-mcp/<version> (transport=stdio|http)— version and transport detail.
Development
Install & Build
pnpm install
pnpm build
Local commands
# Watch mode
pnpm dev
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js
Testing
The project uses Vitest.
Running Tests
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage
pnpm test:coverage
# Run the end-to-end protocol smoke suite (builds first, then drives the
# built server over stdio against a local mock SciX API)
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
105.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
103.8kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
78.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
66.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
