paper-mcp
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (6)
- HIGH
- LOWin get_paper_citations
- LOWin get_paper_references
- LOWin get_author
- LOWin recommend_papers_from_examples
- INFOin get_openalex_work
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"paper-mcp": {
"url": "https://latex-tools.online/mcp"
}
}
}Remote-Endpunkte
https://latex-tools.online/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (41)
🟢search_papers(query, source, max_results, start, sort_by)
Search academic papers. Returns normalized hits with a short abstract preview; call get_paper for the full record.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
},
"sort_by": {
"default": "relevance",
"title": "Sort By",
"type": "string"
}
},
"required": [
"query"
],
"title": "search_papersArguments"
}🟢search_all(query, max_results, sources, per_source)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"sources": {
"default": "arxiv,semanticscholar,openalex",
"title": "Sources",
"type": "string"
},
"per_source": {
"default": 0,
"title": "Per Source",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_allArguments"
}🟢search_medical(query, study_types, year_from, max_results, fetch_fulltext)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"study_types": {
"default": "rct,meta-analysis,systematic-review",
"title": "Study Types",
"type": "string"
},
"year_from": {
"default": 0,
"title": "Year From",
"type": "integer"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"fetch_fulltext": {
"default": true,
"title": "Fetch Fulltext",
"type": "boolean"
}
},
"required": [
"query"
],
"title": "search_medicalArguments"
}🟢get_paper(paper_id, source)
Fetch one paper by id, with full abstract and PDF link.
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
}
},
"required": [
"paper_id"
],
"title": "get_paperArguments"
}🟢search_by_author(author, source, max_results, start)
Find papers by a specific author, newest first.
Eingabe-Schema
{
"type": "object",
"properties": {
"author": {
"title": "Author",
"type": "string"
},
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"author"
],
"title": "search_by_authorArguments"
}🟢list_recent(category, source, max_results, start)
List the latest papers in a subject category, newest first.
Eingabe-Schema
{
"type": "object",
"properties": {
"category": {
"title": "Category",
"type": "string"
},
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"category"
],
"title": "list_recentArguments"
}🟢list_categories(source)
List common subject category codes for filtering/recent.
Eingabe-Schema
{
"type": "object",
"properties": {
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
}
},
"title": "list_categoriesArguments"
}🟢read_paper(paper_id, format, source)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"format": {
"default": "markdown",
"title": "Format",
"type": "string"
},
"source": {
"default": "arxiv",
"title": "Source",
"type": "string"
}
},
"required": [
"paper_id"
],
"title": "read_paperArguments"
}🟢list_paper_sources
List available paper corpora.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "list_paper_sourcesArguments"
}⚪recognize_formula(image_url, image_base64, model)
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}.
Eingabe-Schema
{
"type": "object",
"properties": {
"image_url": {
"default": "",
"title": "Image Url",
"type": "string"
},
"image_base64": {
"default": "",
"title": "Image Base64",
"type": "string"
},
"model": {
"default": "deepseek-ocr",
"title": "Model",
"type": "string"
}
},
"title": "recognize_formulaArguments"
}⚪recognize_table(image_url, image_base64, model)
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}.
Eingabe-Schema
{
"type": "object",
"properties": {
"image_url": {
"default": "",
"title": "Image Url",
"type": "string"
},
"image_base64": {
"default": "",
"title": "Image Base64",
"type": "string"
},
"model": {
"default": "deepseek-ocr",
"title": "Model",
"type": "string"
}
},
"title": "recognize_tableArguments"
}🟢list_ocr_models
List the OCR models available for recognize_formula / recognize_table.
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "list_ocr_modelsArguments"
}⚪lint_latex(code)
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}.
Eingabe-Schema
{
"type": "object",
"properties": {
"code": {
"title": "Code",
"type": "string"
}
},
"required": [
"code"
],
"title": "lint_latexArguments"
}🟢extract_pdf(pdf_url, pdf_base64, formula, table)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"pdf_url": {
"default": "",
"title": "Pdf Url",
"type": "string"
},
"pdf_base64": {
"default": "",
"title": "Pdf Base64",
"type": "string"
},
"formula": {
"default": true,
"title": "Formula",
"type": "boolean"
},
"table": {
"default": true,
"title": "Table",
"type": "boolean"
}
},
"title": "extract_pdfArguments"
}🟢extract_pdf_result(task_id)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"task_id": {
"title": "Task Id",
"type": "string"
}
},
"required": [
"task_id"
],
"title": "extract_pdf_resultArguments"
}🟢get_paper_citations(paper_id, max_results, start)
Semantic Scholar: papers that CITE this one (forward citation graph). id accepts S2 id / DOI: / ARXIV: / CorpusId:.
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"paper_id"
],
"title": "get_paper_citationsArguments"
}🟢get_paper_references(paper_id, max_results, start)
Semantic Scholar: papers this one REFERENCES (its bibliography). id accepts S2 id / DOI: / ARXIV: / CorpusId:.
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"paper_id"
],
"title": "get_paper_referencesArguments"
}🟢get_paper_authors(paper_id, max_results, start)
Semantic Scholar: the authors of a paper (with h-index, paper/citation counts).
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"max_results": {
"default": 100,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"paper_id"
],
"title": "get_paper_authorsArguments"
}🟢match_paper_title(title)
Semantic Scholar: find the single paper whose title best matches the given text (exact-match lookup).
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"title": "Title",
"type": "string"
}
},
"required": [
"title"
],
"title": "match_paper_titleArguments"
}🟢autocomplete_papers(query)
Semantic Scholar: autocomplete paper titles for a partial query (fast type-ahead).
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "autocomplete_papersArguments"
}🟢search_papers_bulk(query, sort, fields_of_study, year, venue, ...)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"sort": {
"default": "",
"title": "Sort",
"type": "string"
},
"fields_of_study": {
"default": "",
"title": "Fields Of Study",
"type": "string"
},
"year": {
"default": "",
"title": "Year",
"type": "string"
},
"venue": {
"default": "",
"title": "Venue",
"type": "string"
},
"publication_types": {
"default": "",
"title": "Publication Types",
"type": "string"
},
"open_access_pdf": {
"default": false,
"title": "Open Access Pdf",
"type": "boolean"
},
"token": {
"default": "",
"title": "Token",
"type": "string"
},
"max_results": {
"default": 100,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_papers_bulkArguments"
}🟢get_papers_batch(ids)
Semantic Scholar: fetch many papers at once by id (S2/DOI:/ARXIV:/CorpusId:), up to ~500 per call.
Eingabe-Schema
{
"type": "object",
"properties": {
"ids": {
"items": {
"type": "string"
},
"title": "Ids",
"type": "array"
}
},
"required": [
"ids"
],
"title": "get_papers_batchArguments"
}🟢search_authors(query, max_results, start)
Semantic Scholar: search for authors by name; returns profiles with h-index and paper/citation counts.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_authorsArguments"
}🟢get_author(author_id)
Semantic Scholar: a single author's profile by id.
Eingabe-Schema
{
"type": "object",
"properties": {
"author_id": {
"title": "Author Id",
"type": "string"
}
},
"required": [
"author_id"
],
"title": "get_authorArguments"
}🟢get_author_papers(author_id, max_results, start)
Semantic Scholar: all papers by a given author id, newest first.
Eingabe-Schema
{
"type": "object",
"properties": {
"author_id": {
"title": "Author Id",
"type": "string"
},
"max_results": {
"default": 20,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"author_id"
],
"title": "get_author_papersArguments"
}🟢get_authors_batch(ids)
Semantic Scholar: fetch many authors at once by id.
Eingabe-Schema
{
"type": "object",
"properties": {
"ids": {
"items": {
"type": "string"
},
"title": "Ids",
"type": "array"
}
},
"required": [
"ids"
],
"title": "get_authors_batchArguments"
}🟢search_snippets(query, max_results)
Semantic Scholar: search INSIDE paper full text and return matching text snippets (not just titles/abstracts).
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_snippetsArguments"
}⚪recommend_papers_for_paper(paper_id, max_results, pool)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"paper_id": {
"title": "Paper Id",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"pool": {
"default": "recent",
"title": "Pool",
"type": "string"
}
},
"required": [
"paper_id"
],
"title": "recommend_papers_for_paperArguments"
}⚪recommend_papers_from_examples(positive_ids, negative_ids, max_results)
Semantic Scholar: recommend papers from positive (and optional negative) example paper ids.
Eingabe-Schema
{
"type": "object",
"properties": {
"positive_ids": {
"items": {
"type": "string"
},
"title": "Positive Ids",
"type": "array"
},
"negative_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Negative Ids"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"positive_ids"
],
"title": "recommend_papers_from_examplesArguments"
}🟢list_dataset_releases
Semantic Scholar Datasets: list all available release ids (dated snapshots of the full corpus).
Eingabe-Schema
{
"type": "object",
"properties": {},
"title": "list_dataset_releasesArguments"
}🟢get_dataset_release(release_id)
Semantic Scholar Datasets: which datasets a release contains (papers, abstracts, citations, embeddings, s2orc, tldrs…). release_id defaults to 'latest'.
Eingabe-Schema
{
"type": "object",
"properties": {
"release_id": {
"default": "latest",
"title": "Release Id",
"type": "string"
}
},
"title": "get_dataset_releaseArguments"
}🟢get_dataset_download_links(dataset_name, release_id)
Semantic Scholar Datasets: get download links (presigned URLs) for one dataset in a release. Needs the API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"dataset_name": {
"title": "Dataset Name",
"type": "string"
},
"release_id": {
"default": "latest",
"title": "Release Id",
"type": "string"
}
},
"required": [
"dataset_name"
],
"title": "get_dataset_download_linksArguments"
}🟢get_dataset_diffs(dataset_name, start_release, end_release)
Semantic Scholar Datasets: incremental diff (added/updated/deleted) for a dataset between two releases. Needs the key.
Eingabe-Schema
{
"type": "object",
"properties": {
"dataset_name": {
"title": "Dataset Name",
"type": "string"
},
"start_release": {
"title": "Start Release",
"type": "string"
},
"end_release": {
"default": "latest",
"title": "End Release",
"type": "string"
}
},
"required": [
"dataset_name",
"start_release"
],
"title": "get_dataset_diffsArguments"
}🟢get_openalex_work(work_id)
OpenAlex: fetch one work's full record (316M-work, all-field corpus). id accepts OpenAlex Wxxxx, a DOI, or an arXiv id.
Eingabe-Schema
{
"type": "object",
"properties": {
"work_id": {
"title": "Work Id",
"type": "string"
}
},
"required": [
"work_id"
],
"title": "get_openalex_workArguments"
}🟢get_openalex_citations(work_id, max_results, start)
OpenAlex: papers that CITE this work (forward citation graph), most-cited first.
Eingabe-Schema
{
"type": "object",
"properties": {
"work_id": {
"title": "Work Id",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"work_id"
],
"title": "get_openalex_citationsArguments"
}🟢get_openalex_references(work_id, max_results)
OpenAlex: the works this one REFERENCES (its bibliography).
Eingabe-Schema
{
"type": "object",
"properties": {
"work_id": {
"title": "Work Id",
"type": "string"
},
"max_results": {
"default": 25,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"work_id"
],
"title": "get_openalex_referencesArguments"
}🟢search_openalex_authors(query, max_results, start)
OpenAlex: search authors; returns profiles with h-index, i10-index, works/citation counts and institutions.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"start": {
"default": 0,
"title": "Start",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_openalex_authorsArguments"
}🟢search_openalex_institutions(query, max_results)
OpenAlex: search institutions (universities, labs) with ROR id, country, works/citation counts.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_openalex_institutionsArguments"
}🟢search_openalex_works(query, from_year, to_year, is_oa, min_citations, ...)
OpenAlex: advanced filtered work search. Filters: from_year, to_year, is_oa (open access only), min_citations, institution_id. sort_by: relevance|newest|cited.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"default": "",
"title": "Query",
"type": "string"
},
"from_year": {
"default": 0,
"title": "From Year",
"type": "integer"
},
"to_year": {
"default": 0,
"title": "To Year",
"type": "integer"
},
"is_oa": {
"default": false,
"title": "Is Oa",
"type": "boolean"
},
"min_citations": {
"default": 0,
"title": "Min Citations",
"type": "integer"
},
"institution_id": {
"default": "",
"title": "Institution Id",
"type": "string"
},
"sort_by": {
"default": "relevance",
"title": "Sort By",
"type": "string"
},
"max_results": {
"default": 25,
"title": "Max Results",
"type": "integer"
}
},
"title": "search_openalex_worksArguments"
}🟢get_openalex_trends(query, group_by)
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).
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"group_by": {
"default": "publication_year",
"title": "Group By",
"type": "string"
}
},
"required": [
"query"
],
"title": "get_openalex_trendsArguments"
}🟢list_openalex_topics(query, max_results)
OpenAlex: search the topic taxonomy (~4500 topics) to find the right subject term for filtering or recent-work queries.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 15,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "list_openalex_topicsArguments"
}Community
Nachweis