An MCP server for academic research paper discovery, web search, and content retrieval. Integrates with Semantic Scholar, OpenAlex, and SerpAPI to find research papers, related works, and web content.
ResearchPaperMCP has 5 tools with basic descriptions and partial schemas. All tools have descriptions (10-200 chars), but parameter descriptions are sparse or missing. Input schemas are visible for all tools with type declarations, but lack depth in constraints and validation guidance. No output schemas documented. Error handling is minimal, most failures return raw exception strings rather than actionable recovery guidance. Tool naming follows verb_noun convention (search_web, fetch_web_content, academic_research, get_paper_id, find_related_papers), which is good. However, parameter descriptions are often single-phrase and lack format/constraint details. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Composition is reasonable, tools chain logically (get_paper_id → find_related_papers), but output schemas are not documented, forcing LLMs to infer structure.
Finds research papers, citation counts, and direct PDF links. Tries Semantic Scholar first; automatically falls back to OpenAlex if SS is unavailable.
Extracts Markdown text from a URL. Does NOT work for YouTube links.
Finds similar or recommended papers based on a Paper ID. Accepts a Semantic Scholar paperId, an OpenAlex ID (URL), or a DOI. Use get_paper_id first if you only have a paper title. Tries Semantic Scholar recommendations first; falls back to OpenAlex related works.
Search for a paper by title/keywords and return all available IDs (Semantic Scholar paperId, DOI, OpenAlex ID, ArXiv ID). Use this first when you need a paper ID for find_related_papers.
General search for websites, articles, and YouTube videos. The LLM should provide the query (e.g., 'YouTube explanation of Attention is All You Need').
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to parse unstructured output or make assumptions about downstream tool compatibility.
Error handling returns raw exception strings (e.g., 'Error accessing page: {str(e)}') instead of actionable recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
Parameter descriptions are minimal or missing constraint details. 'query' params lack format guidance; 'limit' params lack min/max bounds. 'required_links' in search_web has a default (10) and max (20) but no minimum stated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are read-only, but this is not explicitly declared in the schema, forcing LLMs to infer safety properties.
API keys exposed in environment variable names in code (SERP_API_KEY, JINA_API_KEY, OPEN_ALEX_API_KEY, SEMANTIC_SCHOLAR_API). While not exposed as tool parameters (good), the pattern suggests potential for accidental leakage in logs or error traces.