io. github. MCPServings/ paper-mcp
by MCPServings · remote · no sign-in to list tools · v0.5.0 · published by GitHub user MCPServings
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
41 tools: 16 change things and 25 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things16Claude Code: ask: see these tools
- Only reads25Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http paper https://latex-tools.online/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
41 tools
Changes things 16Claude Code: ask
autocomplete_papersSemantic Scholar: autocomplete paper titles for a partial query (fast type-ahead).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Semantic Scholar: autocomplete paper titles for a partial query (fast type-ahead).
extract_pdfExtract a PDF to clean Markdown/LaTeX text via MinerU (great for papers behind no open-access full text — give the user's PDF and get readable text back).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Extract a PDF to clean Markdown/LaTeX text via MinerU (great for papers behind no open-access full text — give the user's PDF and get readable text back). Provide pdf_url (downloaded server-side, SSRF-guarded) OR pdf_base64. formula/table toggle math/table reconstruction. Returns {task_id, status, cached, content, chars}: a recently-seen (cached) or small PDF comes back with `content` in one call; a fresh PDF (MinerU is GPU-heavy, minutes) returns status='running' + a task_id — then call extract_pdf_result(task_id) to fetch the text.
get_openalex_citationsOpenAlex: papers that CITE this work (forward citation graph), most-cited first.No findings
Why it is in this group
- The name "get_openalex_citations" says "get": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: papers that CITE this work (forward citation graph), most-cited first.
get_openalex_referencesOpenAlex: the works this one REFERENCES (its bibliography).No findings
Why it is in this group
- The name "get_openalex_references" says "get": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: the works this one REFERENCES (its bibliography).
get_openalex_trendsOpenAlex: publication-trend analytics for a query — counts grouped by year (default), or by 'institutions.id', 'authorships.author.id', 'open_access.is_oa', 'type', 'language'.No findings
Why it is in this group
- The name "get_openalex_trends" says "get": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: publication-trend analytics for a query — counts grouped by year (default), or by 'institutions.id', 'authorships.author.id', 'open_access.is_oa', 'type', 'language'. Returns aggregate counts only (cheap, no rows).
get_openalex_workOpenAlex: fetch one work's full record (316M-work, all-field corpus).No findings
Why it is in this group
- The name "get_openalex_work" says "get": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: fetch one work's full record (316M-work, all-field corpus). id accepts OpenAlex Wxxxx, a DOI, or an arXiv id.
lint_latexLint a LaTeX snippet: report errors and return an auto-fixed version.No findings
Why it is in this group
- The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it Lint a LaTeX snippet: report errors and return an auto-fixed version. Input `code` (the LaTeX source). Returns {errors, fixed_code, summary_en, summary_zh, elapsed_ms}.
list_openalex_topicsOpenAlex: search the topic taxonomy (~4500 topics) to find the right subject term for filtering or recent-work queries.No findings
Why it is in this group
- The name "list_openalex_topics" says "list": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: search the topic taxonomy (~4500 topics) to find the right subject term for filtering or recent-work queries.
match_paper_titleSemantic Scholar: find the single paper whose title best matches the given text (exact-match lookup).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Semantic Scholar: find the single paper whose title best matches the given text (exact-match lookup).
recognize_formulaRecognize a math formula from an image and return LaTeX.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Recognize a math formula from an image and return LaTeX. Provide image_url (downloaded server-side) OR image_base64. model: deepseek-ocr (default), paddleocr-vl, or texify. Returns {latex, model, elapsed_ms}.
recognize_tableRecognize a table from an image and return LaTeX tabular code.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Recognize a table from an image and return LaTeX tabular code. Provide image_url OR image_base64. model: deepseek-ocr (default), paddleocr-vl, or texify. Returns {latex, model, elapsed_ms}.
recommend_papers_for_paperSemantic Scholar: recommend papers similar to one paper.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Semantic Scholar: recommend papers similar to one paper. pool='recent' (last open corpus) or 'all-cs' (all of CS). If the 'recent' pool yields nothing (common for older papers), it automatically retries the 'all-cs' pool.
recommend_papers_from_examplesSemantic Scholar: recommend papers from positive (and optional negative) example paper ids.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Semantic Scholar: recommend papers from positive (and optional negative) example paper ids.
search_openalex_authorsOpenAlex: search authors; returns profiles with h-index, i10-index, works/citation counts and institutions.No findings
Why it is in this group
- The name "search_openalex_authors" says "search": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: search authors; returns profiles with h-index, i10-index, works/citation counts and institutions.
search_openalex_institutionsOpenAlex: search institutions (universities, labs) with ROR id, country, works/citation counts.No findings
Why it is in this group
- The name "search_openalex_institutions" says "search": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: search institutions (universities, labs) with ROR id, country, works/citation counts.
search_openalex_worksOpenAlex: advanced filtered work search.No findings
Why it is in this group
- The name "search_openalex_works" says "search": a word for reading.
- The description's first verb is "open": a word for a change.
Description, as the server wrote it OpenAlex: advanced filtered work search. Filters: from_year, to_year, is_oa (open access only), min_citations, institution_id. sort_by: relevance|newest|cited.
Only reads 25Claude Code: allow
extract_pdf_resultFetch the result of an extract_pdf job by task_id.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch the result of an extract_pdf job by task_id. Returns {task_id, status, content, chars}: `content` is the extracted text once status='done'; while still 'running' content is null — call again shortly. Results expire server-side, so fetch reasonably soon.
get_authorSemantic Scholar: a single author's profile by id.No findings
Why it is in this group
- The name "get_author" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: a single author's profile by id.
get_author_papersSemantic Scholar: all papers by a given author id, newest first.No findings
Why it is in this group
- The name "get_author_papers" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: all papers by a given author id, newest first.
get_authors_batchSemantic Scholar: fetch many authors at once by id.No findings
Why it is in this group
- The name "get_authors_batch" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: fetch many authors at once by id.
get_dataset_diffsSemantic Scholar Datasets: incremental diff (added/updated/deleted) for a dataset between two releases.No findings
Why it is in this group
- The name "get_dataset_diffs" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar Datasets: incremental diff (added/updated/deleted) for a dataset between two releases. Needs the key.
get_dataset_download_linksSemantic Scholar Datasets: get download links (presigned URLs) for one dataset in a release.No findings
Why it is in this group
- The name "get_dataset_download_links" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar Datasets: get download links (presigned URLs) for one dataset in a release. Needs the API key.
get_dataset_releaseSemantic Scholar Datasets: which datasets a release contains (papers, abstracts, citations, embeddings, s2orc, tldrs…).No findings
Why it is in this group
- The name "get_dataset_release" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar Datasets: which datasets a release contains (papers, abstracts, citations, embeddings, s2orc, tldrs…). release_id defaults to 'latest'.
get_paperFetch one paper by id, with full abstract and PDF link.No findings
Why it is in this group
- The name "get_paper" says "get": a word for reading.
Description, as the server wrote it Fetch one paper by id, with full abstract and PDF link.
get_paper_authorsSemantic Scholar: the authors of a paper (with h-index, paper/citation counts).No findings
Why it is in this group
- The name "get_paper_authors" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: the authors of a paper (with h-index, paper/citation counts).
get_paper_citationsSemantic Scholar: papers that CITE this one (forward citation graph).No findings
Why it is in this group
- The name "get_paper_citations" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: papers that CITE this one (forward citation graph). id accepts S2 id / DOI: / ARXIV: / CorpusId:.
get_paper_referencesSemantic Scholar: papers this one REFERENCES (its bibliography).No findings
Why it is in this group
- The name "get_paper_references" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: papers this one REFERENCES (its bibliography). id accepts S2 id / DOI: / ARXIV: / CorpusId:.
get_papers_batchSemantic Scholar: fetch many papers at once by id (S2/DOI:/ARXIV:/CorpusId:), up to ~500 per call.No findings
Why it is in this group
- The name "get_papers_batch" says "get": a word for reading.
Description, as the server wrote it Semantic Scholar: fetch many papers at once by id (S2/DOI:/ARXIV:/CorpusId:), up to ~500 per call.
list_categoriesList common subject category codes for filtering/recent.No findings
Why it is in this group
- The name "list_categories" says "list": a word for reading.
Description, as the server wrote it List common subject category codes for filtering/recent.
list_dataset_releasesSemantic Scholar Datasets: list all available release ids (dated snapshots of the full corpus).No findings
Why it is in this group
- The name "list_dataset_releases" says "list": a word for reading.
Description, as the server wrote it Semantic Scholar Datasets: list all available release ids (dated snapshots of the full corpus).
list_ocr_modelsList the OCR models available for recognize_formula / recognize_table.No findings
Why it is in this group
- The name "list_ocr_models" says "list": a word for reading.
Description, as the server wrote it List the OCR models available for recognize_formula / recognize_table.
list_paper_sourcesList available paper corpora.No findings
Why it is in this group
- The name "list_paper_sources" says "list": a word for reading.
Description, as the server wrote it List available paper corpora.
list_recentList the latest papers in a subject category, newest first.No findings
Why it is in this group
- The name "list_recent" says "list": a word for reading.
Description, as the server wrote it List the latest papers in a subject category, newest first.
read_paperRead a paper's full text.No findings
Why it is in this group
- The name "read_paper" says "read": a word for reading.
Description, as the server wrote it Read a paper's full text. format='markdown' (default, body with formulas as $LaTeX$), 'html' (raw LaTeXML HTML), or 'latex' (the original LaTeX manuscript from the e-print source). arXiv only; id like 2401.01234.
search_allAggregated search across arXiv, Semantic Scholar and OpenAlex at once.No findings
Why it is in this group
- The name "search_all" says "search": a word for reading.
Description, as the server wrote it Aggregated search across arXiv, Semantic Scholar and OpenAlex at once. Fans out concurrently, de-duplicates the same work across corpora (by DOI or title) and re-ranks with Reciprocal Rank Fusion, so papers found by several sources rank highest. Each hit lists which `sources` found it and an `ids` map ({source: id}) you can pass to get_paper / read_paper / the citation tools. Prefer this over search_papers for a broad lookup.
search_authorsSemantic Scholar: search for authors by name; returns profiles with h-index and paper/citation counts.No findings
Why it is in this group
- The name "search_authors" says "search": a word for reading.
Description, as the server wrote it Semantic Scholar: search for authors by name; returns profiles with h-index and paper/citation counts.
search_by_authorFind papers by a specific author, newest first.No findings
Why it is in this group
- The name "search_by_author" says "search": a word for reading.
Description, as the server wrote it Find papers by a specific author, newest first.
search_medicalEvidence-graded MEDICAL literature search (PubMed + Europe PMC).No findings
Why it is in this group
- The name "search_medical" says "search": a word for reading.
Description, as the server wrote it Evidence-graded MEDICAL literature search (PubMed + Europe PMC). Unlike search_all (generic, ranks high-cited reviews/guidelines above trials), this filters by research type via PubMed Publication-Type tags and re-ranks by the evidence pyramid (meta-analysis / systematic review > RCT > cohort > ...), so the actual clinical trials surface first. Open-access full text is pulled from Europe PMC by PMID. `query` should be English keyword/boolean text (PubMed maps it); do natural-language/multilingual understanding upstream. Returns hits with pmid/doi/study_type/evidence_level/citations/abstract and, when open-access, fulltext.
search_papersSearch academic papers.No findings
Why it is in this group
- The name "search_papers" says "search": a word for reading.
Description, as the server wrote it Search academic papers. Returns normalized hits with a short abstract preview; call get_paper for the full record.
search_papers_bulkSemantic Scholar: bulk paper search (up to 1000 hits, sortable e.g.No findings
Why it is in this group
- The name "search_papers_bulk" says "search": a word for reading.
Description, as the server wrote it Semantic Scholar: bulk paper search (up to 1000 hits, sortable e.g. 'citationCount:desc' or 'publicationDate:desc', with a continuation token). Filters: fields_of_study, year (e.g. '2020-2024'), venue, publication_types, open_access_pdf.
search_snippetsSemantic Scholar: search INSIDE paper full text and return matching text snippets (not just titles/abstracts).No findings
Why it is in this group
- The name "search_snippets" says "search": a word for reading.
Description, as the server wrote it Semantic Scholar: search INSIDE paper full text and return matching text snippets (not just titles/abstracts).
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.5.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http paper https://latex-tools.online/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__paper__search_papers",
"mcp__paper__search_all",
"mcp__paper__search_medical",
"mcp__paper__get_paper",
"mcp__paper__search_by_author",
"mcp__paper__list_recent",
"mcp__paper__list_categories",
"mcp__paper__read_paper",
"mcp__paper__list_paper_sources",
"mcp__paper__list_ocr_models",
"mcp__paper__extract_pdf_result",
"mcp__paper__get_paper_citations",
"mcp__paper__get_paper_references",
"mcp__paper__get_paper_authors",
"mcp__paper__search_papers_bulk",
"mcp__paper__get_papers_batch",
"mcp__paper__search_authors",
"mcp__paper__get_author",
"mcp__paper__get_author_papers",
"mcp__paper__get_authors_batch",
"mcp__paper__search_snippets",
"mcp__paper__list_dataset_releases",
"mcp__paper__get_dataset_release",
"mcp__paper__get_dataset_download_links",
"mcp__paper__get_dataset_diffs"
],
"ask": [
"mcp__paper__recognize_formula",
"mcp__paper__recognize_table",
"mcp__paper__lint_latex",
"mcp__paper__extract_pdf",
"mcp__paper__match_paper_title",
"mcp__paper__autocomplete_papers",
"mcp__paper__recommend_papers_for_paper",
"mcp__paper__recommend_papers_from_examples",
"mcp__paper__get_openalex_work",
"mcp__paper__get_openalex_citations",
"mcp__paper__get_openalex_references",
"mcp__paper__search_openalex_authors",
"mcp__paper__search_openalex_institutions",
"mcp__paper__search_openalex_works",
"mcp__paper__get_openalex_trends",
"mcp__paper__list_openalex_topics"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as paper. Review it before you use it.
