---
bezeichner: "io.github.pvliesdonk/scholar-mcp"
art: "mcp_server"
slug: "io-github-pvliesdonk-scholar-mcp"
paketkoordinate: "pypi:pvliesdonk-scholar-mcp"
status: "aktiv"
homepage: "https://pvliesdonk.github.io/scholar-mcp/"
erhebungsstand: "2026-10-10T01:17:01.464Z"
namensraum: "io.github.pvliesdonk"
registerseite: "https://tracevero.de/mcp/io-github-pvliesdonk-scholar-mcp"
abgerufen_am: "2026-10-10"
zugangsdaten_erforderlich: false
ausfuehrungsort: "lokal"
dateisystem_pfadargument: true
quelloffen_einsehbar: true
einsatzgebiet: "dokument"
roh_beschreibung: "FastMCP server for scholarly papers, patents, books and standards with docling PDF conversion"
version: "2.0.0"
roh_umgebungsvariablen: "SCHOLAR_MCP_KV_STORE_URL, SCHOLAR_MCP_TOOLS_ALLOW, SCHOLAR_MCP_TOOLS_DENY, SCHOLAR_MCP_SERVER_NAME, SCHOLAR_MCP_INSTANCE_DESCRIPTION, SCHOLAR_MCP_INSTRUCTIONS_EXTRA, SCHOLAR_MCP_INSTRUCTIONS, FASTMCP_LOG_LEVEL, FASTMCP_ENABLE_RICH_LOGGING, SCHOLAR_GITHUB_TOKEN, SCHOLAR_MCP_READ_ONLY, SCHOLAR_MCP_S2_API_KEY, SCHOLAR_MCP_DOCLING_URL, SCHOLAR_MCP_VLM_API_URL, SCHOLAR_MCP_VLM_API_KEY, SCHOLAR_MCP_VLM_MODEL, SCHOLAR_MCP_CACHE_DIR, SCHOLAR_MCP_CONTACT_EMAIL, SCHOLAR_MCP_EPO_CONSUMER_KEY, SCHOLAR_MCP_EPO_CONSUMER_SECRET, SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY, SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S, SCHOLAR_MCP_JOBS_RESULT_TTL_S, SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT, SCHOLAR_MCP_BASE_URL, SCHOLAR_MCP_BEARER_TOKEN, SCHOLAR_MCP_OIDC_CONFIG_URL, SCHOLAR_MCP_OIDC_CLIENT_ID, SCHOLAR_MCP_OIDC_CLIENT_SECRET, SCHOLAR_MCP_OIDC_AUDIENCE, SCHOLAR_MCP_OIDC_REQUIRED_SCOPES, SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES, SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY, SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN, SCHOLAR_MCP_KV_STORE_URL, SCHOLAR_MCP_APP_DOMAIN, SCHOLAR_MCP_TOOLS_ALLOW, SCHOLAR_MCP_TOOLS_DENY, SCHOLAR_MCP_AUTH_MODE, SCHOLAR_MCP_BEARER_TOKENS_FILE, SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT, SCHOLAR_MCP_SERVER_NAME, SCHOLAR_MCP_INSTANCE_DESCRIPTION, SCHOLAR_MCP_INSTRUCTIONS_EXTRA, SCHOLAR_MCP_INSTRUCTIONS, SCHOLAR_MCP_HTTP_PATH, SCHOLAR_MCP_HEALTH_DETAIL, PUID, PGID, FASTMCP_LOG_LEVEL, FASTMCP_ENABLE_RICH_LOGGING, SCHOLAR_GITHUB_TOKEN, SCHOLAR_MCP_READ_ONLY, SCHOLAR_MCP_S2_API_KEY, SCHOLAR_MCP_DOCLING_URL, SCHOLAR_MCP_VLM_API_URL, SCHOLAR_MCP_VLM_API_KEY, SCHOLAR_MCP_VLM_MODEL, SCHOLAR_MCP_CACHE_DIR, SCHOLAR_MCP_CONTACT_EMAIL, SCHOLAR_MCP_EPO_CONSUMER_KEY, SCHOLAR_MCP_EPO_CONSUMER_SECRET, SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY, SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S, SCHOLAR_MCP_JOBS_RESULT_TTL_S, SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT"
roh_geheime_pflichtvariablen: ""
roh_transportarten: "stdio, streamable-http"
roh_pfadargumente: ""
roh_repository_url: "https://github.com/pvliesdonk/scholar-mcp"
roh_paketquellen: "oci, pypi"
roh_geheime_pflichtkopfzeilen: ""
roh_pfad_umgebungsvariablen: "SCHOLAR_MCP_BEARER_TOKENS_FILE, SCHOLAR_MCP_CACHE_DIR"
roh_remote_adressen: ""
roh_remote_hosts: ""
roh_statusmeldung: ""
roh_veroeffentlicht_am: "2026-09-11"
roh_aktualisiert_am: "2026-09-11"
roh_schemafassung: "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json"
roh_bereitstellungsform: "paket"
roh_repository_quelle: "github"
roh_repository_unterordner: ""
roh_paketbezeichner: "ghcr.io/pvliesdonk/scholar-mcp:v2.0.0, pvliesdonk-scholar-mcp"
roh_paketversionen: "2.0.0"
roh_laufzeithinweise: "uvx"
roh_umgebungsformate: "boolean, filepath, number"
roh_umgebungsbeschreibungen: "FASTMCP_ENABLE_RICH_LOGGING=Set false for plain or structured JSON log output. · FASTMCP_LOG_LEVEL=Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG. · PGID=Run the server process as this GID; pair with PUID to match the owner of a mounted volume. · PUID=Run the server process as this UID; the container entrypoint reassigns ownership of writable paths to match. · SCHOLAR_GITHUB_TOKEN=GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits. · SCHOLAR_MCP_APP_DOMAIN=MCP Apps iframe domain, used for CSP sandboxing. Overrides the host derived from `base_url`. · SCHOLAR_MCP_AUTH_MODE=Explicit auth-mode override, accepting `remote` or `oidc-proxy` (case- and whitespace-insensitive). When unset the mode is auto-detected from which auth variables are set; the override exists because having all four OIDC variables set is ambiguous between those two modes. Other values are ignored with a warning. · SCHOLAR_MCP_BASE_URL=Public base URL of the deployed server, for example `https://mcp.example.com`. Required for OIDC. Also the fallback source of the MCP Apps domain when `app_domain` is unset. · SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT=Subject assigned to the single-token bearer mode; ignored when `bearer_tokens_file` is set, since mapped mode carries per-token subjects. · SCHOLAR_MCP_BEARER_TOKEN=Single shared bearer token; enables bearer auth unless `bearer_tokens_file` is set, which takes precedence. · SCHOLAR_MCP_BEARER_TOKENS_FILE=Path to a TOML file mapping bearer tokens to subjects; overrides the single-token `bearer_token` mode. · SCHOLAR_MCP_CACHE_DIR=Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/). · SCHOLAR_MCP_CONTACT_EMAIL=Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source. · SCHOLAR_MCP_DOCLING_URL=Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error. · SCHOLAR_MCP_EPO_CONSUMER_KEY=EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register. · SCHOLAR_MCP_EPO_CONSUMER_SECRET=EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset. · SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY=Google Books API key. Optional; book tools work unauthenticated at reduced rate limits. · SCHOLAR_MCP_HEALTH_DETAIL=How much the unauthenticated /health and /health/ready bodies say: status, standard (adds name, version and per-check verdicts), or full (adds redacted reasons; trusted networks only). · SCHOLAR_MCP_HTTP_PATH=Mount path for the MCP endpoint; the health routes derive their prefix from it. · SCHOLAR_MCP_INSTANCE_DESCRIPTION=Concise routing context that distinguishes this deployment's material or responsibility. · SCHOLAR_MCP_INSTRUCTIONS=Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy). · SCHOLAR_MCP_INSTRUCTIONS_EXTRA=Deployment-specific behavioral policy added to the generated MCP instructions. · SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT=Maximum live background jobs per calling subject; further promotions are rejected until older records expire. · SCHOLAR_MCP_JOBS_RESULT_TTL_S=Seconds a background-job record (working or finished) is retained for polling before it expires from the store. · SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S=Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead. · SCHOLAR_MCP_KV_STORE_URL=Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable. · SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES=Scopes advertised to MCP clients in protected-resource metadata, space- or comma-separated. Overrides the default `openid offline_access`; `oidc_required_scopes` is always added on top. Set this when the registered client is not permitted `offline_access`, or to have clients request extra claim scopes (such as `groups`) without also requiring them in every token. · SCHOLAR_MCP_OIDC_AUDIENCE=Expected `aud` claim; tokens issued for another audience are rejected. · SCHOLAR_MCP_OIDC_CLIENT_ID=OIDC client identifier registered with the provider. · SCHOLAR_MCP_OIDC_CLIENT_SECRET=OIDC client secret registered with the provider. · SCHOLAR_MCP_OIDC_CONFIG_URL=OIDC discovery document URL, for example `https://auth.example.com/.well-known/openid-configuration`. · SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY=Signing key for issued tokens; used in oidc-proxy mode only. When unset, the key is derived deterministically from `oidc_client_secret`, so tokens survive a restart. Rotating that secret then invalidates every issued token. Set this explicitly to decouple token validity from secret rotation. Generate with `openssl rand -hex 32`. · SCHOLAR_MCP_OIDC_REQUIRED_SCOPES=Scopes a caller must present, space- or comma-separated. Defaults to `openid` in oidc-proxy mode. · SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN=Validate the access token instead of the id token. · SCHOLAR_MCP_READ_ONLY=When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them. · SCHOLAR_MCP_S2_API_KEY=Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form. · SCHOLAR_MCP_SERVER_NAME=Rename this server instance; defaults to the project name. · SCHOLAR_MCP_TOOLS_ALLOW=Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`. · SCHOLAR_MCP_TOOLS_DENY=Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`. · SCHOLAR_MCP_VLM_API_KEY=API key for the VLM endpoint. · SCHOLAR_MCP_VLM_API_URL=OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion. · SCHOLAR_MCP_VLM_MODEL=Model name to use with the VLM endpoint."
roh_symbolformate: ""
roh_verbindungswege: "{\"packages\":[{\"registryType\":\"pypi\",\"identifier\":\"pvliesdonk-scholar-mcp\",\"version\":\"2.0.0\",\"runtimeHint\":\"uvx\",\"transport\":\"stdio\",\"environment\":[{\"name\":\"SCHOLAR_MCP_KV_STORE_URL\",\"description\":\"Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_TOOLS_ALLOW\",\"description\":\"Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_TOOLS_DENY\",\"description\":\"Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_SERVER_NAME\",\"description\":\"Rename this server instance; defaults to the project name.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTANCE_DESCRIPTION\",\"description\":\"Concise routing context that distinguishes this deployment's material or responsibility.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTRUCTIONS_EXTRA\",\"description\":\"Deployment-specific behavioral policy added to the generated MCP instructions.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTRUCTIONS\",\"description\":\"Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy).\",\"required\":false,\"secret\":false},{\"name\":\"FASTMCP_LOG_LEVEL\",\"description\":\"Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG.\",\"required\":false,\"secret\":false},{\"name\":\"FASTMCP_ENABLE_RICH_LOGGING\",\"description\":\"Set false for plain or structured JSON log output.\",\"format\":\"boolean\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_GITHUB_TOKEN\",\"description\":\"GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_READ_ONLY\",\"description\":\"When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them.\",\"format\":\"boolean\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_S2_API_KEY\",\"description\":\"Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_DOCLING_URL\",\"description\":\"Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_VLM_API_URL\",\"description\":\"OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_VLM_API_KEY\",\"description\":\"API key for the VLM endpoint.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_VLM_MODEL\",\"description\":\"Model name to use with the VLM endpoint.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_CACHE_DIR\",\"description\":\"Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/).\",\"format\":\"filepath\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_CONTACT_EMAIL\",\"description\":\"Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_EPO_CONSUMER_KEY\",\"description\":\"EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_EPO_CONSUMER_SECRET\",\"description\":\"EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY\",\"description\":\"Google Books API key. Optional; book tools work unauthenticated at reduced rate limits.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S\",\"description\":\"Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_JOBS_RESULT_TTL_S\",\"description\":\"Seconds a background-job record (working or finished) is retained for polling before it expires from the store.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT\",\"description\":\"Maximum live background jobs per calling subject; further promotions are rejected until older records expire.\",\"format\":\"number\",\"required\":false,\"secret\":false}],\"additional_arguments_declared\":false},{\"registryType\":\"oci\",\"identifier\":\"ghcr.io/pvliesdonk/scholar-mcp:v2.0.0\",\"transport\":\"streamable-http\",\"environment\":[{\"name\":\"SCHOLAR_MCP_BASE_URL\",\"description\":\"Public base URL of the deployed server, for example `https://mcp.example.com`. Required for OIDC. Also the fallback source of the MCP Apps domain when `app_domain` is unset.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_BEARER_TOKEN\",\"description\":\"Single shared bearer token; enables bearer auth unless `bearer_tokens_file` is set, which takes precedence.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_OIDC_CONFIG_URL\",\"description\":\"OIDC discovery document URL, for example `https://auth.example.com/.well-known/openid-configuration`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_OIDC_CLIENT_ID\",\"description\":\"OIDC client identifier registered with the provider.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_OIDC_CLIENT_SECRET\",\"description\":\"OIDC client secret registered with the provider.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_OIDC_AUDIENCE\",\"description\":\"Expected `aud` claim; tokens issued for another audience are rejected.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_OIDC_REQUIRED_SCOPES\",\"description\":\"Scopes a caller must present, space- or comma-separated. Defaults to `openid` in oidc-proxy mode.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES\",\"description\":\"Scopes advertised to MCP clients in protected-resource metadata, space- or comma-separated. Overrides the default `openid offline_access`; `oidc_required_scopes` is always added on top. Set this when the registered client is not permitted `offline_access`, or to have clients request extra claim scopes (such as `groups`) without also requiring them in every token.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY\",\"description\":\"Signing key for issued tokens; used in oidc-proxy mode only. When unset, the key is derived deterministically from `oidc_client_secret`, so tokens survive a restart. Rotating that secret then invalidates every issued token. Set this explicitly to decouple token validity from secret rotation. Generate with `openssl rand -hex 32`.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN\",\"description\":\"Validate the access token instead of the id token.\",\"format\":\"boolean\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_KV_STORE_URL\",\"description\":\"Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_APP_DOMAIN\",\"description\":\"MCP Apps iframe domain, used for CSP sandboxing. Overrides the host derived from `base_url`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_TOOLS_ALLOW\",\"description\":\"Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_TOOLS_DENY\",\"description\":\"Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_AUTH_MODE\",\"description\":\"Explicit auth-mode override, accepting `remote` or `oidc-proxy` (case- and whitespace-insensitive). When unset the mode is auto-detected from which auth variables are set; the override exists because having all four OIDC variables set is ambiguous between those two modes. Other values are ignored with a warning.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_BEARER_TOKENS_FILE\",\"description\":\"Path to a TOML file mapping bearer tokens to subjects; overrides the single-token `bearer_token` mode.\",\"format\":\"filepath\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT\",\"description\":\"Subject assigned to the single-token bearer mode; ignored when `bearer_tokens_file` is set, since mapped mode carries per-token subjects.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_SERVER_NAME\",\"description\":\"Rename this server instance; defaults to the project name.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTANCE_DESCRIPTION\",\"description\":\"Concise routing context that distinguishes this deployment's material or responsibility.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTRUCTIONS_EXTRA\",\"description\":\"Deployment-specific behavioral policy added to the generated MCP instructions.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_INSTRUCTIONS\",\"description\":\"Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy).\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_HTTP_PATH\",\"description\":\"Mount path for the MCP endpoint; the health routes derive their prefix from it.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_HEALTH_DETAIL\",\"description\":\"How much the unauthenticated /health and /health/ready bodies say: status, standard (adds name, version and per-check verdicts), or full (adds redacted reasons; trusted networks only).\",\"required\":false,\"secret\":false},{\"name\":\"PUID\",\"description\":\"Run the server process as this UID; the container entrypoint reassigns ownership of writable paths to match.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"PGID\",\"description\":\"Run the server process as this GID; pair with PUID to match the owner of a mounted volume.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"FASTMCP_LOG_LEVEL\",\"description\":\"Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG.\",\"required\":false,\"secret\":false},{\"name\":\"FASTMCP_ENABLE_RICH_LOGGING\",\"description\":\"Set false for plain or structured JSON log output.\",\"format\":\"boolean\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_GITHUB_TOKEN\",\"description\":\"GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_READ_ONLY\",\"description\":\"When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them.\",\"format\":\"boolean\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_S2_API_KEY\",\"description\":\"Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_DOCLING_URL\",\"description\":\"Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_VLM_API_URL\",\"description\":\"OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_VLM_API_KEY\",\"description\":\"API key for the VLM endpoint.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_VLM_MODEL\",\"description\":\"Model name to use with the VLM endpoint.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_CACHE_DIR\",\"description\":\"Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/).\",\"format\":\"filepath\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_CONTACT_EMAIL\",\"description\":\"Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_EPO_CONSUMER_KEY\",\"description\":\"EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register.\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_EPO_CONSUMER_SECRET\",\"description\":\"EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY\",\"description\":\"Google Books API key. Optional; book tools work unauthenticated at reduced rate limits.\",\"required\":false,\"secret\":true},{\"name\":\"SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S\",\"description\":\"Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_JOBS_RESULT_TTL_S\",\"description\":\"Seconds a background-job record (working or finished) is retained for polling before it expires from the store.\",\"format\":\"number\",\"required\":false,\"secret\":false},{\"name\":\"SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT\",\"description\":\"Maximum live background jobs per calling subject; further promotions are rejected until older records expire.\",\"format\":\"number\",\"required\":false,\"secret\":false}],\"additional_arguments_declared\":true}],\"remotes\":[]}"
---

