Koskamo

Scholar MCP

A FastMCP server providing 29 tools for searching and retrieving scholarly papers, patents, books, and standards. It supports full-text search, citation analysis, PDF-to-markdown conversion via docling, and enrichment with metadata from OpenAlex and Open Library.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

Scholar MCP logo, by pvliesdonkCommunity listingLocal stdioSource reviewed; not executedPublished by pvliesdonk
Vendor documentation

What you can do with it

  • Search scholarly papers by DOI, arXiv ID, or author
  • Retrieve patent bibliographic and claims data via EPO OPS
  • Convert PDF documents to Markdown using docling
  • Enrich citations with OpenAlex venue and Open Library data

Source and maintenance

Community listingRegistry 2.0.0
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

pvliesdonk-scholar-mcp 2.0.0

pypiuvx
pvliesdonk-scholar-mcp package definition
{
  "version": "2.0.0",
  "transport": "stdio",
  "identifier": "pvliesdonk-scholar-mcp",
  "runtimeHint": "uvx",
  "registryType": "pypi",
  "environmentVariables": [
    {
      "name": "SCHOLAR_MCP_KV_STORE_URL",
      "default": "file:///data/state",
      "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."
    },
    {
      "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`."
    },
    {
      "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`."
    },
    {
      "name": "SCHOLAR_MCP_SERVER_NAME",
      "description": "Rename this server instance; defaults to the project name."
    },
    {
      "name": "SCHOLAR_MCP_INSTANCE_DESCRIPTION",
      "description": "Concise routing context that distinguishes this deployment's material or responsibility."
    },
    {
      "name": "SCHOLAR_MCP_INSTRUCTIONS_EXTRA",
      "description": "Deployment-specific behavioral policy added to the generated MCP instructions."
    },
    {
      "name": "SCHOLAR_MCP_INSTRUCTIONS",
      "description": "Legacy: replaces all generated MCP instructions (deprecated; use _INSTANCE_DESCRIPTION for routing and _INSTRUCTIONS_EXTRA for policy)."
    },
    {
      "name": "FASTMCP_LOG_LEVEL",
      "choices": [
        "DEBUG",
        "INFO",
        "WARNING",
        "ERROR",
        "CRITICAL"
      ],
      "default": "INFO",
      "description": "Log level for FastMCP internals and app loggers (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG."
    },
    {
      "name": "FASTMCP_ENABLE_RICH_LOGGING",
      "format": "boolean",
      "default": "true",
      "description": "Set false for plain or structured JSON log output."
    },
    {
      "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."
    },
    {
      "name": "SCHOLAR_MCP_READ_ONLY",
      "format": "boolean",
      "default": "true",
      "description": "When true, write-tagged tools (PDF download and conversion cache writes) are hidden. Set false to enable them."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "name": "SCHOLAR_MCP_VLM_API_URL",
      "description": "OpenAI-compatible VLM endpoint for formula and figure enrichment during PDF conversion."
    },
    {
      "name": "SCHOLAR_MCP_VLM_API_KEY",
      "description": "API key for the VLM endpoint."
    },
    {
      "name": "SCHOLAR_MCP_VLM_MODEL",
      "default": "gpt-4o",
      "description": "Model name to use with the VLM endpoint."
    },
    {
      "name": "SCHOLAR_MCP_CACHE_DIR",
      "format": "filepath",
      "default": "/data/scholar-mcp",
      "description": "Directory for the SQLite cache database (cache.db) and downloaded PDFs (pdfs/, md/)."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "name": "SCHOLAR_MCP_EPO_CONSUMER_SECRET",
      "description": "EPO Open Patent Services consumer secret. Optional; patent tools are hidden when unset."
    },
    {
      "name": "SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY",
      "description": "Google Books API key. Optional; book tools work unauthenticated at reduced rate limits."
    },
    {
      "name": "SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S",
      "format": "number",
      "default": "25.0",
      "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."
    },
    {
      "name": "SCHOLAR_MCP_JOBS_RESULT_TTL_S",
      "format": "number",
      "default": "3600.0",
      "description": "Seconds a background-job record (working or finished) is retained for polling before it expires from the store."
    },
    {
      "name": "SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT",
      "format": "number",
      "default": "256",
      "description": "Maximum live background jobs per calling subject; further promotions are rejected until older records expire."
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "scholar-mcp": {
      "command": "uvx",
      "args": [
        "pvliesdonk-scholar-mcp==2.0.0"
      ],
      "env": {
        "SCHOLAR_MCP_KV_STORE_URL": "<YOUR_SCHOLAR_MCP_KV_STORE_URL>",
        "SCHOLAR_MCP_TOOLS_ALLOW": "<YOUR_SCHOLAR_MCP_TOOLS_ALLOW>",
        "SCHOLAR_MCP_TOOLS_DENY": "<YOUR_SCHOLAR_MCP_TOOLS_DENY>",
        "SCHOLAR_MCP_SERVER_NAME": "<YOUR_SCHOLAR_MCP_SERVER_NAME>",
        "SCHOLAR_MCP_INSTANCE_DESCRIPTION": "<YOUR_SCHOLAR_MCP_INSTANCE_DESCRIPTION>",
        "SCHOLAR_MCP_INSTRUCTIONS_EXTRA": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS_EXTRA>",
        "SCHOLAR_MCP_INSTRUCTIONS": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS>",
        "FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
        "FASTMCP_ENABLE_RICH_LOGGING": "<YOUR_FASTMCP_ENABLE_RICH_LOGGING>",
        "SCHOLAR_GITHUB_TOKEN": "<YOUR_SCHOLAR_GITHUB_TOKEN>",
        "SCHOLAR_MCP_READ_ONLY": "<YOUR_SCHOLAR_MCP_READ_ONLY>",
        "SCHOLAR_MCP_S2_API_KEY": "<YOUR_SCHOLAR_MCP_S2_API_KEY>",
        "SCHOLAR_MCP_DOCLING_URL": "<YOUR_SCHOLAR_MCP_DOCLING_URL>",
        "SCHOLAR_MCP_VLM_API_URL": "<YOUR_SCHOLAR_MCP_VLM_API_URL>",
        "SCHOLAR_MCP_VLM_API_KEY": "<YOUR_SCHOLAR_MCP_VLM_API_KEY>",
        "SCHOLAR_MCP_VLM_MODEL": "<YOUR_SCHOLAR_MCP_VLM_MODEL>",
        "SCHOLAR_MCP_CACHE_DIR": "<YOUR_SCHOLAR_MCP_CACHE_DIR>",
        "SCHOLAR_MCP_CONTACT_EMAIL": "<YOUR_SCHOLAR_MCP_CONTACT_EMAIL>",
        "SCHOLAR_MCP_EPO_CONSUMER_KEY": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_KEY>",
        "SCHOLAR_MCP_EPO_CONSUMER_SECRET": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_SECRET>",
        "SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY": "<YOUR_SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY>",
        "SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S": "<YOUR_SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S>",
        "SCHOLAR_MCP_JOBS_RESULT_TTL_S": "<YOUR_SCHOLAR_MCP_JOBS_RESULT_TTL_S>",
        "SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT": "<YOUR_SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "scholar-mcp": {
      "command": "uvx",
      "args": [
        "pvliesdonk-scholar-mcp==2.0.0"
      ],
      "env": {
        "SCHOLAR_MCP_KV_STORE_URL": "<YOUR_SCHOLAR_MCP_KV_STORE_URL>",
        "SCHOLAR_MCP_TOOLS_ALLOW": "<YOUR_SCHOLAR_MCP_TOOLS_ALLOW>",
        "SCHOLAR_MCP_TOOLS_DENY": "<YOUR_SCHOLAR_MCP_TOOLS_DENY>",
        "SCHOLAR_MCP_SERVER_NAME": "<YOUR_SCHOLAR_MCP_SERVER_NAME>",
        "SCHOLAR_MCP_INSTANCE_DESCRIPTION": "<YOUR_SCHOLAR_MCP_INSTANCE_DESCRIPTION>",
        "SCHOLAR_MCP_INSTRUCTIONS_EXTRA": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS_EXTRA>",
        "SCHOLAR_MCP_INSTRUCTIONS": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS>",
        "FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
        "FASTMCP_ENABLE_RICH_LOGGING": "<YOUR_FASTMCP_ENABLE_RICH_LOGGING>",
        "SCHOLAR_GITHUB_TOKEN": "<YOUR_SCHOLAR_GITHUB_TOKEN>",
        "SCHOLAR_MCP_READ_ONLY": "<YOUR_SCHOLAR_MCP_READ_ONLY>",
        "SCHOLAR_MCP_S2_API_KEY": "<YOUR_SCHOLAR_MCP_S2_API_KEY>",
        "SCHOLAR_MCP_DOCLING_URL": "<YOUR_SCHOLAR_MCP_DOCLING_URL>",
        "SCHOLAR_MCP_VLM_API_URL": "<YOUR_SCHOLAR_MCP_VLM_API_URL>",
        "SCHOLAR_MCP_VLM_API_KEY": "<YOUR_SCHOLAR_MCP_VLM_API_KEY>",
        "SCHOLAR_MCP_VLM_MODEL": "<YOUR_SCHOLAR_MCP_VLM_MODEL>",
        "SCHOLAR_MCP_CACHE_DIR": "<YOUR_SCHOLAR_MCP_CACHE_DIR>",
        "SCHOLAR_MCP_CONTACT_EMAIL": "<YOUR_SCHOLAR_MCP_CONTACT_EMAIL>",
        "SCHOLAR_MCP_EPO_CONSUMER_KEY": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_KEY>",
        "SCHOLAR_MCP_EPO_CONSUMER_SECRET": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_SECRET>",
        "SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY": "<YOUR_SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY>",
        "SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S": "<YOUR_SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S>",
        "SCHOLAR_MCP_JOBS_RESULT_TTL_S": "<YOUR_SCHOLAR_MCP_JOBS_RESULT_TTL_S>",
        "SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT": "<YOUR_SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "scholar-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "pvliesdonk-scholar-mcp==2.0.0"
      ],
      "env": {
        "SCHOLAR_MCP_KV_STORE_URL": "<YOUR_SCHOLAR_MCP_KV_STORE_URL>",
        "SCHOLAR_MCP_TOOLS_ALLOW": "<YOUR_SCHOLAR_MCP_TOOLS_ALLOW>",
        "SCHOLAR_MCP_TOOLS_DENY": "<YOUR_SCHOLAR_MCP_TOOLS_DENY>",
        "SCHOLAR_MCP_SERVER_NAME": "<YOUR_SCHOLAR_MCP_SERVER_NAME>",
        "SCHOLAR_MCP_INSTANCE_DESCRIPTION": "<YOUR_SCHOLAR_MCP_INSTANCE_DESCRIPTION>",
        "SCHOLAR_MCP_INSTRUCTIONS_EXTRA": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS_EXTRA>",
        "SCHOLAR_MCP_INSTRUCTIONS": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS>",
        "FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
        "FASTMCP_ENABLE_RICH_LOGGING": "<YOUR_FASTMCP_ENABLE_RICH_LOGGING>",
        "SCHOLAR_GITHUB_TOKEN": "<YOUR_SCHOLAR_GITHUB_TOKEN>",
        "SCHOLAR_MCP_READ_ONLY": "<YOUR_SCHOLAR_MCP_READ_ONLY>",
        "SCHOLAR_MCP_S2_API_KEY": "<YOUR_SCHOLAR_MCP_S2_API_KEY>",
        "SCHOLAR_MCP_DOCLING_URL": "<YOUR_SCHOLAR_MCP_DOCLING_URL>",
        "SCHOLAR_MCP_VLM_API_URL": "<YOUR_SCHOLAR_MCP_VLM_API_URL>",
        "SCHOLAR_MCP_VLM_API_KEY": "<YOUR_SCHOLAR_MCP_VLM_API_KEY>",
        "SCHOLAR_MCP_VLM_MODEL": "<YOUR_SCHOLAR_MCP_VLM_MODEL>",
        "SCHOLAR_MCP_CACHE_DIR": "<YOUR_SCHOLAR_MCP_CACHE_DIR>",
        "SCHOLAR_MCP_CONTACT_EMAIL": "<YOUR_SCHOLAR_MCP_CONTACT_EMAIL>",
        "SCHOLAR_MCP_EPO_CONSUMER_KEY": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_KEY>",
        "SCHOLAR_MCP_EPO_CONSUMER_SECRET": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_SECRET>",
        "SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY": "<YOUR_SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY>",
        "SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S": "<YOUR_SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S>",
        "SCHOLAR_MCP_JOBS_RESULT_TTL_S": "<YOUR_SCHOLAR_MCP_JOBS_RESULT_TTL_S>",
        "SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT": "<YOUR_SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "scholar-mcp": {
      "command": "uvx",
      "args": [
        "pvliesdonk-scholar-mcp==2.0.0"
      ],
      "env": {
        "SCHOLAR_MCP_KV_STORE_URL": "<YOUR_SCHOLAR_MCP_KV_STORE_URL>",
        "SCHOLAR_MCP_TOOLS_ALLOW": "<YOUR_SCHOLAR_MCP_TOOLS_ALLOW>",
        "SCHOLAR_MCP_TOOLS_DENY": "<YOUR_SCHOLAR_MCP_TOOLS_DENY>",
        "SCHOLAR_MCP_SERVER_NAME": "<YOUR_SCHOLAR_MCP_SERVER_NAME>",
        "SCHOLAR_MCP_INSTANCE_DESCRIPTION": "<YOUR_SCHOLAR_MCP_INSTANCE_DESCRIPTION>",
        "SCHOLAR_MCP_INSTRUCTIONS_EXTRA": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS_EXTRA>",
        "SCHOLAR_MCP_INSTRUCTIONS": "<YOUR_SCHOLAR_MCP_INSTRUCTIONS>",
        "FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
        "FASTMCP_ENABLE_RICH_LOGGING": "<YOUR_FASTMCP_ENABLE_RICH_LOGGING>",
        "SCHOLAR_GITHUB_TOKEN": "<YOUR_SCHOLAR_GITHUB_TOKEN>",
        "SCHOLAR_MCP_READ_ONLY": "<YOUR_SCHOLAR_MCP_READ_ONLY>",
        "SCHOLAR_MCP_S2_API_KEY": "<YOUR_SCHOLAR_MCP_S2_API_KEY>",
        "SCHOLAR_MCP_DOCLING_URL": "<YOUR_SCHOLAR_MCP_DOCLING_URL>",
        "SCHOLAR_MCP_VLM_API_URL": "<YOUR_SCHOLAR_MCP_VLM_API_URL>",
        "SCHOLAR_MCP_VLM_API_KEY": "<YOUR_SCHOLAR_MCP_VLM_API_KEY>",
        "SCHOLAR_MCP_VLM_MODEL": "<YOUR_SCHOLAR_MCP_VLM_MODEL>",
        "SCHOLAR_MCP_CACHE_DIR": "<YOUR_SCHOLAR_MCP_CACHE_DIR>",
        "SCHOLAR_MCP_CONTACT_EMAIL": "<YOUR_SCHOLAR_MCP_CONTACT_EMAIL>",
        "SCHOLAR_MCP_EPO_CONSUMER_KEY": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_KEY>",
        "SCHOLAR_MCP_EPO_CONSUMER_SECRET": "<YOUR_SCHOLAR_MCP_EPO_CONSUMER_SECRET>",
        "SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY": "<YOUR_SCHOLAR_MCP_GOOGLE_BOOKS_API_KEY>",
        "SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S": "<YOUR_SCHOLAR_MCP_JOBS_SOFT_DEADLINE_S>",
        "SCHOLAR_MCP_JOBS_RESULT_TTL_S": "<YOUR_SCHOLAR_MCP_JOBS_RESULT_TTL_S>",
        "SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT": "<YOUR_SCHOLAR_MCP_JOBS_MAX_PER_SUBJECT>"
      }
    }
  }
}

Let your agent find its tools

Find servers like Scholar MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.