sophotron
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENALEX_EMAIL | No | Optional: OpenAlex 'polite pool' contact email (a courtesy id, not a key). | |
| UNPAYWALL_EMAIL | No | Optional: Unpaywall 'polite pool' contact email (a courtesy id, not a key). | |
| SOPHOTRON_DATA_DIR | No | Advanced override: data directory. Documented in .env.example. | |
| SOPHOTRON_LIBRARY_PATH | No | Advanced override: library path. Documented in .env.example. | |
| SOPHOTRON_OAI_ENDPOINT | No | Advanced override: OAI-PMH endpoint. Documented in .env.example. | |
| SEMANTIC_SCHOLAR_API_KEY | No | Optional: 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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