SkillAgentSearch skills...

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-mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

81/100

Supported Platforms

Claude Code
Claude Desktop

Tags

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.

Substance
30/30
Structure
20/20
Description
12/15
Adoption
4/20
Freshness
15/15

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.

SkillScoreStarsUpdatedFormat
scix-mcp (this skill)by adsabs811011d agoMCP Server
Agent-Reachby Panniantong100105.0k3d agoCLAUDE.md
taste-skillby Leonxlnx100103.8ktodayCLAUDE.md
headroomby headroomlabs-ai10078.1ktodayCLAUDE.md
ai-job-searchby ai-job-search-dev10066.9ktodayCLAUDE.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.

SciX 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

  1. Create an account at SciX
  2. Generate an API token at https://scixplorer.org/user/settings/token
  3. 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 to https://api.scixplorer.org/v1 when 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 to https://scixplorer.org.
  • PORT / HOST (HTTP only): where the HTTP transport listens. Default 8000 on 0.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_facets tool
  • 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 export tool's format enum in src/types.ts for the full list
  • Documentation Search: Query SciX help/docs content via the search_docs tool
  • Health Check: Diagnose setup (token, API reachability, tool registry) via the health_check tool
  • 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 Solr fq strings, 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, default score desc), response_format (markdown | json, default markdown).
    • Example queries: author:"Einstein, A." title:relativity, black holes year:2020-2023, author:^Smith, dark energy AND galaxy clusters.
  • get_facets: Count how a result set breaks down across facets, so a search can be narrowed. Params: query (required), filter_query, facets (default author, 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 filter string ready to pass straight back as a search filter_query entry.

    • 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, J at the root and 1/Smith, J/Smith, John one level down. Expandable buckets report a child_prefix to pass back as prefix.

  • get_paper: Fetch a paper by bibcode, DOI, arXiv ID, or SciX ID (scix:...) with optional response_format.
  • get_metrics: Metrics for bibcodes (1-2000) with optional response_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); optional rows (1-100, default 20) and response_format.
  • get_references: Backward references for a paper (bibcode, DOI, arXiv ID, or SciX ID); optional rows (1-100, default 20) and response_format.

Export

  • export: Export bibcodes (1-2000) in format — one of the 23 formats in the ExportInputSchema enum in src/types.ts (e.g. bibtex, aastex, endnote, ris, ieee, mnras). Use custom_format with format: custom for 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; optional type (all | owner | collaborator, default all) and response_format.
  • get_library: Metadata + documents for library_id; optional response_format.
  • create_library: Create with name (required), optional description, public (default false), bibcodes, and response_format.
  • delete_library: Permanently delete by library_id; optional response_format.
  • edit_library: Update name, description, or public for library_id; optional response_format.
  • manage_documents: Add/remove documents with library_id, bibcodes (1-2000), action (add | remove), and optional response_format.
  • add_documents_by_query: Add search results to a library with library_id, query, optional rows (1-2000, default 25), and response_format.
  • library_operation: Run set ops on a library with library_id, operation (union | intersection | difference | copy | empty), optional source_library_ids, name/description (for copy), and response_format.

Permissions & Sharing

  • get_permissions: View owners/collaborators for library_id; optional response_format.
  • update_permissions: Grant/change a user's access with library_id, email, permission (owner | admin | write | read), and optional response_format.
  • transfer_library: Transfer ownership with library_id, email, and optional response_format.

Annotations

  • get_annotation: Fetch note content for library_id + bibcode; optional response_format.
  • manage_annotation: Add/update note with library_id, bibcode, content, and optional response_format.
  • delete_annotation: Remove note for library_id + bibcode; optional response_format.

Diagnostics

  • health_check: Diagnose the server setup. No required params (optional response_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 is skipped); 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

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated11d ago
Forks1

Languages

TypeScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low1 info