Skip to main content
Glama
gjjisadog

scipdf-mcp

by gjjisadog

scipdf-mcp

一键安装的 学术论文 PDF 下载 工具:MCP Server + Skill + CLI(v0.3)。

用户找论文 → Crossref/OpenAlex/Semantic Scholar/arXiv 检索
用户要全文 → DOI 或 arXiv ID → 下载 → 返回本地 path + 引用

合规提示:请自行确认当地法规与机构政策。本工具仅供个人科研学习自用。

仓库: https://github.com/gjjisadog/scipdf-mcp


给 AI / 一键安装

请按仓库 AGENTS.md 安装 scipdf-mcp:

git clone https://github.com/gjjisadog/scipdf-mcp.git
cd scipdf-mcp && bash install.sh

重启客户端后用 /scipdf 测试。更新:bash install.sh --update
git clone https://github.com/gjjisadog/scipdf-mcp.git
cd scipdf-mcp
bash install.sh
# 更新
bash install.sh --update

要求:Node.js ≥ 20。安装后会注册 MCP + Skill,并做 CLI 自检。


Related MCP server: paper-fetch-mcp

使用

Agent: /scipdf 下载:Nanometre-scale thermometry in a living cell

CLI:

node dist/index.js search "wide bandgap inverter"
node dist/index.js search --sources openalex,semanticscholar --year-from 2022 --oa "SiC inverter"
node dist/index.js citations 10.1038/nature12373
node dist/index.js related 10.1038/nature12373
node dist/index.js search --source arxiv "grid-forming inverter"
node dist/index.js download arXiv:2501.01234
node dist/index.js download 10.1038/nature12373
node dist/index.js download --title "Nanometre-scale thermometry in a living cell"
node dist/index.js batch 10.a/b 10.c/d
node dist/index.js resolve "some title"
node dist/index.js parse refs.bib
node dist/index.js audit refs.bib
node dist/index.js extract "/absolute/path/to/paper.pdf"
node dist/index.js list
node dist/index.js check-mirrors

无参数启动 = MCP stdio 服务。


下载顺序与数据源

默认路径(无需邮箱):

arXiv ID / URL → arXiv 官方 PDF(直接下载)

DOI:
(可选)出版商授权 PDF API      # Elsevier;Springer Nature/IEEE 需全文 endpoint
(可选)免费 OA 数据源         # SCIPDF_PREFER_OA=true;无需邮箱
  → Unpaywall OA              # 另设 SCIPDF_UNPAYWALL_EMAIL 时加入
  → pdfHosts 直链 PDF         # 如 sci.bban.top
  → scihubMirrors HTML 镜像   # 逐个解析页面中的 PDF 链接

健康缓存会跳过近期失败的镜像(SCIPDF_HEALTH_TTL_MS,默认 15 分钟)。可用 check-mirrors / MCP check_mirrors 探测。

默认 pdfHosts

主机

说明

https://sci.bban.top/pdf/

优先尝试的 DOI 直链主机

