Skip to main content
Glama
Academic Literature MCP (Multi-site)

Academic Literature MCP (Multi-site)

by wkkdmx

学术文献 MCP(多站点)

在本机运行的学术文献工具服务:通过 MCP stdio 接入 Claude、Cursor、Codex 等客户端, 提供 检索 → 收集 → 下载 闭环。

  • Web of Science:Clarivate Starter API 检索 + 浏览器/开放获取下载

  • 万方、维普:机构订阅下的浏览器会话检索与全文下载(无需下载 Chromium,直接用本机 Edge)

  • 三站输出同一套 Record,检索、去重、评分、存储、引文导出完全复用

  • 架构见 docs/DESIGN.md,中文站点细节见 docs/CN_SITES.md, 新站点接入见 docs/EXTENDING.md

能力矩阵

站点

检索

结构化检索

题录补全

PDF 下载

期刊指标

状态

Web of Science

✅

✅

基础题录(摘要视套餐)

✅(订阅/OA)

代理分

需 API Key

万方

✅

✅

✅(摘要/关键词/DOI)

✅(机构会话)

无

需 Edge + 机构登录

维普

✅

✅

✅(摘要/关键词)

✅(机构会话)

无

需 Edge + 机构登录

中国知网

✅

✅

✅(摘要/关键词/基金/单位)

✅(PDF/CAJ)

无

需有头 Edge + 机构 IP

site="auto" 只选择可无人值守工作的站点(当前是 WoS);万方/维普/知网需显式指定站点, 避免一次普通检索突然弹出浏览器窗口。知网还要求有头浏览器:普通 HTTP 请求会被跳转滑块验证。

list_sites 会实时返回这份矩阵(以代码声明为准)。

Related MCP server: gleaner

快速开始

# 1. 安装
python -m pip install -e .
# 万方/维普/知网(或 WoS 的机构 PDF)需要浏览器驱动;不需要下载 Chromium
python -m pip install -e ".[browser]"
# 浏览器直接使用本机已安装的 Microsoft Edge(其次 Chrome),无需 playwright install

# 2. 配置
cp .env.example .env
# 编辑 .env,至少填入 ACADEMIC_MCP_WOS_API_KEY

# 3. 自检(不联网、不启动服务)
python -m academic_mcp check

# 4. 导出工具 schema(可选)
python -m academic_mcp schema --out docs/tool-schema.json

# 5. 启动 stdio 服务
python -m academic_mcp

# 或者以 HTTP 方式供远程/服务化 agent 接入(只监听回环)
python -m academic_mcp --transport http --port 8931

没有 API Key 时不会崩溃:search 返回 status=failed 与 SITE_NOT_CONFIGURED(含配置提示);list_sites、diagnostics 仍可用。 pytest 内含本地 mock WoS API 与万方/维普/知网仿真页,可在无凭据、无外网的情况下 验证检索→详情→PDF 的完整链路(使用本机 Edge 的有头/无头模式)。

客户端配置示例:

{
  "mcpServers": {
    "academic": {
      "command": "python",
      "args": ["-m", "academic_mcp"],
      "cwd": "F:/WorkBuddyAI/文献收集MCP",
      "env": {
        "ACADEMIC_MCP_WOS_API_KEY": "你的 Clarivate API Key",
        "ACADEMIC_MCP_DATA_DIR": "F:/WorkBuddyAI/文献收集MCP/data",
        "ACADEMIC_MCP_UNPAYWALL_EMAIL": "you@example.com"
      }
    }
  }
}

API Key 申请:https://developer.clarivate.com → 注册应用 → 订阅 Web of Science Starter API。逐字段填写要点、免费档配额预算与验证步骤见 docs/WOS_KEY_SETUP.md。

万方/维普/知网的登录、凭证、参数与异常处理见 docs/CN_SITES.md。

字段边界:Starter API 稳定提供题名、作者、来源、年卷期页、DOI、关键词、 被引次数与 WoS 链接;不保证返回摘要、机构、基金。没有摘要的记录会标记为 detail_level=list,评分只使用题名/关键词/被引等可得证据,不会把列表级记录 伪装成摘要级证据。若需要摘要与基金,需订阅 Expanded API(扩展点已预留)。

接入 Agent

配置只是第一步,真正决定效果的是 agent 怎么调。完整说明见 docs/AGENT_INTEGRATION.md,包含:

  • 三种接入形态(stdio / streamable-http / 进程内)的取舍;

  • WorkBuddy、Claude Desktop、Cursor、VS Code、Claude Code 的配置位置与差异;

  • 工具调用链与参数策略(任务信封 → 轮询 → 快照 → 导出);

  • 可直接粘贴的系统提示词:examples/system-prompt.md;

  • 错误码处置表、验证清单、排障表。

可运行的客户端示例(无需 API Key 即可验证链路):

python examples/agent_client.py --demo                          # 进程内 mock WoS,跑通全流程
python examples/agent_client.py --query "algorithmic management" --limit 10
python examples/agent_client.py --url http://127.0.0.1:8931/mcp  # 连 HTTP 服务
[3] 检索 completed:候选 3,相关 2,入选 2
     1. [2023] Algorithmic management and worker autonomy in platform work · JOURNAL OF MANAGEMENT ST
[6] gbt7714 引文:
ZHANG S, LI S. Algorithmic management and worker autonomy in platform work[J]. JOURNAL OF MANAGEMENT STUDIES, 2023, 60(2): 101-130.

桌面客户端记住三点:command 用解释器绝对路径、cwd 指向项目根、env 显式给 Key 和数据目录。.env 只在 cwd 下才会被读取。

工具

工具

作用

list_sites

站点与能力矩阵

search

研究检索:概念规划、多通道、去重、增强、反馈、评分

structured_search

