adamamer20 avatar

Adamamer20 Paper Search Mcp Openai

adamamer20/paper-search-mcp-openai

Connects to arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, Semantic Scholar, and IACR ePrint Archive for academic paper searches and PDF downloads. Exposes platform-specific tools like search_arxiv and download_arxiv, plus standardized search and fetch tools that work with OpenAI Deep Research and ChatGPT connectors. Returns papers in a consistent dictionary format via a Paper class. You'd reach for this when building research workflows that need to pull papers from multiple sources without writing custom scrapers for each one. Optional Semantic Scholar API key unlocks enhanced features. Built in Python with async httpx calls and designed to extend with new platforms.

GitHub stars
13
tools
25
auth
Secret needed
transport
HTTP
last updated
Sep 18, 2025

Tools

25 tools

Public tool metadata for what this MCP can expose to an agent.

searchDeep Research compatible search tool aggregating across sources.2 params

Deep Research compatible search tool aggregating across sources.

Parameters* required
max_resultsinteger
default: 15
querystring
fetchFetch full document content for a search result.2 params

Fetch full document content for a search result.

Parameters* required
document_idvalue
idvalue
search_arxivSearch academic papers from arXiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.2 params

Search academic papers from arXiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

Parameters* required
max_resultsinteger
default: 10
querystring
search_pubmedSearch academic papers from PubMed. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.2 params

Search academic papers from PubMed. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

Parameters* required
max_resultsinteger
default: 10
querystring
search_biorxivSearch academic papers from bioRxiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.2 params

Search academic papers from bioRxiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

Parameters* required
max_resultsinteger
default: 10
querystring
search_medrxivSearch academic papers from medRxiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.2 params

Search academic papers from medRxiv. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

Parameters* required
max_resultsinteger
default: 10
querystring
search_google_scholarSearch academic papers from Google Scholar. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.2 params

Search academic papers from Google Scholar. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

Parameters* required
max_resultsinteger
default: 10
querystring
search_iacrSearch academic papers from IACR ePrint Archive. Args: query: Search query string (e.g., 'cryptography', 'secret sharing'). max_results: Maximum number of papers to return (default: 10). fetch_details: Whether to fetch detailed information for each paper (default: True). Retur...3 params

Search academic papers from IACR ePrint Archive. Args: query: Search query string (e.g., 'cryptography', 'secret sharing'). max_results: Maximum number of papers to return (default: 10). fetch_details: Whether to fetch detailed information for each paper (default: True). Retur...

Parameters* required
fetch_detailsboolean
default: true
max_resultsinteger
default: 10
querystring
download_arxivDownload PDF of an arXiv paper. Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.2 params

Download PDF of an arXiv paper. Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
download_pubmedAttempt to download PDF of a PubMed paper. Args: paper_id: PubMed ID (PMID). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported.2 params

Attempt to download PDF of a PubMed paper. Args: paper_id: PubMed ID (PMID). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
download_biorxivDownload PDF of a bioRxiv paper. Args: paper_id: bioRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.2 params

Download PDF of a bioRxiv paper. Args: paper_id: bioRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
download_medrxivDownload PDF of a medRxiv paper. Args: paper_id: medRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.2 params

Download PDF of a medRxiv paper. Args: paper_id: medRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
download_iacrDownload PDF of an IACR ePrint paper. Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.2 params

Download PDF of an IACR ePrint paper. Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_arxiv_paperRead and extract text content from an arXiv paper PDF. Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.2 params

Read and extract text content from an arXiv paper PDF. Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_pubmed_paperRead and extract text content from a PubMed paper. Args: paper_id: PubMed ID (PMID). save_path: Directory where the PDF would be saved (unused). Returns: str: Message indicating that direct paper reading is not supported.2 params

Read and extract text content from a PubMed paper. Args: paper_id: PubMed ID (PMID). save_path: Directory where the PDF would be saved (unused). Returns: str: Message indicating that direct paper reading is not supported.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_biorxiv_paperRead and extract text content from a bioRxiv paper PDF. Args: paper_id: bioRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.2 params

Read and extract text content from a bioRxiv paper PDF. Args: paper_id: bioRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_medrxiv_paperRead and extract text content from a medRxiv paper PDF. Args: paper_id: medRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.2 params

Read and extract text content from a medRxiv paper PDF. Args: paper_id: medRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_iacr_paperRead and extract text content from an IACR ePrint paper PDF. Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.2 params

