scipdf-mcp
The scipdf-mcp server provides MCP tools for academic paper PDF downloading, management, and citation processing.
Download papers: Single papers by DOI, title, URL, or citation; batch download with BibTeX/RIS support, deduplication, and manifest output. Supports Sci-Hub, Unpaywall, and publisher APIs.
Resolve DOIs: Resolve titles, URLs, or citations to DOIs via Crossref and OpenAlex.
Parse references: Extract DOIs and queries from BibTeX, RIS, or plain-text reference lists.
Manage mirrors: List configured Sci-Hub mirrors and PDF hosts; check mirror availability with cache bypass.
Unpaywall integration: Lookup OA status and PDF URL for a DOI (requires email).
File operations: List downloaded PDFs by date; open a paper with the system default viewer.
Format citations: Generate APA, GB/T 7714, or BibTeX citations from a DOI.
Extract text: Extract text from downloaded PDFs.
Configuration: Hot-reload server config from environment variables and config.json without restarting.
Enables downloading academic papers by resolving DOIs via Crossref and OpenAlex, manages local paper library, and provides citation formatting.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scipdf-mcpdownload paper 10.1038/nature12373 and get citation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 --updategit 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
主机 | 说明 |
| 优先尝试的 DOI 直链主机 |
默认 Sci-Hub 镜像(DEFAULT_MIRRORS)
内置 15 个 HTML 镜像(以 src/config.ts / config.example.json 为准):
镜像 | 备注 |
| 传统域名 |
| 传统域名 |
| 传统域名 |
| 传统域名(部分网络较慢或拦截) |
| 传统域名 |
| 传统域名 |
| 传统域名(部分网络 DNS 失败) |
| 已实测可下 PDF |
| 已实测可下 PDF |
| 已实测可下 PDF |
| 已实测;可能跳转 usualwant |
| 已实测可下 PDF |
| 已实测;可能跳转 pismin |
| 已实测可下 PDF |
| 已实测可下 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,编辑 scihubMirrors 与 pdfHosts。
配置优先级:SCIPDF_* 环境变量 > 配置文件 > 内置默认。
MCP Tools / Resources / Prompts
Tool | 说明 |
| Crossref + OpenAlex + Semantic Scholar + arXiv 统一检索 |
| 列出检索源及搜索、引用链、推荐、PDF 等能力 |
| 列出 |
| 通过 Semantic Scholar 前向/后向追踪引用 |
| 查找相似论文 |
| 单篇 DOI/标题/arXiv ID;arXiv 直接从官方 PDF 下载 |
| 批量去重 + manifest v2(来源历史、OA 证据、SHA-256) |
| Crossref + OpenAlex |
| bib/ris/粘贴列表抽 DOI |
| 从下载目录内的 PDF 提取正文并写入相邻 |
| 批量核验引用、解析 DOI、输出规范引用与失败项 |
| 配置与健康缓存探测 |
| 已下载列表 |
| 系统默认打开 PDF |
| APA / GB/T / BibTeX |
| 热加载配置 |
Resource:
papers://listPrompt:
download_papers_batch
错误码:DOI_NOT_FOUND / AMBIGUOUS_DOI / INVALID_ARXIV_ID /
MIRROR_BLOCKED / ALL_SOURCES_FAILED / PDF_NOT_IN_DB 等。
环境变量(节选)
变量 | 含义 | 默认 |
| 保存目录 |
|
| 可选,启用 Unpaywall 时使用的真实邮箱 | 未设 = 跳过 Unpaywall |
| 可选,提高 Semantic Scholar 检索配额 | 未设置 = 匿名配额 |
| Elsevier Article Retrieval API key(仅从环境读取) | 未设置 = 跳过 |
| 可选 Elsevier 机构/用户授权令牌 | 未设置 |
| Springer Nature key(仅从环境读取) | 未设置 = 跳过 |
| 已获授权的 Springer Nature PDF endpoint 模板,支持 | 未设置 |
| IEEE API key(仅从环境读取) | 未设置 = 跳过 |
| 已获授权的 IEEE PDF endpoint 模板,支持 | 未设置 |
| 为 true 时才在 Sci-Hub 前试 OA |
|
| 是否允许 Sci-Hub(主路径) |
|
|
|
|
| 直连 PDF 主机(逗号分隔) |
|
| HTML 镜像列表(逗号分隔) | 见上表(15 个) |
| 调试日志 | off |
| 镜像健康缓存 | 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(可用 |
仅 | 先免费 OA 数据源,失败再 Sci-Hub |
邮箱 + | 在上述 OA 数据源中加入 Unpaywall |
| 仅 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 ID | 官方仓储直接 PDF,合法来源 |
| DOI | 配置 |
| DOI | key + 授权 PDF endpoint;官方标准 Full Text API 返回 JATS/XML,不能冒充 PDF |
| DOI | key + 单独获权的全文 endpoint;普通 Metadata API key 不等于全文权限 |
| DOI |
|
| DOI | 现有 pdfHosts/Sci-Hub 回退链 |
缓存侧车使用 identifier 保存 doi:… 或 arxiv:…,并兼容旧版仅含 doi
的侧车文件。
出版商 key/token 不写入 SciPdfConfig,也不会出现在 MCP 配置回显或
manifest。endpoint URL 中的 api_key、apikey、token 等查询参数在
返回和落盘前会被脱敏。
下载状态与 manifest v2
下载结果继续保留兼容字段 ok、code、source,并新增:
status:downloaded、cached、not_found、not_entitled、rate_limited、invalid_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:allCI:GitHub Actions 上 Node 20/22 build + test。
License
MIT
Available Tools
11 toolscheck_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.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | ||
| force_refresh | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-download even if file exists (default false) | |
| query | Yes | DOI (10.xxxx/...), title, publisher URL, or citation string | |
| outdir | No | Override download directory | |
| filename | No | Override output filename | |
| query_type | No | How to interpret query: auto (default), doi, url, title, or citation | |
| with_citation | No | Include APA/GB/T/BibTeX (default true) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| outdir | No | ||
| queries | Yes | List of DOIs, titles, URLs, or one multi-line bib/ris text | |
| query_type | No | How to interpret query: auto (default), doi, url, title, or citation | |
| write_manifest | No | Write scipdf-manifest.json (default true) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | DOI |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files (default 50) | |
| outdir | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | DOI e.g. 10.1038/nature12373 |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to a local PDF |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Bibliography text (bib/ris/plain) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Title, URL, citation, or DOI | |
| query_type | No | How to interpret query: auto (default), doi, url, title, or citation |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v0.3.0- First observed
check_mirrors - First observed
download_paper - First observed
download_papers - First observed
format_citation - First observed
list_mirrors - First observed
list_papers - First observed
lookup_unpaywall - First observed
open_paper - First observed
parse_references - First observed
reload_config - First observed
resolve_doi
TDQS
Scored across 11 tools
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.
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.
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.
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
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
Academic research MCP server for paper search, citation checks, graphs, and deep research.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
MCP server for Altmetric APIs - track research attention across news, policy, social media, and more
Crossref MCP — wraps the Crossref REST API (academic papers, free, no auth)
Related MCP Servers
- AlicenseAqualityBmaintenanceAn 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.32MIT
- AlicenseAqualityAmaintenanceMCP server that turns DOI, URL, or paper titles into structured Markdown full-text with metadata and assets, enabling AI agents to read beyond abstracts.9241MIT
- AlicenseAqualityAmaintenanceComprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.11MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for searching, downloading, and reading academic papers from multiple sources such as arXiv, Google Scholar, and Elsevier.6MIT