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 分