Paper Mcp

io.github.MCPServings由 GitHub 账号 MCPServings 发布v0.5.0更新于 Nov 2, 2026

Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.

已验证Streamable HTTP可网页运行网页搜索与抓取知识与记忆AI 与机器学习

概览

AI 生成的概览

远程 MCP 服务器,可跨 arXiv、Semantic Scholar 和 OpenAlex 检索学术论文,并提供医学文献检索、全文阅读与 LaTeX/PDF 工具。

可以做什么
  • 在 arXiv、Semantic Scholar 和 OpenAlex 中检索论文,或三源合并去重后统一排序
  • 按研究类型检索 PubMed 与 Europe PMC 的循证医学文献
  • 获取论文详情、作者、引用、参考文献、推荐论文与全文片段
  • 以 markdown、HTML 或原始 LaTeX 源码读取 arXiv 全文
  • 把公式或表格图片转成 LaTeX,并检查 LaTeX 片段
  • 将 PDF 提取为 Markdown/LaTeX 文本,并浏览 Semantic Scholar 数据集版本
适用场景
适合需要查找、阅读或引用学术文献、查看引用关系与作者指标的助手,也适合把论文插图和 PDF 转成可用的 LaTeX 文本。需要按研究类型筛选临床证据时同样适用。
运行要求
通过 streamable HTTP 连接 latex-tools.online 的远程端点,未声明需要账号或密钥。可选提供 Semantic Scholar API 密钥以提高速率上限并获取数据集下载链接。自行部署需要 Python 及所列环境变量。
安装前请注意
以 URL 提供的图片和 PDF 会由服务器端下载,base64 上传内容会发送到运营方的 OCR 与 PDF 服务,请勿提交机密文档。数据集下载链接相关工具需要 API 密钥。请求按 IP 限流。写入操作仅限于服务器端任务创建与缓存。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Paper Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.MCPServings%2Fpaper-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "paper": {
      "type": "http",
      "url": "https://latex-tools.online/mcp"
    }
  }
}

README

paper-mcp

Remotely-callable MCP server for academic paper search, full-text retrieval & image→LaTeX, served at https://latex-tools.online/mcp.

Three corpora behind one normalized interface:

  • arxiv (default) — search, metadata, and full-text (HTML / markdown / LaTeX source)
  • semanticscholar (alias s2) — the full S2 API surface: citation graph, authors, recommendations, full-text snippets, bulk datasets
  • openalex (alias oa) — 316M all-field works: citation graph, authors with h-index, institutions, topics, influence metrics

Plus a unified search_all that fuses all three corpora, image→LaTeX OCR, and LaTeX lint + PDF→text tooling.


Tools (41)

Generic / source-agnostic (8)

ToolPurpose
search_all(query, max_results=10, sources='arxiv,semanticscholar,openalex')Unified search. Fans out to all three corpora concurrently, de-duplicates the same work (by DOI/title) and re-ranks with Reciprocal Rank Fusion. Each hit carries sources (who found it) + an ids map for follow-up calls. Prefer this for broad lookups.
search_papers(query, source='arxiv', max_results=10, sort_by='relevance')Single-corpus search. arXiv query accepts plain text or field syntax (ti: au: cat:cs.CL abs: + AND/OR).
get_paper(paper_id, source='arxiv')One paper's full record. S2 id accepts S2 id / DOI: / ARXIV: / CorpusId:.
search_by_author(author, source='arxiv')Papers by author, newest first.
list_recent(category, source='arxiv')Latest in a category (arXiv code or S2 field of study).
list_categories(source='arxiv')Common category codes.
read_paper(paper_id, format='markdown')FULL text (arXiv). markdown = body with formulas as $LaTeX$; html = raw LaTeXML page; latex = original manuscript .tex source.
list_paper_sources()Available corpora.

read_paper fetch chain: arxiv.org/html/{id} → ar5iv fallback (markdown/html), or arxiv.org/e-print/{id} tarball main .tex (latex). Formulas are recovered from the LaTeXML alttext invariant.

Medical / evidence-graded (1)

ToolPurpose
search_medical(query, study_types='rct,meta-analysis,systematic-review', year_from=0, max_results=10, fetch_fulltext=True)Clinical literature search. Queries PubMed, filters by research type via Publication-Type tags and re-ranks by the evidence pyramid (meta-analysis / systematic review > RCT > cohort > ...), so real trials surface above high-cited reviews/guidelines that pure-citation ranking floats up. Open-access full text is attached from Europe PMC by PMID. If the type filter yields nothing it auto-relaxes (flagged filter_relaxed). query is English keyword/boolean text — do NL/multilingual query understanding upstream. Backed by NCBI E-utilities + Europe PMC (both free, no key required).

Image → LaTeX (3)

Turn a formula or table image back into LaTeX (e.g. a figure cropped from a paper) without needing your own vision model. Backed by the co-located recognize service (PaddleOCR-VL / DeepSeek-OCR / texify).

ToolPurpose
recognize_formula(image_url=... or image_base64=..., model='deepseek-ocr')Formula image → LaTeX. image_url is downloaded server-side (with SSRF guards). Returns {latex, model, elapsed_ms}.
recognize_table(image_url=... or image_base64=..., model='deepseek-ocr')Table image → LaTeX tabular.
list_ocr_models()Available OCR models (deepseek-ocr, paddleocr-vl, texify).

LaTeX tooling (3)

Companions to the LaTeX/PDF web tools at latex-tools.online — same backends, exposed over MCP.

ToolPurpose
lint_latex(code)Check a LaTeX snippet for errors and return an auto-fixed version. Returns {errors, fixed_code, summary_en, summary_zh, elapsed_ms}.
extract_pdf(pdf_url=... or pdf_base64=..., formula=True, table=True)PDF → clean Markdown/LaTeX text via MinerU (useful for papers with no open-access full text). pdf_url is downloaded server-side (SSRF-guarded). Content-addressed + cached: a recently-seen or small PDF returns content in one call; a fresh PDF (MinerU is GPU-heavy, minutes) returns status='running' + a task_id.
extract_pdf_result(task_id)Fetch an extract_pdf job by task_id. Returns content once status='done'; while 'running', content is null — call again shortly.

OpenAlex (8)

  • Works: get_openalex_work · get_openalex_citations · get_openalex_references · search_openalex_works (filters: year range, open-access, min-citations, institution)
  • Authors/Institutions: search_openalex_authors · search_openalex_institutions
  • Analytics: get_openalex_trends · list_openalex_topics

Semantic Scholar (18)

  • Graph: get_paper_citations · get_paper_references · get_paper_authors
  • Lookup: match_paper_title · autocomplete_papers
  • Bulk: search_papers_bulk (≤1000, sortable, token paging) · get_papers_batch
  • Authors: search_authors · get_author · get_author_papers · get_authors_batch
  • Full-text: search_snippets (search inside paper body)
  • Recommend: recommend_papers_for_paper · recommend_papers_from_examples
  • Datasets: list_dataset_releases · get_dataset_release · get_dataset_download_links · get_dataset_diffs

Layout

paper_mcp/  server.py            FastMCP server (tool registrations + instructions)  models.py            normalized Paper model  aggregate.py         cross-source fusion (dedup + Reciprocal Rank Fusion)  sources/    base.py            source registry (get_source / list_sources)    arxiv.py           arXiv Atom API + read_paper (HTML/markdown/latex)    semanticscholar.py Semantic Scholar full API surface    openalex.py        OpenAlex REST API (works/authors/institutions/topics)    recognize.py       image→LaTeX client over the co-located recognize service    latextools.py      lint + PDF-extract clients over the latex-tools.online servicespyproject.toml

Run locally

bash
cd paper-mcppython -m venv .venv && . .venv/bin/activatepip install -e .PAPER_MCP_PORT=9400 python -m paper_mcp.server# MCP endpoint at http://127.0.0.1:9400/mcp (JSON-RPC; a plain GET returns 406)

Env

VarDefaultNotes
PAPER_MCP_HOST127.0.0.1
PAPER_MCP_PORT9400
PAPER_MCP_PATH/mcp
SEMANTIC_SCHOLAR_API_KEY—optional; raises S2 rate limit.
MCP_MAX_PER_HOUR300Direct-client JSON-RPC POST budget per IP.
MCP_WORKER_MAX_PER_HOUR300Trusted reverse-proxy Worker budget per HMAC-derived connection key. Raw keys are not retained.
MCP_WORKER_SHARED_MAX_PER_HOUR2400Shared ceiling across all trusted Worker connections.
MCP_RATE_COOLDOWN_SEC300Minimum fast-rejection cooldown after a bucket reaches its limit.

Notes

  • arXiv calls are politely rate-limited + retried (_USER_AGENT, backoff).
  • read_paper covers ~80%+ of papers via official HTML; older scan-only papers may have no full text.
  • Moved here from the docs repo on 2026-06-07; that copy is gone.

License

MIT © MCPServings. See LICENSE.

来源:README.md,提交 c6c8290

工具

41

search_papers

Search academic papers. Returns normalized hits with a short abstract preview; call get_paper for the full record.

输入参数query必填startsourcesort_bymax_results

search_all

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.

输入参数query必填sourcesper_sourcemax_results

search_medical

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.

输入参数query必填year_frommax_resultsstudy_typesfetch_fulltext

get_paper

Fetch one paper by id, with full abstract and PDF link.

输入参数sourcepaper_id必填

search_by_author

Find papers by a specific author, newest first.

输入参数startauthor必填sourcemax_results

list_recent

List the latest papers in a subject category, newest first.

输入参数startsourcecategory必填max_results

list_categories

List common subject category codes for filtering/recent.

输入参数source

read_paper

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.

输入参数formatsourcepaper_id必填

list_paper_sources

List available paper corpora.

无需输入参数。

recognize_formula

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}.

输入参数modelimage_urlimage_base64

recognize_table

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}.

输入参数modelimage_urlimage_base64

list_ocr_models

List the OCR models available for recognize_formula / recognize_table.

无需输入参数。

lint_latex

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}.

输入参数code必填

extract_pdf

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.

输入参数tableformulapdf_urlpdf_base64

extract_pdf_result

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.

输入参数task_id必填

get_paper_citations

Semantic Scholar: papers that CITE this one (forward citation graph). id accepts S2 id / DOI: / ARXIV: / CorpusId:.

输入参数startpaper_id必填max_results

get_paper_references

Semantic Scholar: papers this one REFERENCES (its bibliography). id accepts S2 id / DOI: / ARXIV: / CorpusId:.

输入参数startpaper_id必填max_results

get_paper_authors

Semantic Scholar: the authors of a paper (with h-index, paper/citation counts).

输入参数startpaper_id必填max_results

match_paper_title

Semantic Scholar: find the single paper whose title best matches the given text (exact-match lookup).

输入参数title必填

autocomplete_papers

Semantic Scholar: autocomplete paper titles for a partial query (fast type-ahead).

输入参数query必填

search_papers_bulk

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.

输入参数sortyearquery必填tokenvenuemax_resultsfields_of_studyopen_access_pdfpublication_types

get_papers_batch

Semantic Scholar: fetch many papers at once by id (S2/DOI:/ARXIV:/CorpusId:), up to ~500 per call.

输入参数ids必填

search_authors

Semantic Scholar: search for authors by name; returns profiles with h-index and paper/citation counts.

输入参数query必填startmax_results

get_author

Semantic Scholar: a single author's profile by id.

输入参数author_id必填

get_author_papers

Semantic Scholar: all papers by a given author id, newest first.

输入参数startauthor_id必填max_results

get_authors_batch

Semantic Scholar: fetch many authors at once by id.

输入参数ids必填

search_snippets

Semantic Scholar: search INSIDE paper full text and return matching text snippets (not just titles/abstracts).

输入参数query必填max_results

recommend_papers_for_paper

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.

输入参数poolpaper_id必填max_results

recommend_papers_from_examples

Semantic Scholar: recommend papers from positive (and optional negative) example paper ids.

输入参数max_resultsnegative_idspositive_ids必填

list_dataset_releases

Semantic Scholar Datasets: list all available release ids (dated snapshots of the full corpus).

无需输入参数。

get_dataset_release

Semantic Scholar Datasets: which datasets a release contains (papers, abstracts, citations, embeddings, s2orc, tldrs…). release_id defaults to 'latest'.

输入参数release_id

get_dataset_diffs

Semantic Scholar Datasets: incremental diff (added/updated/deleted) for a dataset between two releases. Needs the key.

输入参数end_releasedataset_name必填start_release必填

get_openalex_work

OpenAlex: fetch one work's full record (316M-work, all-field corpus). id accepts OpenAlex Wxxxx, a DOI, or an arXiv id.

输入参数work_id必填

get_openalex_citations

OpenAlex: papers that CITE this work (forward citation graph), most-cited first.

输入参数startwork_id必填max_results

get_openalex_references

OpenAlex: the works this one REFERENCES (its bibliography).

输入参数work_id必填max_results

search_openalex_authors

OpenAlex: search authors; returns profiles with h-index, i10-index, works/citation counts and institutions.

输入参数query必填startmax_results

search_openalex_institutions

OpenAlex: search institutions (universities, labs) with ROR id, country, works/citation counts.

输入参数query必填max_results

search_openalex_works

OpenAlex: advanced filtered work search. Filters: from_year, to_year, is_oa (open access only), min_citations, institution_id. sort_by: relevance|newest|cited.

输入参数is_oaquerysort_byto_yearfrom_yearmax_resultsmin_citationsinstitution_id

list_openalex_topics

OpenAlex: search the topic taxonomy (~4500 topics) to find the right subject term for filtering or recent-work queries.

输入参数query必填max_results

版本历史

1
  1. v0.5.0最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分