布尔表达式({field,value,match} / `{op,and

search_results

本地分页读取检索快照,不联网

get_metadata

批量题录补全,可 local_only / refresh

download_paper

WoS:订阅会话 → 开放获取 → 出版商页面;万方/维普/知网:机构会话详情页下载;知网支持 PDF/CAJ

export_citations

GB/T 7714、APA、MLA、Chicago、Vancouver、BibTeX、RIS、EndNote、CSL-JSON、JSON、CSV、Markdown、custom

session_status / login

四站会话状态与登录(中文站点需显式传 site)

operation_status / operation_control

长轮询、取消、继续、恢复浏览器

diagnostics

本地诊断,不联网

典型调用

search(query="算法管理 与 劳动者自主性", concept_groups=[["算法管理","algorithmic management"],["劳动者自主性","worker autonomy"]], year_from=2020, limit=20)
→ {operation_id, status:"running"|"completed", result:{search_id, candidate_count, results:[...]}}

search_results(search_id="op_...", scope="selected", view="compact")
get_metadata(search_id="op_...", limit=10)
download_paper(record_ref="wos:WOS:000...")
export_citations(search_id="op_...", format="gbt7714")

设计要点

  1. 任务化:联网工具返回任务信封,operation_status(wait_seconds<=55) 长轮询; 中断可 continue,已抓取的详情不会重复请求。

  2. 单一节流点:所有请求先扣预算、再取限速槽位;验证码时全局暂停新请求。

  3. 能力协商:站点声明 SiteCapabilities,缺失能力返回明确错误,流水线自动降级。

  4. 站点只做翻译:查询编译、响应解析、下载解析属于适配器;去重、评分、筛选、 存储、引文属于通用层。

  5. 证据边界:detail_level 区分列表级/详情级;无 JCR 时质量分标注 proxy; 下载失败说明解析链断在哪一步,不猜、不绕过付费墙。

目录

academic_mcp/
  core/            # 站点无关:base, registry, pipeline, ranking, jobs, store, citations
  transports/      # httpx 客户端、Playwright 会话
  sites/
    webofscience/  # query / parsers / api / web / selectors / site
    wanfang/       # query / parsers / selectors / site(浏览器会话)
    vip/           # query / parsers / selectors / site(浏览器会话)
  tools/           # MCP 工具实现
  server.py        # MCPServer 注册
tests/             # 完整测试(含本地 mock WoS API 端到端)
examples/          # agent 侧客户端、客户端配置、系统提示词
docs/              # DESIGN / CN_SITES / CNKI_FEASIBILITY / AGENT_INTEGRATION / EXTENDING / WOS_KEY_SETUP / tool-schema

配置项

变量

默认

说明

ACADEMIC_MCP_DATA_DIR

./data

数据库、下载、导出、浏览器 profile

ACADEMIC_MCP_WOS_API_KEY

—

Clarivate API Key(检索必需)

ACADEMIC_MCP_WOS_API_BASE

官方 Starter API

便于代理/测试

ACADEMIC_MCP_WOS_DB

WOS

WoS 数据库缩写

ACADEMIC_MCP_WOS_ENABLE_BROWSER

false

启用机构订阅 PDF 通道

ACADEMIC_MCP_UNPAYWALL_EMAIL

—

开放获取查询的联系邮箱

ACADEMIC_MCP_REQUEST_INTERVAL_MS

600

请求间隔

ACADEMIC_MCP_MAX_INFLIGHT

3

并发上限

ACADEMIC_MCP_INLINE_WAIT_SECONDS

40

工具调用内等待时间

ACADEMIC_MCP_BROWSER_HEADLESS

false

登录/验证建议保持有头

ACADEMIC_MCP_BROWSER_CHANNEL

自动

留空自动用 Edge,其次 Chrome;可强制 msedge/chrome

ACADEMIC_MCP_BROWSER_EXECUTABLE

—

非标准安装路径时指定浏览器可执行文件

ACADEMIC_MCP_WANFANG_*

—

USERNAME/PASSWORD/LOGIN_MODE/INSTITUTION/BASE_URL/DETAIL_BASE

ACADEMIC_MCP_VIP_*

—

USERNAME/PASSWORD/LOGIN_MODE/INSTITUTION/BASE_URL

ACADEMIC_MCP_CREDENTIAL_FILE

data/credentials.json

凭证 JSON(明文,建议 600 权限)

ACADEMIC_MCP_SESSION_PROBE_TTL

120

会话状态缓存秒数

ACADEMIC_MCP_ENABLED_SITES

wos,wanfang,vip

启用的站点

测试

python -m pytest -q

覆盖:三站查询编译、DOM/JSON 容错解析、去重、相关性/质量评分、检索流水线、 SQLite 存储、13 种引文格式、任务预算/取消/超时快照/人工等待、凭证解析与脱敏、 统一文件命名、重试与 HTTP 状态分类。

端到端:本地 mock WoS API 跑通检索→收集→导出;本地仿真万方/维普/知网页面 + 本机 Edge 跑通检索→详情补全→PDF 下载→台账与命名(无需真实机构账号)。

合规与限制

  • 不绕过付费墙:只使用用户自身机构订阅(可见浏览器会话)或合法开放获取副本。

  • 不代管凭据:浏览器登录由用户在弹出窗口完成,密码不经过 MCP 进程。

  • 不伪造指标:Starter API 不提供 JCR 影响因子/分区,质量分为代理值并明确标注。

  • 浏览器选择器集中在各站 selectors.py,UI 改版时只改一个文件;API 通道不受影响。

  • 万方/维普/知网依赖机构订阅与内网/VPN 权限;能登录不等于有全文权限,下载失败会如实报告 FORBIDDEN/DOWNLOAD_UNAVAILABLE,不做付费墙绕过。

  • 万方详情页与两站的真实 PDF 下载仍需用你的机构账号做一次回归(见 docs/CN_SITES.md 第 9.2 节)。

Available Tools

12 tools
diagnosticsA

本地检查:配置、数据量、浏览器依赖、限速与当前任务;不联网。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool checks local state, including current tasks, and does not touch the network, which is the most important behavioral trait: no calls, no authentication, and no side effects. It leaves implicit that the operation is read-only and does not reveal whether any local state is modified.

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 definition consists of a single compact clause with semicolon-separated scopes, and the offline constraint is stated last where it is prominent. No sentence is wasted.

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?

An output schema exists, so return-value shape does not need explanation here. For a no-argument local diagnostic tool, the scope list and the offline guarantee are enough to call the tool correctly. The only real omission is routing guidance against similarly named siblings.

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 takes zero parameters, so there are no parameter semantics to document. A baseline of 4 is appropriate because nothing is left ambiguous on the input side.

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?

The description names a concrete resource set: configuration, data volume, browser dependencies, rate limits, and current tasks. This is more specific than a tautology. It does not explicitly contrast itself with related siblings such as session_status or operation_status, so differentiation is left implicit.

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 in troubleshooting and pre-flight situations through the list of things it checks and the note that it does not go online. It never states when an agent should choose this over operation_status or session_status, and it gives no exclusions.

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

download_paperA

下载全文(PDF/CAJ)。仅在用户确实需要文件时调用。

auto 优先 PDF,站点只提供 CAJ 时回落 CAJ(知网常见)。 解析链:机构订阅浏览器会话 → 开放获取副本(Unpaywall)→ 出版商页面。 不做付费墙绕过;结果未知时不会自动重放点击,需显式 retry=true。

NameRequiredDescriptionDefault
doiNo
siteNo
retryNo
titleNo
formatNoauto
record_refNo
subdirectoryNo
wait_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does substantial work: it discloses the resolution chain (institutional subscription browser session → Unpaywall OA copy → publisher page), the PDF→CAJ fallback rule, the policy that paywalled content is not bypassed, and that unknown outcomes are not automatically replayed without retry=true. It stops short of saying what authentication is needed for the institutional-session path or what a failed download returns, but the behavioral profile is far above baseline.

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?

Four short lines, front-loaded with the purpose and the primary usage gate, then falling back to behavioral detail. Almost every clause earns its place; the '(知网常见)' parenthetical is the only mildly expendable fragment.

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?

An output schema exists, so return values need not be described, and the complex resolution logic is well covered. However, for a tool with 8 optional parameters and zero annotation coverage, the description never says which identifier combinations are valid, where the file is written (subdirectory is undocumented), or what wait_seconds controls, leaving an agent to guess at invocation details.

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 0% across 8 parameters, so the description must compensate, and it meaningfully explains only format ('auto 优先 PDF,站点只提供 CAJ 时回落 CAJ') and retry semantics, plus an oblique hint that site relates to 知网. The remaining parameters — doi, title, record_ref, subdirectory, wait_seconds — get no explanation of meaning, mutual exclusivity, or which one identifies the paper, leaving real gaps for an 8-parameter tool.

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?

The description opens with a specific verb+resource: '下载全文(PDF/CAJ)' (download full text as PDF/CAJ), which is immediately distinguishable from metadata-oriented siblings such as get_metadata, search, and export_citations. It lacks an explicit naming of those siblings, but the resource and output form are unambiguous.

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?

'仅在用户确实需要文件时调用' is a genuine when-to-use constraint that steers the agent away from this expensive tool when a metadata lookup would do. It also states the condition for retrying (explicit retry=true), though it never names a concrete alternative tool for the case where only metadata is needed.

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

export_citationsC

导出参考文献:GB/T 7714、APA、MLA、Chicago、Vancouver、BibTeX、RIS、 EndNote、CSL-JSON、JSON、CSV、Markdown、custom。

NameRequiredDescriptionDefault
limitNo
scopeNoselected
formatNogbt7714
titlesNo
filenameNo
templateNo
search_idNo
record_refsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It reveals the format capability set but says nothing about whether a file is written to disk, what happens with the default 'selected' scope, permission or login requirements, or any limits on export size — significant gaps for an 8-parameter tool with side effects implied by 'filename' and 'template'.

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?

It is a single front-loaded sentence with the verb and resource first, and the format list, though long, is the only substantive information conveyed. No filler or redundancy is present, though the list would be more useful if attached to the format parameter explicitly.

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?

With eight optional parameters, zero schema coverage, and no annotations, the description leaves most of the call contract unexplained; an output schema exists so return values need not be described, but scope selection, file output behavior, and reference-selection parameters remain opaque. This is far short of what an agent needs to invoke the tool correctly.

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?

Schema description coverage is 0%, and the description only indirectly touches one of eight parameters (format) by listing format names without tying them to the parameter or giving valid string values. scope, limit, titles, filename, template, search_id, and record_refs are entirely undocumented in both schema and description.

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?

The description states a concrete verb and resource (导出参考文献 / export citations) and enumerates the supported output formats, so an agent knows exactly what capability this is. It does not differentiate itself from siblings such as search_results or get_metadata, which also deal with reference data.

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?

There is no guidance on when to choose this tool over siblings, no mention of prerequisites (e.g. that references must be selected or a search_id supplied first), and no explanation of the 'selected' vs other scope values. The agent must guess the workflow context entirely.

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

get_metadataA

批量收集题录:按 record_ref、完整题名或 search_id 获取摘要/关键词/DOI 等。

local_only=true 时不联网;refresh=true 忽略 30 天缓存重读详情。 quality=true 时尝试补充期刊指标(WoS Starter API 无 JCR,会明确标注不可得)。

NameRequiredDescriptionDefault
siteNo
limitNo
scopeNoselected
fieldsNo
offsetNo
titlesNo
qualityNo
refreshNo
search_idNo
local_onlyNo
record_refsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and it does disclose real behavioral traits: local_only bypasses the network, refresh ignores a 30-day cache, and quality may fail to return JCR metrics because the WoS Starter API lacks them. It omits mutation/auth profile (implied read-only), pagination via limit/offset, and missing-record 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?

Three short, front-loaded lines: first the core action and selectors, then the flag semantics. Each sentence earns its place, and the unusual quality/cache caveats are stated compactly rather than buried.

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?

An output schema exists, so return values need not be spelled out, and the caching/quality caveats are covered. But for an 11-parameter, zero-required tool with no annotations, leaving scope/fields/limit/offset/site unexplained and offering no routing against siblings leaves the definition only minimally 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?

Schema coverage is 0% and there are 11 parameters, so the description must compensate: it explains record_refs/titles/search_id, local_only, refresh, and quality well beyond the field names. However, site, limit, offset, fields, and especially scope (default "selected") are left completely undefined in both schema and description, which is a substantial residual gap.

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?

"批量收集题录" gives a concrete verb (batch-collect records) plus the resource, and it enumerates the three lookup keys: record_ref, full title, or search_id, along with what is returned (abstract/keywords/DOI). That clearly separates it from discovery tools like search/structured_search, though no sibling is named explicitly.

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?

Listing record_ref/title/search_id as input modes implies you should use this once you already know what you want, rather than to discover papers. But there is no explicit when-to-use vs. search_results or export_citations, no statement about what happens when no selector is supplied (all 11 params are optional), and no prerequisites such as login.

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

list_sitesA

列出已注册站点及能力矩阵,用于发现哪些站点已可检索/下载。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does reveal the payload shape (sites plus a capability matrix), but says nothing about whether the call requires authentication, whether results are cached or live, or how large the response can be.

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?

A single sentence with the resource stated first and the purpose trailing it. Every clause earns its place and nothing is padded.

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?

The tool is simple (no parameters) and an output schema already documents the return values, so the description only needs to convey what is listed and why. That is covered; only auth/prerequisite behavior is left unstated.

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 takes zero parameters, so there is nothing for the description to disambiguate beyond the empty schema. Baseline 4 applies; no parameter gaps exist.

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?

The description states a specific verb and resource — listing registered sites together with their capability matrix — and adds the intent behind it (finding which sites are searchable/downloadable). That is clearly distinct from siblings like search or structured_search, though it does not explicitly name them.

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 clause '用于发现哪些站点已可检索/下载' implies the usage context: check availability before searching or downloading. It stops short of explicit when-not guidance or naming the alternative tools (search, structured_search, download_paper) an agent should call next.

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

loginA

打开独立浏览器窗口,由用户完成机构/个人登录。

万方/维普必须显式传 site(如 site="wanfang"),否则默认打开 WoS 登录页。 force=true 会清除已保存的会话后重新登录。

NameRequiredDescriptionDefault
siteNo
forceNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden; it discloses the key traits: the action is interactive and requires the user to act in a separate browser window, and force=true destroys a saved session before re-authenticating. It does not cover blocking or timeout behavior, or what happens if the user abandons the window.

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?

Three compact sentences, each carrying a distinct fact: what happens, the site requirement and default, and the force side effect. Nothing is repeated and the core behavior is front-loaded.

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?

Two parameters are both accounted for, and an output schema exists to cover return values, so the remaining need is low. Minor gaps are the lack of a pointer to list_sites for accepted site strings and no note on whether the call blocks until the user finishes.

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

Parameters5/5

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

Schema description coverage is 0%, so both parameters must be explained in prose, and they are: site controls which provider's login page opens, with an explicit example value and a stated default, and force controls whether the saved session is cleared. This adds real meaning beyond an untyped string and boolean in the 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?

The description gives a specific verb and resource: it opens a separate browser window so the user can complete institutional or personal login. That is far more informative than the name alone. It stops short of a 5 because it never names a sibling tool, such as session_status or list_sites, to contrast itself with.

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?

It clearly states when an explicit site value is mandatory (Wanfang/CQVIP) and what the default is otherwise (WoS login page), plus when to use force to clear a saved session. It does not say when to call login rather than check session_status first, and it gives no pointer to list_sites for valid site values.

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

operation_controlC

cancel 取消;continue 继续中断/预算耗尽的检索(可追加预算); resume 告知人工步骤完成;show 重显浏览器窗口;recover 重启浏览器。

NameRequiredDescriptionDefault
actionYes
operation_idNo
additional_secondsNo
additional_requestsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden, and it omits nearly all of it: whether cancel is irreversible, what state the operation lands in afterwards, whether recover destroys the existing browser session, or what permissions are needed. Only one behavioral detail surfaces — that continue can extend budget — which is far short of what a state-mutating control tool needs.

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?

A single semicolon-delimited line with action name first and meaning second, which scans well for an agent matching an action to an effect. No filler; the only cost is that the compact list format leaves no room for the conditions and constraints noted above.

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?

For a four-parameter, multi-mode control tool with no annotations, the description should map parameters to actions and state the effect of each mode. It does neither for the three optional parameters, and an output schema existing only relieves it of explaining return values, not of explaining control semantics.

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?

Schema description coverage is 0% across four parameters, so the description must compensate and largely does not. It documents the effective values of `action` (a genuine gain, since the schema declares no enum), but operation_id, additional_seconds and additional_requests are only obliquely gestured at by '可追加预算' — there is no statement of which actions require an operation_id or how the two budget parameters interact.

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?

The description enumerates five concrete action verbs (cancel, continue, resume, show, recover) and what each does to an in-flight operation/browser session, so the resource and effects are identifiable. It does not explicitly differentiate itself from the sibling operation_status, leaving the control-vs-inspect boundary implicit.

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?

Per-action conditions are given for two actions ('continue' is for interrupted or budget-exhausted searches; 'resume' is for when a manual step is done), which is real routing guidance. However cancel/show/recover have no stated preconditions, and the description never says when to call this instead of operation_status or what to do if the operation is unknown.

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

operation_statusA

查询任务进度与结果。

wait_seconds 最多 55 秒;任务完成或进入 awaiting_user 会提前返回。 省略 operation_id 时返回当前活动任务。

NameRequiredDescriptionDefault
operation_idNo
wait_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the key non-obvious behavior: this is a long-poll of up to 55 seconds that returns early on completion or when the task enters awaiting_user. The default-when-omitted behavior for operation_id is also stated. What is missing is error behavior for an invalid/expired operation_id and whether calls are concurrency-safe.

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?

Three short lines, front-loaded with the purpose, then the timing constraint, then the parameter fallback. Every sentence conveys information an agent needs and nothing is repeated from the schema.

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?

An output schema exists, so return-value documentation is not needed, and for a two-parameter read tool the description covers purpose, timing, and default targeting well. It falls short only on task-state vocabulary beyond awaiting_user and on failure modes, which matter for a polling tool with no annotations.

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 description coverage is 0%, so the description must compensate and largely does: it explains the 55-second ceiling on wait_seconds and the omit-to-get-active-task semantics of operation_id. It does not mention that wait_seconds defaults to 0 (i.e., non-blocking) or that operation_id is a string identifier, leaving some ambiguity about default polling behavior.

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?

"查询任务进度与结果" gives a specific verb (query) plus the resource and the two things it returns (progress, results). It is clearly distinguishable from operation_control (control) and session_status (session-scoped) by name, but the description never explicitly disambiguates itself from those siblings.

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?

Usage context is implied rather than stated: the agent learns it should call this to poll progress, and that omitting operation_id targets the current active task, which is a useful selection rule. However, it never says when to use operation_control or session_status instead, nor what happens if the operation has already finished or never existed.

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

search_resultsB

本地分页读取检索快照,不联网。

scope:selected(筛选结果)/ eligible(全部相关)/ candidates(全部候选) view:titles / compact / records

NameRequiredDescriptionDefault
viewNocompact
limitNo
scopeNoselected
offsetNo
search_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose two important traits: the operation is local-only (no network) and results are paginated. It omits what happens on an invalid or expired `search_id`, whether ordering across pages is stable, and any size/cost implications of the `records` view, which are meaningful for a paginated fetch.

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 text is short and front-loaded, with the core capability stated first and the two enumerated parameters set out as scannable lines. Every line does work; the only cost is that the extreme terseness leaves gaps that a slightly longer phrasing could close.

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?

An output schema exists, so return shapes need not be described, and the description covers the local/no-network model plus the two enumerated parameters. For a 5-parameter paginated read with zero annotation coverage it should still say something about `search_id` lifecycle and pagination interaction (limit/offset), which are the main ways an agent could misuse this tool.

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?

Schema description coverage is 0% across 5 parameters, so the description must compensate and it only partially does. It glosses `scope` values (selected/eligible/candidates) and lists `view` values (titles/compact/records) but never says what each view actually returns in terms of payload weight, and gives no meaning at all for `search_id`, `limit`, or `offset` beyond their self-evident names.

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?

The description states a specific verb and resource combination ('本地分页读取检索快照' - locally paginated read of a search snapshot) plus an operational constraint ('不联网' - no network). This clearly differentiates it from the sibling `search`/`structured_search` tools that presumably hit the network. It does not name those siblings explicitly, keeping it below a 5.

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 '不联网' (no network) clause and the required `search_id` imply this is the follow-up step to a prior search that materialized a snapshot, and the scope glosses hint at narrowing. However, there is no explicit statement of when to use this rather than re-running `search`, nor any exclusions or preconditions (e.g. snapshot expiry).

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

session_statusA

查看站点登录/会话状态;refresh=true 时用浏览器会话重新探测。

NameRequiredDescriptionDefault
siteNo
refreshNo

Output Schema

NameRequiredDescription

No output parameters

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 the whole burden, and it does disclose the one behavior that matters most: refresh=true performs a live browser-session probe rather than a passive check. It says nothing about the cost/latency of that probe, permission requirements, or what the non-refresh path actually consults (cache vs. cookie jar), leaving the mutation-adjacent side effects underspecified.

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?

A single semicolon-joined sentence with zero filler, and the primary purpose is front-loaded ahead of the refresh modifier. Nothing redundant is present.

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 two-parameter status tool whose output schema already defines the return shape, this is nearly sufficient: purpose plus the refresh behavior covers the core decision. The only real hole is the unexplained 'site' parameter, which matters because the tool is site-scoped.

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 for two undocumented properties. It explains 'refresh' well but leaves 'site' completely unaddressed — an agent cannot tell whether it takes a domain, a site key, or whether null means 'the default/active site'.

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?

The description gives a specific verb ('查看') plus a specific resource ('站点登录/会话状态'), so an agent knows immediately this reports authentication state rather than mutating anything. It does not name the nearest siblings (login, list_sites, diagnostics), so the differentiation from them must be inferred from the name.

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?

It supplies one useful conditional: set refresh=true to re-probe via the browser session. That implies the default path is a cheaper/cached read, but there is no explicit when-not guidance and no pointer to the login tool for the case where the status comes back unauthenticated.

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. 12 tool updatesv0.3.0
    • First observeddiagnostics
    • First observeddownload_paper
    • First observedexport_citations
    • First observedget_metadata
    • First observedlist_sites
    • First observedlogin
    • First observedoperation_control
    • First observedoperation_status
    • First observedsearch
    • First observedsearch_results
    • First observedsession_status
    • First observedstructured_search

TDQS

B3.4/5.0

Scored across 12 tools

Disambiguation4/5

Search vs structured_search is a clear split (natural language vs boolean DSL), and search_results (local snapshot paging) vs get_metadata (external metadata collection) are distinguished by scope and network use. Borderline pairs remain: operation_status vs operation_control both act on tasks, and diagnostics overlaps both by reporting 'current task' plus config/session-adjacent state, which could cause occasional misselection.

Naming Consistency4/5

Nearly everything is snake_case with a predictable verb_noun or noun_phrase shape (list_sites, get_metadata, download_paper, export_citations, session_status). Deviations are minor: bare nouns/verbs like search, login, diagnostics, and the noun-first trio search_results / structured_search / search don't sit in an obvious ordering.

Tool Count5/5

12 tools is well within a sane range for a multi-site literature workflow: discovery, querying, result reading, metadata, download, citation export, session handling, and task control. Each tool maps to a distinct stage, so nothing feels padded.

Completeness4/5

The lifecycle is covered end to end: site discovery, plain and boolean search, paged result review, metadata enrichment, full-text download, citation export, login/session, and long-running task control. Gaps are moderate: no way to register or configure a new site despite list_sites exposing a capability matrix, and no cross-site dedup/merge of duplicate records.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching, downloading, and exporting academic papers from 20+ scholarly sources including arXiv, PubMed, and Semantic Scholar. Supports multi-source concurrent search, citation network tracing, and export to CSV, RIS, and BibTeX.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables academic literature collection and full-text downloading from multiple sources (CNKI, Elsevier, OpenAlex, etc.) via natural language commands.
    3
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to search and retrieve academic literature from Web of Science and CNKI, with support for institutional login/SSO. Can be deployed locally on Windows or as a remote Linux server.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI to search, filter, and process CNKI academic literature through natural language, including structured search, metadata retrieval, full-text reading, citation export, and PDF/CAJ download.
    9
    9
    GPL 3.0