Research MCP Server

Research MCP Server

A local, rule-based MCP server for searching and analyzing academic papers from arXiv. Enables paper search, ranking, smart summarization, keyword extraction, and citation generation without API keys or LLM calls.

Category
Visit Server

README

Research MCP Server

A local, rule-based research assistant for searching and analyzing academic papers from arXiv. No API keys, no LLM calls — just Python standard libraries, the arxiv package, FastMCP for the MCP server, and keyword-frequency heuristics.

Available as both a CLI tool and a Model Context Protocol (MCP) server for Cursor, Claude Desktop, and other MCP clients.


Features

Module Description
Search Fetch top N papers from arXiv by query
Ranking Score papers by query-word frequency in title + abstract
Smart Summary Pick the 2 most query-relevant sentences (no AI)
Keyword Extraction Top 5 unique keywords (length > 6, stopwords removed)
Citation Generator Author1, Author2 (Year). Title. format
Logging INFO-level logging via Python logging module
Validation Query length and empty-input checks
Empty Results Graceful handling when no papers match

Project Structure

mcp_server_paper/
├── research.py       # Core engine (search, rank, summarize, keywords, citations)
├── main.py           # CLI entry point
├── mcp_server.py     # MCP server (stdio transport)
├── requirements.txt  # Python dependencies
├── tests/
│   ├── test_research.py      # Unit tests (mocked, no network)
│   └── test_integration.py   # CLI + MCP tool integration tests
└── README.md

Requirements

  • Python 3.10+
  • Internet connection (for arXiv fetch only)
  • Dependencies: arxiv, fastmcp, pytest (see requirements.txt)

Installation

git clone <your-repo-url>
cd mcp_server_paper
pip install -r requirements.txt

CLI Usage

Search arXiv and print formatted results:

python main.py --query "AI agents"

Options:

Flag Description Default
--query, -q Search query (required)
--max-results, -n Number of papers to fetch 5

Example:

python main.py --query "transformer attention" --max-results 3

Example Output

🔍 Query: AI agents

📊 Total papers found: 5

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📄 Paper 1: A cybersecurity AI agent selection and decision support framework

🧠 Summary:
This paper presents a novel, structured decision support framework...

🔑 Keywords:
framework, cybersecurity, learning, standards, industry

📚 Citation:
Masike Malatji (2025). A cybersecurity AI agent selection and decision support framework.

🔗 Link:
http://arxiv.org/abs/2510.01751v1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

MCP Server Usage

The MCP server exposes paper search and analysis as tools over stdio transport, compatible with Cursor and Claude Desktop.

Start the server manually

python mcp_server.py

The server reads JSON-RPC from stdin and writes responses to stdout. Do not print debug output to stdout when running in MCP mode — logs go to stderr.

Configure in Cursor

Add to your Cursor MCP settings (Settings → MCP → Add new global MCP server or edit ~/.cursor/mcp.json):

{
  "mcpServers": {
    "research-papers": {
      "command": "python",
      "args": ["C:/mcp_server_paper/mcp_server.py"]
    }
  }
}

Use the absolute path to mcp_server.py on your machine.

Configure in Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "research-papers": {
      "command": "python",
      "args": ["/absolute/path/to/mcp_server_paper/mcp_server.py"]
    }
  }
}

Available MCP Tools

Tool Description
search_papers Full pipeline: search arXiv, rank, summarize, extract keywords, generate citations
summarize_text Extract top 2 query-relevant sentences from arbitrary text
get_keywords Extract top N keywords from text using rule-based filtering
create_citation Generate a bibliographic citation from authors, year, and title

Tool: search_papers

query: str          — Search terms (e.g. "AI agents")
max_results: int    — Papers to fetch (default 5, max 20)

Returns formatted text with all paper details.

Tool: summarize_text

text: str    — Source text (e.g. abstract)
query: str   — Query terms for relevance scoring

Tool: get_keywords

text: str     — Source text
top_n: int    — Number of keywords (default 5)

Tool: create_citation

authors: list[str]  — Author names
year: str           — Publication year
title: str          — Paper title

How It Works

1. Search (search_arxiv)

Queries the arXiv API via the arxiv Python library, fetching title, authors, published year, abstract, and link for each result.

2. Ranking (rank_papers)

Tokenizes the query into words and counts how often each word appears in title + summary. Papers are sorted descending by total score.

3. Smart Summary (smart_summary)

Splits the abstract into sentences, scores each sentence by query-word presence, and returns the top 2.

4. Keyword Extraction (extract_keywords)

  • Removes punctuation
  • Keeps words with length > 6
  • Filters a manually defined stopword set
  • Returns the top 5 by frequency

5. Citation Generator (generate_citation)

Formats: Author1, Author2, and Author3 (2025). Paper Title.


Testing

Install dependencies, then run the full test suite:

pip install -r requirements.txt
pytest tests/ -v

Test coverage

File What it tests
tests/test_research.py Unit tests for ranking, summarization, keywords, citations, validation (mocked arXiv — no network)
tests/test_integration.py CLI subprocess tests (live arXiv) + MCP tool function tests

Run only fast unit tests (no network):

pytest tests/test_research.py -v

Run live integration tests (requires network):

pytest tests/test_integration.py -v

Architecture

flowchart TD
    CLI[main.py CLI] --> RE[research.py]
    MCP[mcp_server.py MCP] --> RE
    RE --> ARXIV[arXiv API]
    RE --> RANK[rank_papers]
    RE --> SUM[smart_summary]
    RE --> KW[extract_keywords]
    RE --> CITE[generate_citation]

Both entry points share the same research.py engine. The CLI prints formatted output to stdout; the MCP server returns the same formatted strings as tool results over stdio JSON-RPC.


Constraints

  • No OpenAI or external AI APIs
  • No transformers or ML models
  • No API keys required
  • Everything runs locally except the arXiv network fetch

License

MIT (or your preferred license)

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured