YUZongmin_semantic-scholar-fastmcp-mcp-server

YUZongmin_semantic-scholar-fastmcp-mcp-server

3.4

A FastMCP server implementation for the Semantic Scholar API, providing comprehensive access to academic paper data, author information, and citation networks.

The Semantic Scholar MCP Server is a robust implementation designed to facilitate seamless interaction with the Semantic Scholar API. It offers extensive capabilities for accessing and analyzing academic paper data, author profiles, and citation networks. The server supports advanced search functionalities, citation analysis, and author information retrieval, making it an invaluable tool for researchers and developers. With features like full-text search, batch operations, and customizable field selection, users can efficiently manage and explore vast amounts of academic data. The server is built on the FastMCP framework, ensuring high performance and scalability. It supports both authenticated and unauthenticated access, with automatic rate limit adjustments based on the access type. The server also includes advanced features such as connection pooling, resource management, and graceful error handling, ensuring reliable and efficient operation.

Features

  • Paper Search & Discovery: Full-text search with advanced filtering, title-based paper matching, and paper recommendations.
  • Citation Analysis: Explore citation networks, track references, and analyze citation context and influence.
  • Author Information: Search for authors, view profile details, and retrieve publication history.
  • Advanced Features: Complex search with ranking strategies, customizable field selection, and efficient batch operations.
  • System Requirements: Python 3.8+, FastMCP framework, and optional API key for enhanced access.

MCP Tools

  • paper_relevance_search: Search for papers using relevance ranking with comprehensive query parameters.
  • paper_bulk_search: Bulk paper search optimized for larger result sets with sorting options.
  • paper_title_search: Find papers by exact title match with detailed information.
  • paper_details: Get comprehensive details about a specific paper using various ID formats.
  • paper_batch_details: Efficiently retrieve details for multiple papers with support for up to 1000 IDs.
  • paper_citations: Get papers that cite a specific paper with citation context and sorting options.
  • paper_references: Get papers referenced by a specific paper with reference context and sorting options.
  • author_search: Search for authors by name with customizable fields and publication counts.
  • author_details: Get detailed information about an author including metrics like h-index.
  • author_papers: Get papers written by an author with field customization and sorting.
  • author_batch_details: Retrieve information for up to 1000 authors with comprehensive metadata.
  • paper_recommendations_single: Get recommendations based on a single paper with customizable fields.
  • paper_recommendations_multi: Get recommendations based on multiple papers with positive and negative examples.

Usage with Different Platforms

Basic Paper Search

python
results = await paper_relevance_search(
    context,
    query="machine learning",
    year="2020-2024",
    min_citation_count=50,
    fields=["title", "abstract", "authors"]
)

Paper Recommendations

python
# Single paper recommendation
recommendations = await paper_recommendations_single(
    context,
    paper_id="649def34f8be52c8b66281af98ae884c09aef38b",
    fields="title,authors,year"
)

# Multi-paper recommendation
recommendations = await paper_recommendations_multi(
    context,
    positive_paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"],
    negative_paper_ids=["ArXiv:1805.02262"],
    fields="title,abstract,authors"
)

Batch Operations

python
# Get details for multiple papers
papers = await paper_batch_details(
    context,
    paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"],
    fields="title,authors,year,citations"
)

# Get details for multiple authors
authors = await author_batch_details(
    context,
    author_ids=["1741101", "1780531"],
    fields="name,hIndex,citationCount,paperCount"
)