Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OPENALEX_EMAILNoOptional: OpenAlex 'polite pool' contact email (a courtesy id, not a key).
UNPAYWALL_EMAILNoOptional: Unpaywall 'polite pool' contact email (a courtesy id, not a key).
SOPHOTRON_DATA_DIRNoAdvanced override: data directory. Documented in .env.example.
SOPHOTRON_LIBRARY_PATHNoAdvanced override: library path. Documented in .env.example.
SOPHOTRON_OAI_ENDPOINTNoAdvanced override: OAI-PMH endpoint. Documented in .env.example.
SEMANTIC_SCHOLAR_API_KEYNoOptional: raises Semantic Scholar rate limits. Without it, S2 still works but rate-limits aggressively on its shared unauthenticated pool.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_papersA

Search for philosophy papers using Semantic Scholar. Returns metadata, abstracts, and PDF URLs where available. Pass category_id (from browse_taxonomy) to re-rank results as a semantic lens over an inferred PhilPapers-category region — papers stay under "papers", each tagged with a relative proximity tier ("nearer"/"farther"/"unplaceable"); this is a "near category C" ordering, not an authoritative classification.

get_paperA

Get detailed metadata for a paper by ID. Accepts S2 paper ID, DOI, arXiv ID, or PhilArchive ID.

get_citationsA

Get papers that cite a given paper.

get_referencesB

Get papers that a given paper cites (its bibliography).

get_relatedA

Get papers similar to a given paper (recommendations based on SPECTER embeddings). Pass category_id (from browse_taxonomy) to re-rank the related set as a semantic lens over an inferred PhilPapers-category region — papers stay under "related", each tagged with a relative proximity tier; a "related, and near category C" ordering, not an authoritative classification.

get_pdfA

Get PDF URL for a paper. Tries Semantic Scholar open access first, then falls back to PhilArchive.

search_philarchiveA

Search the local PhilArchive cache directly. Useful for finding philosophy papers that may not be in Semantic Scholar.

harvest_philarchiveA

Incrementally harvest papers from PhilArchive OAI-PMH. Rate limited to 2 req/sec. Run periodically to update local cache.

get_cache_statsB

Get statistics about the local PhilArchive cache and cross-reference mappings.

search_openalexA

Search papers via OpenAlex with open-access full-text discovery. Complements Semantic Scholar; OpenAlex and the OA PDFs it points to are reachable by automated clients (unlike PhilArchive, which is Cloudflare-walled). Use philosophy_only to restrict to the OpenAlex Philosophy concept, and open_access_only to return only papers with OA full text.

browse_taxonomyA

Browse the expert-curated PhilPapers category hierarchy (6,134 categories from a cached snapshot — the live PhilPapers API is Cloudflare-blocked). Omit category_id for the top-level areas; pass category_id to list its subcategories; pass query to find categories by name. With a category_id you can: call category_papers to list influential papers near that category region, or pass it as the category_id param to search_papers / get_related to re-rank by category proximity. (Those are an inferred semantic lens, not an authoritative classification.)

category_papersA

List influential papers near an INFERRED semantic region for a PhilPapers category. This is a semantic lens over an inferred mapping (category name → SPECTER2 centroid → nearby papers), NOT an authoritative PhilPapers classification or a canonical reading list. Pass a category_id from browse_taxonomy. Coarse/distinct categories (top-level areas, subfields) are MORE reliable but still an unvalidated per-category inference; fine-grained leaves — and miscellaneous/structural buckets and thin regions — are flagged low-confidence. Papers are ranked by influential citation count, each tagged with its relative proximity to the region.

library_addA

Save a paper to your personal library (the arxiv-sanity "library" primitive). Resolves metadata from Semantic Scholar (or CrossRef for a bare DOI) and stores it with optional tags and a note. The saved set is what recommend uses to suggest what to read next. Accepts a Semantic Scholar id, DOI, arXiv id, or PhilArchive code.

library_removeA

Remove a saved paper from your personal library by id, S2 id, or DOI.

download_paperA

Resolve the best open-access PDF for a paper, fetch it, extract its text, and store it as markdown in the shared library (default ~/.arxiv-mcp-server/papers, override with ARXIV_MCP_STORAGE_PATH). Returns a paper_id (slug) to pass to read_paper. PhilArchive PDFs are browser-only (Cloudflare) and are not fetched — the URL is returned to open manually.

library_listA

List the papers in your personal library, newest first, optionally filtered to a tag. Also reports the set of tags in use.

recommendA

Recommend papers to read next, seeded by your library — the arxiv-sanity "more like these" feature. By default it uses your whole library as positive examples; pass tag to recommend from one reading-list bucket, or paper_ids to recommend ad hoc from specific papers. Powered by Semantic Scholar SPECTER2 embeddings; papers already in your library are excluded. Without a Semantic Scholar API key this may be rate-limited (HTTP 429).

read_paperA

Read back the markdown text of a paper previously stored by download_paper. Supports pagination via start/max_chars. Reads {storageDir}/{paper_id}.md (shared with arxiv-mcp-server). If the paper is not stored, returns an error asking to download_paper first.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rookslog/sophotron'

If you have feedback or need assistance with the MCP directory API, please join our Discord server