paper-mcp
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (6)
- HIGH
- LOWen get_paper_citations
- LOWen get_paper_references
- LOWen get_author
- LOWen recommend_papers_from_examples
- INFOen get_openalex_work
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"paper-mcp": {
"url": "https://latex-tools.online/mcp"
}
}
}Puntos de conexión remotos
https://latex-tools.online/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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:.
Esquema de entrada
{
"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:.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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'.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 15,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "list_openalex_topicsArguments"
}Comunidad
Evidencia