scholar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTMCP_LOG_LEVEL | No | Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR). The -v CLI flag overrides to DEBUG. | INFO |
| SCHOLAR_GITHUB_TOKEN | No | GitHub personal access token for Relaton sync; lifts unauthenticated GitHub rate limit from 60/hr to 5,000/hr. | |
| SCHOLAR_MCP_ACL_PATH | No | Path to a TOML ACL file for per-subject authorization. | |
| SCHOLAR_MCP_BASE_URL | No | Public base URL, required for OIDC (e.g. https://mcp.example.com). | |
| SCHOLAR_MCP_CACHE_DIR | No | Directory for the SQLite cache database and downloaded PDFs. | /data/scholar-mcp |
| SCHOLAR_MCP_READ_ONLY | No | If true, write-tagged tools (fetch_paper_pdf, convert_pdf_to_markdown, etc.) are hidden. | true |
| SCHOLAR_MCP_VLM_MODEL | No | Model name for VLM-enriched conversion. | gpt-4o |
| SCHOLAR_MCP_S2_API_KEY | No | Semantic Scholar API key; optional but recommended for higher rate limits. | |
| SCHOLAR_MCP_DOCLING_URL | No | Base URL of a running docling-serve instance (e.g. http://localhost:5001). | |
| SCHOLAR_MCP_VLM_API_KEY | No | API key for the VLM endpoint. | |
| SCHOLAR_MCP_VLM_API_URL | No | OpenAI-compatible VLM endpoint for formula/figure-enriched PDF conversion. | |
| SCHOLAR_MCP_BEARER_TOKEN | No | Static bearer token for HTTP transport authentication. | |
| SCHOLAR_MCP_CONTACT_EMAIL | No | Included in the OpenAlex User-Agent for polite pool access (faster rate limits); also enables Unpaywall PDF lookups. | |
| SCHOLAR_MCP_OIDC_CLIENT_ID | No | OIDC client ID. | |
| FASTMCP_ENABLE_RICH_LOGGING | No | Set to false for plain / structured JSON log output. | true |
| SCHOLAR_MCP_EVENT_STORE_URL | No | Event store backend for HTTP session persistence — memory:// (dev), file:///path (survives restarts). | memory:// |
| SCHOLAR_MCP_OIDC_CONFIG_URL | No | OIDC discovery endpoint URL. | |
| SCHOLAR_MCP_EPO_CONSUMER_KEY | No | EPO OPS consumer key; both key and secret must be set for patent tools to appear. | |
| SCHOLAR_MCP_BEARER_TOKENS_FILE | No | Path to a TOML file with mapped bearer tokens for multi-subject authentication. | |
| SCHOLAR_MCP_OIDC_CLIENT_SECRET | No | OIDC client secret. | |
| SCHOLAR_MCP_EPO_CONSUMER_SECRET | No | EPO OPS consumer secret. | |
| SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY | No | Google Books API key for higher rate limits (1000 req/day without key). | |
| SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY | No | JWT signing key; required on Linux/Docker to survive restarts (openssl rand -hex 32). | |
| SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT | No | Default subject string for single-token bearer auth (default: bearer-anon). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_papersB | Search Semantic Scholar for papers matching a query. |
| get_paperA | Fetch full metadata for a single paper. |
| get_authorA | Fetch author profile and publications, or search by name. If identifier looks like a numeric S2 author ID, fetches the author directly. Otherwise performs a name search and returns up to 5 candidates for disambiguation. |
| get_citationsA | Fetch papers that cite the given paper (forward citations). |
| get_referencesA | Fetch papers referenced by the given paper (backward references). |
| get_citation_graphA | Traverse the citation graph from one or more seed papers. Performs BFS up to depth hops. Returns nodes (paper records) and directed edges. Hard-caps at max_nodes to prevent runaway expansion. |
| find_bridge_papersA | Find the shortest citation path between two papers. Uses BFS over the citation/reference graph. Leverages cached citation and reference lists to minimise API calls. |
| recommend_papersA | Recommend papers based on positive (and optionally negative) examples. |
| batch_resolveA | Resolve a list of paper, patent, or book identifiers to full records. Uses the S2 batch endpoint for paper IDs/DOIs, with OpenAlex fallback.
Patent numbers (e.g. EP1234567A1) are auto-detected and resolved via
the EPO OPS API when configured. ISBNs (prefixed |
| enrich_paperA | Fetch OpenAlex metadata to supplement Semantic Scholar data. Resolves the paper's DOI from S2, then queries OpenAlex for the requested enrichment fields. Results are cached for 30 days. |
| get_task_resultA | Poll for the result of a background task. When a tool returns PDF conversion tasks typically take 1-5 minutes. Keep polling —
the response includes |
| list_tasksA | List all active background tasks. Returns:
JSON list of |
| generate_citationsA | Generate formatted citations for one or more papers. Resolves papers via Semantic Scholar, optionally enriches with OpenAlex metadata, and formats as BibTeX, CSL-JSON, or RIS. |
| search_booksA | Search for books by title, author, or free text. Uses Open Library. Prefer |
| get_bookA | Fetch book metadata by ISBN or Open Library ID. |
| get_book_excerptA | Get a book excerpt and preview info from Google Books. Returns the publisher description, text snippet, and a link to the Google Books preview page. Google Books does not expose full chapter text via API -- the excerpt is a publisher-provided summary and/or search snippet. |
| recommend_booksA | Recommend books for a subject via Open Library. Uses the Open Library subject API to find popular books on a topic, sorted by edition count (a proxy for popularity). |
| resolve_standard_identifierA | Normalise a messy standard citation string to its canonical form. Tries local regex first (fast, no network). Falls back to querying source APIs when local patterns don't match. Returns all candidates when the input is ambiguous. |
| search_standardsA | Search technical standards by identifier, title, or free text. Searches NIST, IETF, W3C, and ETSI. Use |
| get_standardA | Retrieve a standard by identifier (canonical or fuzzy). Resolves fuzzy inputs (e.g. "rfc9000", "nist 800-53") to their
canonical form before fetching. With |
| get_sync_statusA | Report the last sync run for each standards body. One row per body. Returns:
JSON |
| get_server_infoA | Report wrapper and upstream version info for scholar-mcp. Returns server_name, server_version, core_version (fastmcp-pvl-core), and (when configured) an upstream version block. Useful for verifying a deployment matches the expected build. |
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/pvliesdonk/scholar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server