# Scholar MCP

## Gemessene Werte

| Merkmal | Wert | Quelle | Erhoben am | Vertrauensgrad | Rohangabe |
| --- | --- | --- | --- | --- | --- |
| Pflicht-Geheimnisse deklariert | false | MCP-Register | 2026-08-06T13:57:41.838Z | abgeleitet | roh_geheime_pflichtvariablen: ; roh_geheime_pflichtkopfzeilen: |
| Ausführungsort | lokal | MCP-Register | 2026-08-06T13:57:41.838Z | abgeleitet | roh_transportarten: stdio, streamable-http |
| Pfadargument vorhanden | true | MCP-Register | 2026-08-23T01:17:01.632Z | abgeleitet | roh_pfadargumente: ; roh_pfad_umgebungsvariablen: SCHOLAR_MCP_BEARER_TOKENS_FILE, SCHOLAR_MCP_CACHE_DIR |
| Repository-Adresse geführt | true | MCP-Register | 2026-08-06T13:57:41.838Z | abgeleitet | roh_repository_url: https://github.com/pvliesdonk/scholar-mcp |
| Einsatzgebiet, aus der Anbieterbeschreibung abgeleitet | dokument | MCP-Register | 2026-08-26T16:45:01.514Z | abgeleitet | roh_beschreibung: FastMCP server for scholarly papers, patents, books and standards with docling PDF conversion |
| Beschreibung (Rohangabe) | FastMCP server for scholarly papers, patents, books and standards with docling PDF conversion | MCP-Register | 2026-08-26T16:45:01.514Z | selbstauskunft |  |
| Deklarierte Version | 2.0.0 | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Umgebungsvariablen (Rohangabe) | SCHOLAR_MCP_KV_STORE_URL, SCHOLAR_MCP_TOOLS_ALLOW, SCHOLAR_MCP_TOOLS_DENY, SCHOLAR_MCP_SERVER_NAME, SCHOLAR_MCP_INSTANCE_DESCRIPTION, SCHOLAR_MCP_INSTRUCTIONS_EXTRA, SCHOLAR_MCP_INSTRUCTIONS, FASTMCP_LOG_LEVEL, FASTMCP_ENABLE_RICH_LOGGING, SCHOLAR_GITHUB_TOKEN, SCHOLAR_MCP_READ_ONLY, SCHOLAR_MCP_S2_API_KEY, SCHOLAR_MCP_DOCLING_URL, SCHOLAR_MCP_VLM_API_URL, SCHOLAR_MCP_VLM_API_KEY, SCHOLAR_MCP_VLM_MODEL, SCHOLAR_MCP_CACHE_DIR, SCHOLAR_MCP_CONTACT_EMAIL, SCHOLAR_MCP_EPO_CONSUMER_KEY, SCHOLAR_MCP_EPO_CONSUMER_SECRET, SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY, SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S, SCHOLAR_MCP_JOBS_RESULT_TTL_S, SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT, SCHOLAR_MCP_BASE_URL, SCHOLAR_MCP_BEARER_TOKEN, SCHOLAR_MCP_OIDC_CONFIG_URL, SCHOLAR_MCP_OIDC_CLIENT_ID, SCHOLAR_MCP_OIDC_CLIENT_SECRET, SCHOLAR_MCP_OIDC_AUDIENCE, SCHOLAR_MCP_OIDC_REQUIRED_SCOPES, SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES, SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY, SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN, SCHOLAR_MCP_KV_STORE_URL, SCHOLAR_MCP_APP_DOMAIN, SCHOLAR_MCP_TOOLS_ALLOW, SCHOLAR_MCP_TOOLS_DENY, SCHOLAR_MCP_AUTH_MODE, SCHOLAR_MCP_BEARER_TOKENS_FILE, SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT, SCHOLAR_MCP_SERVER_NAME, SCHOLAR_MCP_INSTANCE_DESCRIPTION, SCHOLAR_MCP_INSTRUCTIONS_EXTRA, SCHOLAR_MCP_INSTRUCTIONS, SCHOLAR_MCP_HTTP_PATH, SCHOLAR_MCP_HEALTH_DETAIL, PUID, PGID, FASTMCP_LOG_LEVEL, FASTMCP_ENABLE_RICH_LOGGING, SCHOLAR_GITHUB_TOKEN, SCHOLAR_MCP_READ_ONLY, SCHOLAR_MCP_S2_API_KEY, SCHOLAR_MCP_DOCLING_URL, SCHOLAR_MCP_VLM_API_URL, SCHOLAR_MCP_VLM_API_KEY, SCHOLAR_MCP_VLM_MODEL, SCHOLAR_MCP_CACHE_DIR, SCHOLAR_MCP_CONTACT_EMAIL, SCHOLAR_MCP_EPO_CONSUMER_KEY, SCHOLAR_MCP_EPO_CONSUMER_SECRET, SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY, SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S, SCHOLAR_MCP_JOBS_RESULT_TTL_S, SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Geheime Pflichtvariablen (Rohangabe) |  | MCP-Register | 2026-08-06T13:57:41.838Z | selbstauskunft |  |
| Transportarten (Rohangabe) | stdio, streamable-http | MCP-Register | 2026-08-06T13:57:41.838Z | selbstauskunft |  |
| Pfadargumente (Rohangabe) |  | MCP-Register | 2026-08-06T13:57:41.838Z | selbstauskunft |  |
| Repository (Rohangabe) | https://github.com/pvliesdonk/scholar-mcp | MCP-Register | 2026-08-06T13:57:41.838Z | selbstauskunft |  |
| Paketquellen (Rohangabe) | oci, pypi | MCP-Register | 2026-08-06T13:57:41.838Z | selbstauskunft |  |
| Geheime Pflichtkopfzeilen (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Pfad-Umgebungsvariablen (Rohangabe) | SCHOLAR_MCP_BEARER_TOKENS_FILE, SCHOLAR_MCP_CACHE_DIR | MCP-Register | 2026-08-23T01:17:01.632Z | selbstauskunft |  |
| Remote-Adressen (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Remote-Hosts (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Statusmeldung des Registers (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Im Register eingetragen am (Rohangabe) | 2026-09-11 | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Im Register geändert am (Rohangabe) | 2026-09-11 | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Schemafassung des Rohsatzes (Rohangabe) | https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Bereitstellungsform (Rohangabe) | paket | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Repository-Plattform (Rohangabe) | github | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Repository-Unterordner (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Paketbezeichner (Rohangabe) | ghcr.io/pvliesdonk/scholar-mcp:v2.0.0, pvliesdonk-scholar-mcp | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Paketversionen (Rohangabe) | 2.0.0 | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Laufzeithinweise (Rohangabe) | uvx | MCP-Register | 2026-08-23T01:17:01.632Z | selbstauskunft |  |
| Formate der Umgebungsvariablen (Rohangabe) | boolean, filepath, number | MCP-Register | 2026-08-23T01:17:01.632Z | selbstauskunft |  |
| Beschreibungen der Umgebungsvariablen (Rohangabe) | FASTMCP_ENABLE_RICH_LOGGING=Set false for plain or structured JSON log output. · FASTMCP_LOG_LEVEL=Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG. · PGID=Run the server process as this GID; pair with PUID to match the owner of a mounted volume. · PUID=Run the server process as this UID; the container entrypoint reassigns ownership of writable paths to match. · SCHOLAR_GITHUB_TOKEN=GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits. · SCHOLAR_MCP_APP_DOMAIN=MCP Apps iframe domain, used for CSP sandboxing. Overrides the host derived from `base_url`. · SCHOLAR_MCP_AUTH_MODE=Explicit auth-mode override, accepting `remote` or `oidc-proxy` (case- and whitespace-insensitive). When unset the mode is auto-detected from which auth variables are set; the override exists because having all four OIDC variables set is ambiguous between those two modes. Other values are ignored with a warning. · SCHOLAR_MCP_BASE_URL=Public base URL of the deployed server, for example `https://mcp.example.com`. Required for OIDC. Also the fallback source of the MCP Apps domain when `app_domain` is unset. · SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT=Subject assigned to the single-token bearer mode; ignored when `bearer_tokens_file` is set, since mapped mode carries per-token subjects. · SCHOLAR_MCP_BEARER_TOKEN=Single shared bearer token; enables bearer auth unless `bearer_tokens_file` is set, which takes precedence. · SCHOLAR_MCP_BEARER_TOKENS_FILE=Path to a TOML file mapping bearer tokens to subjects; overrides the single-token `bearer_token` mode. · SCHOLAR_MCP_CACHE_DIR=Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/). · SCHOLAR_MCP_CONTACT_EMAIL=Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source. · SCHOLAR_MCP_DOCLING_URL=Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error. · SCHOLAR_MCP_EPO_CONSUMER_KEY=EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register. · SCHOLAR_MCP_EPO_CONSUMER_SECRET=EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset. · SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY=Google Books API key. Optional; book tools work unauthenticated at reduced rate limits. · SCHOLAR_MCP_HEALTH_DETAIL=How much the unauthenticated /health and /health/ready bodies say: status, standard (adds name, version and per-check verdicts), or full (adds redacted reasons; trusted networks only). · SCHOLAR_MCP_HTTP_PATH=Mount path for the MCP endpoint; the health routes derive their prefix from it. · SCHOLAR_MCP_INSTANCE_DESCRIPTION=Concise routing context that distinguishes this deployment's material or responsibility. · SCHOLAR_MCP_INSTRUCTIONS=Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy). · SCHOLAR_MCP_INSTRUCTIONS_EXTRA=Deployment-specific behavioral policy added to the generated MCP instructions. · SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT=Maximum live background jobs per calling subject; further promotions are rejected until older records expire. · SCHOLAR_MCP_JOBS_RESULT_TTL_S=Seconds a background-job record (working or finished) is retained for polling before it expires from the store. · SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S=Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead. · SCHOLAR_MCP_KV_STORE_URL=Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable. · SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES=Scopes advertised to MCP clients in protected-resource metadata, space- or comma-separated. Overrides the default `openid offline_access`; `oidc_required_scopes` is always added on top. Set this when the registered client is not permitted `offline_access`, or to have clients request extra claim scopes (such as `groups`) without also requiring them in every token. · SCHOLAR_MCP_OIDC_AUDIENCE=Expected `aud` claim; tokens issued for another audience are rejected. · SCHOLAR_MCP_OIDC_CLIENT_ID=OIDC client identifier registered with the provider. · SCHOLAR_MCP_OIDC_CLIENT_SECRET=OIDC client secret registered with the provider. · SCHOLAR_MCP_OIDC_CONFIG_URL=OIDC discovery document URL, for example `https://auth.example.com/.well-known/openid-configuration`. · SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY=Signing key for issued tokens; used in oidc-proxy mode only. When unset, the key is derived deterministically from `oidc_client_secret`, so tokens survive a restart. Rotating that secret then invalidates every issued token. Set this explicitly to decouple token validity from secret rotation. Generate with `openssl rand -hex 32`. · SCHOLAR_MCP_OIDC_REQUIRED_SCOPES=Scopes a caller must present, space- or comma-separated. Defaults to `openid` in oidc-proxy mode. · SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN=Validate the access token instead of the id token. · SCHOLAR_MCP_READ_ONLY=When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them. · SCHOLAR_MCP_S2_API_KEY=Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form. · SCHOLAR_MCP_SERVER_NAME=Rename this server instance; defaults to the project name. · SCHOLAR_MCP_TOOLS_ALLOW=Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`. · SCHOLAR_MCP_TOOLS_DENY=Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`. · SCHOLAR_MCP_VLM_API_KEY=API key for the VLM endpoint. · SCHOLAR_MCP_VLM_API_URL=OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion. · SCHOLAR_MCP_VLM_MODEL=Model name to use with the VLM endpoint. | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |
| Symbolformate (Rohangabe) |  | MCP-Register | 2026-08-16T01:17:01.420Z | selbstauskunft |  |
| Verbindungswege (Quellstruktur) | {"packages":[{"registryType":"pypi","identifier":"pvliesdonk-scholar-mcp","version":"2.0.0","runtimeHint":"uvx","transport":"stdio","environment":[{"name":"SCHOLAR_MCP_KV_STORE_URL","description":"Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable.","required":false,"secret":false},{"name":"SCHOLAR_MCP_TOOLS_ALLOW","description":"Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_TOOLS_DENY","description":"Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_SERVER_NAME","description":"Rename this server instance; defaults to the project name.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTANCE_DESCRIPTION","description":"Concise routing context that distinguishes this deployment's material or responsibility.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTRUCTIONS_EXTRA","description":"Deployment-specific behavioral policy added to the generated MCP instructions.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTRUCTIONS","description":"Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy).","required":false,"secret":false},{"name":"FASTMCP_LOG_LEVEL","description":"Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG.","required":false,"secret":false},{"name":"FASTMCP_ENABLE_RICH_LOGGING","description":"Set false for plain or structured JSON log output.","format":"boolean","required":false,"secret":false},{"name":"SCHOLAR_GITHUB_TOKEN","description":"GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits.","required":false,"secret":true},{"name":"SCHOLAR_MCP_READ_ONLY","description":"When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them.","format":"boolean","required":false,"secret":false},{"name":"SCHOLAR_MCP_S2_API_KEY","description":"Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form.","required":false,"secret":true},{"name":"SCHOLAR_MCP_DOCLING_URL","description":"Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error.","required":false,"secret":false},{"name":"SCHOLAR_MCP_VLM_API_URL","description":"OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion.","required":false,"secret":false},{"name":"SCHOLAR_MCP_VLM_API_KEY","description":"API key for the VLM endpoint.","required":false,"secret":true},{"name":"SCHOLAR_MCP_VLM_MODEL","description":"Model name to use with the VLM endpoint.","required":false,"secret":false},{"name":"SCHOLAR_MCP_CACHE_DIR","description":"Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/).","format":"filepath","required":false,"secret":false},{"name":"SCHOLAR_MCP_CONTACT_EMAIL","description":"Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source.","required":false,"secret":false},{"name":"SCHOLAR_MCP_EPO_CONSUMER_KEY","description":"EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register.","required":false,"secret":false},{"name":"SCHOLAR_MCP_EPO_CONSUMER_SECRET","description":"EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset.","required":false,"secret":true},{"name":"SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY","description":"Google Books API key. Optional; book tools work unauthenticated at reduced rate limits.","required":false,"secret":true},{"name":"SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S","description":"Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead.","format":"number","required":false,"secret":false},{"name":"SCHOLAR_MCP_JOBS_RESULT_TTL_S","description":"Seconds a background-job record (working or finished) is retained for polling before it expires from the store.","format":"number","required":false,"secret":false},{"name":"SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT","description":"Maximum live background jobs per calling subject; further promotions are rejected until older records expire.","format":"number","required":false,"secret":false}],"additional_arguments_declared":false},{"registryType":"oci","identifier":"ghcr.io/pvliesdonk/scholar-mcp:v2.0.0","transport":"streamable-http","environment":[{"name":"SCHOLAR_MCP_BASE_URL","description":"Public base URL of the deployed server, for example `https://mcp.example.com`. Required for OIDC. Also the fallback source of the MCP Apps domain when `app_domain` is unset.","required":false,"secret":false},{"name":"SCHOLAR_MCP_BEARER_TOKEN","description":"Single shared bearer token; enables bearer auth unless `bearer_tokens_file` is set, which takes precedence.","required":false,"secret":true},{"name":"SCHOLAR_MCP_OIDC_CONFIG_URL","description":"OIDC discovery document URL, for example `https://auth.example.com/.well-known/openid-configuration`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_OIDC_CLIENT_ID","description":"OIDC client identifier registered with the provider.","required":false,"secret":false},{"name":"SCHOLAR_MCP_OIDC_CLIENT_SECRET","description":"OIDC client secret registered with the provider.","required":false,"secret":true},{"name":"SCHOLAR_MCP_OIDC_AUDIENCE","description":"Expected `aud` claim; tokens issued for another audience are rejected.","required":false,"secret":false},{"name":"SCHOLAR_MCP_OIDC_REQUIRED_SCOPES","description":"Scopes a caller must present, space- or comma-separated. Defaults to `openid` in oidc-proxy mode.","required":false,"secret":false},{"name":"SCHOLAR_MCP_OIDC_ADVERTISED_SCOPES","description":"Scopes advertised to MCP clients in protected-resource metadata, space- or comma-separated. Overrides the default `openid offline_access`; `oidc_required_scopes` is always added on top. Set this when the registered client is not permitted `offline_access`, or to have clients request extra claim scopes (such as `groups`) without also requiring them in every token.","required":false,"secret":false},{"name":"SCHOLAR_MCP_OIDC_JWT_SIGNING_KEY","description":"Signing key for issued tokens; used in oidc-proxy mode only. When unset, the key is derived deterministically from `oidc_client_secret`, so tokens survive a restart. Rotating that secret then invalidates every issued token. Set this explicitly to decouple token validity from secret rotation. Generate with `openssl rand -hex 32`.","required":false,"secret":true},{"name":"SCHOLAR_MCP_OIDC_VERIFY_ACCESS_TOKEN","description":"Validate the access token instead of the id token.","format":"boolean","required":false,"secret":false},{"name":"SCHOLAR_MCP_KV_STORE_URL","description":"Persistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable.","required":false,"secret":false},{"name":"SCHOLAR_MCP_APP_DOMAIN","description":"MCP Apps iframe domain, used for CSP sandboxing. Overrides the host derived from `base_url`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_TOOLS_ALLOW","description":"Comma-separated explicit tool names this instance exposes; every other tool is hidden from listings and cannot be invoked. Names matching no registered tool are inert. Mutually exclusive with `tools_deny`. Takes effect through `apply_tool_visibility`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_TOOLS_DENY","description":"Comma-separated explicit tool names hidden from this instance (absent from listings, cannot be invoked). Names matching no registered tool are inert. Mutually exclusive with `tools_allow`. Takes effect through `apply_tool_visibility`.","required":false,"secret":false},{"name":"SCHOLAR_MCP_AUTH_MODE","description":"Explicit auth-mode override, accepting `remote` or `oidc-proxy` (case- and whitespace-insensitive). When unset the mode is auto-detected from which auth variables are set; the override exists because having all four OIDC variables set is ambiguous between those two modes. Other values are ignored with a warning.","required":false,"secret":false},{"name":"SCHOLAR_MCP_BEARER_TOKENS_FILE","description":"Path to a TOML file mapping bearer tokens to subjects; overrides the single-token `bearer_token` mode.","format":"filepath","required":false,"secret":false},{"name":"SCHOLAR_MCP_BEARER_DEFAULT_SUBJECT","description":"Subject assigned to the single-token bearer mode; ignored when `bearer_tokens_file` is set, since mapped mode carries per-token subjects.","required":false,"secret":false},{"name":"SCHOLAR_MCP_SERVER_NAME","description":"Rename this server instance; defaults to the project name.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTANCE_DESCRIPTION","description":"Concise routing context that distinguishes this deployment's material or responsibility.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTRUCTIONS_EXTRA","description":"Deployment-specific behavioral policy added to the generated MCP instructions.","required":false,"secret":false},{"name":"SCHOLAR_MCP_INSTRUCTIONS","description":"Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy).","required":false,"secret":false},{"name":"SCHOLAR_MCP_HTTP_PATH","description":"Mount path for the MCP endpoint; the health routes derive their prefix from it.","required":false,"secret":false},{"name":"SCHOLAR_MCP_HEALTH_DETAIL","description":"How much the unauthenticated /health and /health/ready bodies say: status, standard (adds name, version and per-check verdicts), or full (adds redacted reasons; trusted networks only).","required":false,"secret":false},{"name":"PUID","description":"Run the server process as this UID; the container entrypoint reassigns ownership of writable paths to match.","format":"number","required":false,"secret":false},{"name":"PGID","description":"Run the server process as this GID; pair with PUID to match the owner of a mounted volume.","format":"number","required":false,"secret":false},{"name":"FASTMCP_LOG_LEVEL","description":"Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG.","required":false,"secret":false},{"name":"FASTMCP_ENABLE_RICH_LOGGING","description":"Set false for plain or structured JSON log output.","format":"boolean","required":false,"secret":false},{"name":"SCHOLAR_GITHUB_TOKEN","description":"GitHub token used to raise rate limits when fetching standards documents from GitHub. Optional; unauthenticated requests work at reduced limits.","required":false,"secret":true},{"name":"SCHOLAR_MCP_READ_ONLY","description":"When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them.","format":"boolean","required":false,"secret":false},{"name":"SCHOLAR_MCP_S2_API_KEY","description":"Semantic Scholar API key. Optional but strongly recommended: unauthenticated requests are limited to ~1 req/s. Request one at https://www.semanticscholar.org/product/api#api-key-form.","required":false,"secret":true},{"name":"SCHOLAR_MCP_DOCLING_URL","description":"Base URL of a running docling-serve instance for PDF conversion (e.g. http://localhost:5001). When unset, PDF conversion tools return an error.","required":false,"secret":false},{"name":"SCHOLAR_MCP_VLM_API_URL","description":"OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion.","required":false,"secret":false},{"name":"SCHOLAR_MCP_VLM_API_KEY","description":"API key for the VLM endpoint.","required":false,"secret":true},{"name":"SCHOLAR_MCP_VLM_MODEL","description":"Model name to use with the VLM endpoint.","required":false,"secret":false},{"name":"SCHOLAR_MCP_CACHE_DIR","description":"Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/).","format":"filepath","required":false,"secret":false},{"name":"SCHOLAR_MCP_CONTACT_EMAIL","description":"Contact email for the OpenAlex polite pool (improves rate limits). Also enables Unpaywall lookups as a PDF fallback source.","required":false,"secret":false},{"name":"SCHOLAR_MCP_EPO_CONSUMER_KEY","description":"EPO Open Patent Services consumer key. Optional; patent tools are hidden when unset. Register at https://developers.epo.org/user/register.","required":false,"secret":false},{"name":"SCHOLAR_MCP_EPO_CONSUMER_SECRET","description":"EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset.","required":false,"secret":true},{"name":"SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY","description":"Google Books API key. Optional; book tools work unauthenticated at reduced rate limits.","required":false,"secret":true},{"name":"SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S","description":"Seconds a long-running tool call may run in the foreground before it is promoted to a background job and a job handle is returned instead.","format":"number","required":false,"secret":false},{"name":"SCHOLAR_MCP_JOBS_RESULT_TTL_S","description":"Seconds a background-job record (working or finished) is retained for polling before it expires from the store.","format":"number","required":false,"secret":false},{"name":"SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT","description":"Maximum live background jobs per calling subject; further promotions are rejected until older records expire.","format":"number","required":false,"secret":false}],"additional_arguments_declared":true}],"remotes":[]} | MCP-Register | 2026-09-12T01:17:01.224Z | selbstauskunft |  |

## Verweise

- Namensraum: [[namensraum/io-github-pvliesdonk|io.github.pvliesdonk]]

---

- Registerseite: <https://tracevero.de/mcp/io-github-pvliesdonk-scholar-mcp>
- Abgerufen am: 2026-10-10