Read and extract text content from an IACR ePrint paper PDF. Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
search_semanticSearch academic papers from Semantic Scholar. Args: query: Search query string (e.g., 'machine learning'). year: Optional year filter (e.g., '2019', '2016-2020', '2010-', '-2015'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata i...3 params

Search academic papers from Semantic Scholar. Args: query: Search query string (e.g., 'machine learning'). year: Optional year filter (e.g., '2019', '2016-2020', '2010-', '-2015'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata i...

Parameters* required
max_resultsinteger
default: 10
querystring
yearvalue
download_semanticDownload PDF of a Semantic Scholar paper. Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI:<doi> (e.g., "DOI:10.18653/v1/N18-3011") - ARXIV:<id> (e.g., "A...2 params

Download PDF of a Semantic Scholar paper. Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI:<doi> (e.g., "DOI:10.18653/v1/N18-3011") - ARXIV:<id> (e.g., "A...

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_semantic_paperRead and extract text content from a Semantic Scholar paper. Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI:<doi> (e.g., "DOI:10.18653/v1/N18-3011") - A...2 params

Read and extract text content from a Semantic Scholar paper. Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI:<doi> (e.g., "DOI:10.18653/v1/N18-3011") - A...

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
search_crossrefSearch academic papers from CrossRef database. CrossRef is a scholarly infrastructure organization that provides persistent identifiers (DOIs) for scholarly content and metadata. It's one of the largest citation databases covering millions of academic papers, journals, books,...3 params

Search academic papers from CrossRef database. CrossRef is a scholarly infrastructure organization that provides persistent identifiers (DOIs) for scholarly content and metadata. It's one of the largest citation databases covering millions of academic papers, journals, books,...

Parameters* required
kwargsstring
max_resultsinteger
default: 10
querystring
get_crossref_paper_by_doiGet a specific paper from CrossRef by its DOI. Args: doi: Digital Object Identifier (e.g., '10.1038/nature12373'). Returns: Paper metadata in dictionary format, or empty dict if not found. Example: get_crossref_paper_by_doi("10.1038/nature12373")1 params

Get a specific paper from CrossRef by its DOI. Args: doi: Digital Object Identifier (e.g., '10.1038/nature12373'). Returns: Paper metadata in dictionary format, or empty dict if not found. Example: get_crossref_paper_by_doi("10.1038/nature12373")

Parameters* required
doistring
download_crossrefAttempt to download PDF of a CrossRef paper. Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported. Note: CrossRef is a citation data...2 params

Attempt to download PDF of a CrossRef paper. Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported. Note: CrossRef is a citation data...

Parameters* required
paper_idstring
save_pathstring
default: ./downloads
read_crossref_paperAttempt to read and extract text content from a CrossRef paper. Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Message indicating that direct paper reading is not supported...2 params

Attempt to read and extract text content from a CrossRef paper. Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Message indicating that direct paper reading is not supported...

Parameters* required
paper_idstring
save_pathstring
default: ./downloads

Sponsors

Readme

Paper Search MCP

A Model Context Protocol (MCP) server for searching and downloading academic papers from multiple sources, including arXiv, PubMed, bioRxiv, and Sci-Hub (optional). Designed for seamless integration with large language models like Claude Desktop.

PyPI License Python smithery badge


Table of Contents


Overview


View the full README on GitHub

Details

Repository
github.com/adamamer20/paper-search-mcp-openai
Categories
AI & LLM Tools, Search & Web Crawling
Transport
HTTP
Auth
Required
Registry
MCP registry, active

Related AI & LLM Tools MCP servers

View all
1bolnet avatarMemwrightbolnet/agent-memoryEmbedded memory for AI agents with SQLite, pgvector, and Neo4j graph search.0stars
2houtini-ai avatarGoogle Knowledge Graphhoutini-ai/google-knowledge-graph-mcpSearch Google's Knowledge Graph for structured information about real-world entities13stars
3neptun2000 avatarHeor Agentneptun2000/heor-agent-mcpHEOR MCP server: literature search, CEA, BIA, NMA/MAIC, HTA dossiers (NICE/FDA/EMA/JCA).11stars
4jongko54 avatarwebEmbeddingjongko54/webembeddingClone any web page from a URL into a verified offline HTML copy, embed, or rebuild.10stars
5keshrath avatarAgent Commkeshrath/agent-commAgent intercommunication - messaging, channels, shared state, and real-time events10stars
6sagargupta16 avataritr-agentsagargupta16/itr-agentLocal-first Indian income tax filing agent: ITR form, tax computation, 26AS/AIS reconciliation10stars