默认 Sci-Hub 镜像(DEFAULT_MIRRORS

内置 15 个 HTML 镜像(以 src/config.ts / config.example.json 为准):

镜像

备注

https://sci-hub.ren/

传统域名

https://sci-hub.red/

传统域名

https://sci-hub.ee/

传统域名

https://sci-hub.st/

传统域名(部分网络较慢或拦截)

https://sci-hub.ru/

传统域名

https://sci-hub.box/

传统域名

https://sci-hub.se/

传统域名(部分网络 DNS 失败)

https://sci-hub.sidesgame.com/

已实测可下 PDF

https://sci-hub.vg/

已实测可下 PDF

https://sci-hub.usualwant.com/

已实测可下 PDF

https://sci-hub.hkvisa.net/

已实测;可能跳转 usualwant

https://sci-hub.al/

已实测可下 PDF

https://sci-hub.mksa.top/

已实测;可能跳转 pismin

https://www.pismin.com/

已实测可下 PDF

https://www.sci-hub.in/

已实测可下 PDF

镜像可用性随地区与封锁变化;列表仅作默认回退,不是可用性保证。

自定义镜像

环境变量(逗号 / 分号 / 换行分隔):

export SCIPDF_MIRRORS="https://sci-hub.vg/,https://www.pismin.com/"
export SCIPDF_PDF_HOSTS="https://sci.bban.top/pdf/"
node dist/index.js check-mirrors
node dist/index.js download --force 10.1038/nature12373

或复制 config.example.json → 项目目录 config.json / ~/.config/scipdf-mcp/config.json,编辑 scihubMirrorspdfHosts
配置优先级:SCIPDF_* 环境变量 > 配置文件 > 内置默认。


MCP Tools / Resources / Prompts

Tool

说明

search_papers

Crossref + OpenAlex + Semantic Scholar + arXiv 统一检索

list_search_sources

列出检索源及搜索、引用链、推荐、PDF 等能力

list_pdf_sources

列出 PdfSource、合法性和支持的标识符

get_citations / get_references

通过 Semantic Scholar 前向/后向追踪引用

find_related_papers

查找相似论文

download_paper

单篇 DOI/标题/arXiv ID;arXiv 直接从官方 PDF 下载

download_papers

批量去重 + manifest v2(来源历史、OA 证据、SHA-256)

resolve_doi

Crossref + OpenAlex

parse_references

bib/ris/粘贴列表抽 DOI

extract_paper_text

从下载目录内的 PDF 提取正文并写入相邻 .txt

audit_references

批量核验引用、解析 DOI、输出规范引用与失败项

list_mirrors / check_mirrors

配置与健康缓存探测

list_papers

已下载列表

open_paper

系统默认打开 PDF

format_citation

APA / GB/T / BibTeX

reload_config

热加载配置

  • Resource: papers://list

  • Prompt: download_papers_batch

错误码:DOI_NOT_FOUND / AMBIGUOUS_DOI / INVALID_ARXIV_ID / MIRROR_BLOCKED / ALL_SOURCES_FAILED / PDF_NOT_IN_DB 等。


环境变量(节选)

变量

含义

默认

SCIPDF_DOWNLOAD_DIR

保存目录

~/Documents/Papers

SCIPDF_UNPAYWALL_EMAIL

可选,启用 Unpaywall 时使用的真实邮箱

未设 = 跳过 Unpaywall

SCIPDF_SEMANTIC_SCHOLAR_API_KEY

可选,提高 Semantic Scholar 检索配额

未设置 = 匿名配额

SCIPDF_ELSEVIER_API_KEY

Elsevier Article Retrieval API key(仅从环境读取)

未设置 = 跳过

SCIPDF_ELSEVIER_INSTTOKEN / SCIPDF_ELSEVIER_AUTHTOKEN

可选 Elsevier 机构/用户授权令牌

未设置

SCIPDF_SPRINGER_NATURE_API_KEY

Springer Nature key(仅从环境读取)

未设置 = 跳过

SCIPDF_SPRINGER_NATURE_PDF_ENDPOINT

已获授权的 Springer Nature PDF endpoint 模板,支持 {doi}

未设置

SCIPDF_IEEE_API_KEY

IEEE API key(仅从环境读取)

未设置 = 跳过

SCIPDF_IEEE_FULLTEXT_ENDPOINT

已获授权的 IEEE PDF endpoint 模板,支持 {doi}

未设置

SCIPDF_PREFER_OA

为 true 时才在 Sci-Hub 试 OA

false(默认 Sci-Hub)

SCIPDF_ALLOW_SCIHUB

是否允许 Sci-Hub(主路径)

true

SCIPDF_FILENAME_STYLE

doiauthor_year_title

doi

SCIPDF_PDF_HOSTS

直连 PDF 主机(逗号分隔)

https://sci.bban.top/pdf/

SCIPDF_MIRRORS

HTML 镜像列表(逗号分隔)

见上表(15 个)

SCIPDF_DEBUG=1

调试日志

off

SCIPDF_HEALTH_TTL_MS

镜像健康缓存

15min

Unpaywall(可选,非强制)

默认只走 Sci-Hub,无需任何邮箱。

若要优先合法 OA,启用:

export SCIPDF_PREFER_OA=true

这会先尝试 OpenAlex、Europe PMC 和 Semantic Scholar。若还要加入 Unpaywall,再设置 SCIPDF_UNPAYWALL_EMAIL;该服务要求真实邮箱(统计用量,不收费)。

配置

行为

默认(无邮箱 / 无 PREFER_OA)

只走 Sci-Hub / pdfHosts

只设邮箱

仍默认 Sci-Hub(可用 unpaywall 命令单独查询)

PREFER_OA=true

先免费 OA 数据源,失败再 Sci-Hub

邮箱 + PREFER_OA=true

在上述 OA 数据源中加入 Unpaywall

ALLOW_SCIHUB=false + PREFER_OA=true

仅 OA

Grok 示例(可选 OA):

[mcp_servers.scipdf]
command = "node"
args = ["/path/to/scipdf-mcp/dist/index.js"]
env = {
  SCIPDF_DOWNLOAD_DIR = "/Users/you/Documents/Papers",
  SCIPDF_UNPAYWALL_EMAIL = "you@gmail.com",
  SCIPDF_PREFER_OA = "true"
}

config.example.json

统一论文检索

search_papers 同时查询 Crossref、OpenAlex、Semantic Scholar 和 arXiv, 将不同来源统一为相同字段,按 DOI、arXiv ID 或“标题 + 年份”去重,并使用 Reciprocal Rank Fusion 融合来源排名。支持:

  • 指定一个或多个来源;

  • 限制年份区间;

  • 最低引用量;

  • 仅保留已知开放获取结果;

  • 最多返回 50 条。

MCP 参数示例:

{
  "query": "wide bandgap semiconductor inverter",
  "sources": ["openalex", "semanticscholar"],
  "limit": 20,
  "year_from": 2022,
  "min_citations": 5,
  "open_access_only": true
}

搜索结果只用于发现和筛选论文;选定结果后,把 DOI 或 arXiv ID 交给 download_paper / download_papers 下载。arXiv 结果始终包含官方 PDF 地址,不要求开启 SCIPDF_PREFER_OA

PDF 来源抽象

下载层通过统一 PdfSource 调度:

来源

标识符

行为

arxiv

arXiv ID

官方仓储直接 PDF,合法来源

elsevier

DOI

配置 SCIPDF_ELSEVIER_API_KEY 后调用官方 Article Retrieval PDF API

springer-nature

DOI

key + 授权 PDF endpoint;官方标准 Full Text API 返回 JATS/XML,不能冒充 PDF

ieee

DOI

key + 单独获权的全文 endpoint;普通 Metadata API key 不等于全文权限

doi-oa

DOI

PREFER_OA=true 时尝试 Unpaywall/OpenAlex/Europe PMC/Semantic Scholar

legacy

DOI

现有 pdfHosts/Sci-Hub 回退链

缓存侧车使用 identifier 保存 doi:…arxiv:…,并兼容旧版仅含 doi 的侧车文件。

出版商 key/token 不写入 SciPdfConfig,也不会出现在 MCP 配置回显或 manifest。endpoint URL 中的 api_keyapikeytoken 等查询参数在 返回和落盘前会被脱敏。

下载状态与 manifest v2

下载结果继续保留兼容字段 okcodesource,并新增:

  • statusdownloadedcachednot_foundnot_entitledrate_limitedinvalid_pdf 等;

  • attempts:按实际顺序记录来源、结果、耗时、HTTP 状态、合法性和访问模式;

  • oa / oaEvidence:OA 提供者、版本、许可证及 PDF 证据;

  • sha256:最终保存或缓存 PDF 的 SHA-256。

批量下载写出的 scipdf-manifest.json 使用 manifestVersion: 2,包含汇总、 上述审计字段和自动凭据脱敏。


开发

npm install && npm run build && npm test
npm run install:all

CI:GitHub Actions 上 Node 20/22 build + test。

License

MIT

Available Tools

11 tools
check_mirrorsA

Probe Sci-Hub mirrors for availability (uses health cache; force_refresh ignores cache). Only configured public mirrors (or allowlisted public https hosts) are probed — private/localhost URLs are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNo
force_refreshNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses critical behavior: uses a health cache, force_refresh bypasses cache, and URL filtering (only public/allowlisted). This adds significant value beyond the schema. However, it does not explicitly state whether the operation is read-only or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The most important information (purpose, caching, URL restrictions) is front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description covers purpose, behavioral constraints, and parameter hints. It lacks explicit description of return values, but given the context, it is mostly complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains force_refresh's effect (ignores cache) and implies that the 'urls' parameter accepts only public/allowlisted URLs. However, it does not fully describe all parameter meanings or expected formats, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'probes Sci-Hub mirrors for availability', which distinguishes it from sibling tools like 'list_mirrors' that likely list mirrors. It also mentions caching and force_refresh behavior, making the tool's specific purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful usage context: it only probes configured public mirrors or allowlisted https hosts, rejecting private/localhost URLs. This helps the agent determine when to use this tool and what inputs are valid. However, it does not explicitly compare to other tools like 'list_mirrors' or 'download_paper'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_paperC

Download an academic paper PDF by DOI, title, URL, or citation. Default: Sci-Hub/pdfHosts. Optional Unpaywall OA only if SCIPDF_UNPAYWALL_EMAIL is set AND SCIPDF_PREFER_OA=true. Returns path, source (scihub|unpaywall|cache), citations. Use force=true to re-download.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoRe-download even if file exists (default false)
queryYesDOI (10.xxxx/...), title, publisher URL, or citation string
outdirNoOverride download directory
filenameNoOverride output filename
query_typeNoHow to interpret query: auto (default), doi, url, title, or citation
with_citationNoInclude APA/GB/T/BibTeX (default true)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. States return values and force re-download, but omits state changes, auth needs, error handling, or behavior on missing paper.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded purpose. Each sentence adds value. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, sources, conditional behavior, and return fields. Missing error states, prerequisites (e.g., Sci-Hub access), and edge cases for 6 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. Description adds context for 'query' types and 'force' meaning, but does not significantly enhance understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Download an academic paper PDF by DOI, title, URL, or citation.' Specific verb and resource. However, does not explicitly distinguish from sibling 'download_papers' (plural).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides conditional guidance for Unpaywall and 'force' parameter, but lacks when-to-use compared to siblings like resolve_doi or lookup_unpaywall. No explicit alternatives or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_papersA

Batch-download papers. Accepts list of DOIs/titles/URLs, or a single bib/ris/pasted bibliography blob. Dedupes DOIs, writes scipdf-manifest.json, returns indexed results.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
outdirNo
queriesYesList of DOIs, titles, URLs, or one multi-line bib/ris text
query_typeNoHow to interpret query: auto (default), doi, url, title, or citation
write_manifestNoWrite scipdf-manifest.json (default true)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It mentions deduplication of DOIs, writing scipdf-manifest.json, and returning indexed results. However, it omits details like error handling, overwrite behavior, concurrency, or authentication requirements. The disclosure is moderate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences, each adding value. It front-loads the purpose ('Batch-download papers'), then details input requirements, and finally lists key behaviors. No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given five parameters, no annotations, and no output schema, the description lacks completeness. It does not explain the purpose of 'force' or 'outdir', default behaviors, or handling of errors. An agent would need to infer or experiment with missing details, making it insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, covering three of five parameters. The description adds context for the 'queries' parameter by listing accepted input types, but does not explain 'force' or 'outdir'. It provides marginal additional value beyond the schema for the covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Batch-download papers' and lists specific input types (DOIs, titles, URLs, bibliography blobs). It distinguishes from the sibling tool 'download_paper' by emphasizing batch operation. The verb 'download' and resource 'papers' are clear and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for batch downloading via 'Batch-download' but does not explicitly state when to use this tool versus alternatives like 'download_paper' for single papers or other siblings. No when-not-to-use guidance or prerequisites provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

format_citationA

Format APA / GB/T 7714 / BibTeX from DOI (fetches Crossref metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYesDOI

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that Crossref metadata is fetched, but lacks details on error handling, rate limits, or whether network access is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that conveys all essential information without any waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description adequately explains the function but does not specify the return format or behavior with invalid DOIs, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the 'doi' parameter described as 'DOI'. The description adds value by explaining that the DOI is used to fetch Crossref metadata, enhancing the schema's minimal description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool formats citations in specific styles (APA, GB/T 7714, BibTeX) using a DOI, which distinguishes it from siblings like resolve_doi or download_paper.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a DOI is available by mentioning 'from DOI', but does not explicitly state when to use this tool over alternatives like parse_references or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mirrorsA

List configured Sci-Hub mirrors, PDF hosts, Unpaywall status, and settings (hot-reloads config).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description notes that the tool 'hot-reloads config', which is a behavioral detail beyond a simple list operation. However, it is unclear whether this is a side effect or the primary action. No annotations are provided, so the description bears full responsibility, but the phrase lacks clarity on the impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with main purpose, no superfluous words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description sufficiently outlines the return categories. It covers the main information an agent would need to invoke the tool. However, it could mention the format or that it returns a list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the description clarifies what is listed (mirrors, PDF hosts, Unpaywall status, settings), adding value beyond the empty schema. Per guidelines, 0 params gets baseline 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists configured Sci-Hub mirrors, PDF hosts, Unpaywall status, and settings. The verb 'list' and the resource categories are specific. It also distinguishes from siblings like check_mirrors (which checks availability) and reload_config (which reloads config without listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when-not-to-use, or compare with sibling tools like check_mirrors or reload_config. The usage context is implied but not articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_papersC

List PDF files already in the download directory (most recent first).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax files (default 50)
outdirNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It states the tool lists files but does not mention side effects (e.g., is it read-only? Does it modify anything?), permissions, or error handling (e.g., what if the directory is missing?). This is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the core action and ordering. However, it could be slightly improved by front-loading the key benefit (listing PDFs) without sacrificing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and only 50% schema description coverage, the description should compensate with details about return format, default behavior, and limitations. It does not mention response structure, pagination, or behaviors like empty directory handling, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 50% of parameters: 'limit' has a description, but 'outdir' has none. The description adds no new meaning beyond the schema—it does not explain what 'outdir' represents or default directory behavior. For an agent, this is ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List'), the resource ('PDF files already in the download directory'), and the ordering ('most recent first'). It distinguishes itself from sibling tools like 'download_paper' (downloads) and 'list_mirrors' (lists mirrors), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that this tool only lists existing files, while 'download_paper' fetches new ones. The description lacks any contextual cues for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_unpaywallA

Query Unpaywall for Open Access status and PDF URL (does not download). Requires SCIPDF_UNPAYWALL_EMAIL.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYesDOI e.g. 10.1038/nature12373

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description must carry burden. It discloses non-destructive nature (does not download) and a requirement, but omits details like rate limits or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short, front-loaded sentence with essential requirement line. No filler, but could benefit from a bit more structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one parameter and no output schema, the description adequately covers purpose, key behavior, and requirement. Lacks explanation of return format but is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (doi) with full schema description. Description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool queries Unpaywall for Open Access status and PDF URL, specifying it does not download. This distinguishes it from siblings like download_paper.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (query OA status/URL) and notes the prerequisite environment variable SCIPDF_UNPAYWALL_EMAIL, providing clear context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_paperA

Open a local PDF path with the system default viewer (macOS open / Windows start / xdg-open).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to a local PDF

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it uses system default viewer, but omits error behavior (file not found), blocking nature, or return value. With no annotations, more detail expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence front-loading action, perfectly sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with 1 param and no output schema; description covers purpose and method, but missing mention of return value or error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; description adds only that path is 'local PDF' and mentions viewer, but doesn't add significant meaning beyond schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states action (open), resource (local PDF path), and method (system default viewer with cross-platform specifics). Distinct from siblings like download_paper.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs alternatives (e.g., after downloading), no prerequisites or exclusions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_referencesA

Extract DOIs/queries from BibTeX, RIS, or pasted reference list text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesBibliography text (bib/ris/plain)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully convey behavioral traits. It only states that the tool extracts DOIs/queries, but it omits key details such as how it handles invalid input, what happens if no DOIs are found, whether it performs validation, or any rate limits. The description is too minimal for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's function. It contains no unnecessary words or redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no annotations or output schema, the description is minimally adequate. It explains the input type and the extraction goal, but it lacks mention of the output format, success indicators, or error behavior. Additional context would be beneficial for confident usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the parameter description 'Bibliography text (bib/ris/plain)'. The tool description adds value by explaining that the text is parsed to extract DOIs/queries, providing context for the parameter's purpose. However, it could further clarify expected input format details or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool extracts DOIs/queries from specific bibliography formats (BibTeX, RIS, plain text). The verb 'Extract' and resource 'DOIs/queries' provide specific scope, and it distinguishes itself from sibling tools like check_mirrors, download_paper, etc., which handle different tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or when not to use it. The user/agent must infer its applicability from the sole purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reload_configA

Hot-reload scipdf config from environment variables and config.json without restarting the process.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations; description states 'hot-reload' and 'without restarting' which suggests non-destructive behavior. However, lacks details on prerequisites or side effects, which for a zero-param config reload is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. Key information is front-loaded: action (hot-reload), source (environment variables and config.json), and benefit (without restarting).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with zero parameters and no output schema, the description covers the essential behavior. Could mention that it targets scipdf config specifically, but completeness is high given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; baseline score of 4 applies as description adds no confusion and schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Hot-reload scipdf config from environment variables and config.json without restarting the process.' It specifies a specific verb (reload) and resource (config), and distinguishes from siblings which deal with papers and mirrors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context: use when config changes should be applied without a restart. No explicit when-not or alternatives, but given zero parameters and sibling unrelated, guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_doiA

Resolve title/URL/citation to DOI via Crossref + OpenAlex. Returns candidates when ambiguous (code AMBIGUOUS_DOI).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesTitle, URL, citation, or DOI
query_typeNoHow to interpret query: auto (default), doi, url, title, or citation

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden for behavioral disclosure. It mentions using two sources and returning candidates when ambiguous, which is helpful. However, it does not disclose whether the operation is read-only, any authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two clear, concise sentences with no superfluous information. Every sentence adds value—the first states the purpose and sources, the second explains the ambiguity handling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description is adequate for a simple lookup tool but leaves gaps, such as what the return format is (e.g., a string or object). It covers core behavior but could be more complete about error handling or response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters (query, query_type) with descriptions, achieving 100% coverage. The description does not add extra semantic details beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves titles, URLs, or citations to DOIs using specific sources (Crossref, OpenAlex), and mentions handling of ambiguous results. This differentiates it from siblings like 'check_mirrors' or 'download_paper' which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for resolving to DOIs but provides no guidance on when to choose this tool over others, such as 'lookup_unpaywall' for open access status. It does not explicitly mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.3.0
    • First observedcheck_mirrors
    • First observeddownload_paper
    • First observeddownload_papers
    • First observedformat_citation
    • First observedlist_mirrors
    • First observedlist_papers
    • First observedlookup_unpaywall
    • First observedopen_paper
    • First observedparse_references
    • First observedreload_config
    • First observedresolve_doi

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: checking mirrors vs listing them, single vs batch download, citation formatting vs reference parsing, etc. No two tools have overlapping functionality; even similarly named tools like download_paper and download_papers are differentiated by single vs batch behavior.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., download_paper, list_mirrors, resolve_doi). This makes the tool set predictable and easy for an agent to navigate.

Tool Count5/5

With 11 tools, the server is well-scoped for its domain of academic paper management. Each tool serves a necessary function without redundancy or bloat.

Completeness5/5

The tool surface covers the full lifecycle: mirror probing, downloading (single and batch), local file listing, citation formatting, reference parsing, DOI resolution, Unpaywall lookup, config reload, and file opening. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for downloading academic papers from multiple sources using intelligent routing and year-aware priority selection. It enables users to retrieve metadata and download single or batch PDFs by DOI or URL.
    3
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Comprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for searching, downloading, and reading academic papers from multiple sources such as arXiv, Google Scholar, and Elsevier.
    6
    MIT