Academic Literature MCP (Multi-site)
Click on "Deploy 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., "@Academic Literature MCP (Multi-site)Search Web of Science and CNKI for algorithmic management, then export APA citations"
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.
学术文献 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下才会被读取。
工具
工具 | 作用 |
| 站点与能力矩阵 |
| 研究检索:概念规划、多通道、去重、增强、反馈、评分 |
| 布尔表达式( |
| 本地分页读取检索快照,不联网 |
| 批量题录补全,可 |
| WoS:订阅会话 → 开放获取 → 出版商页面;万方/维普/知网:机构会话详情页下载;知网支持 PDF/CAJ |
| GB/T 7714、APA、MLA、Chicago、Vancouver、BibTeX、RIS、EndNote、CSL-JSON、JSON、CSV、Markdown、custom |
| 四站会话状态与登录(中文站点需显式传 |
| 长轮询、取消、继续、恢复浏览器 |
| 本地诊断,不联网 |
典型调用
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")设计要点
任务化:联网工具返回任务信封,
operation_status(wait_seconds<=55)长轮询; 中断可continue,已抓取的详情不会重复请求。单一节流点:所有请求先扣预算、再取限速槽位;验证码时全局暂停新请求。
能力协商:站点声明
SiteCapabilities,缺失能力返回明确错误,流水线自动降级。站点只做翻译:查询编译、响应解析、下载解析属于适配器;去重、评分、筛选、 存储、引文属于通用层。
证据边界:
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配置项
变量 | 默认 | 说明 |
|
| 数据库、下载、导出、浏览器 profile |
| — | Clarivate API Key(检索必需) |
| 官方 Starter API | 便于代理/测试 |
|
| WoS 数据库缩写 |
|
| 启用机构订阅 PDF 通道 |
| — | 开放获取查询的联系邮箱 |
|
| 请求间隔 |
|
| 并发上限 |
|
| 工具调用内等待时间 |
|
| 登录/验证建议保持有头 |
| 自动 | 留空自动用 Edge,其次 Chrome;可强制 |
| — | 非标准安装路径时指定浏览器可执行文件 |
| — |
|
| — |
|
|
| 凭证 JSON(明文,建议 600 权限) |
|
| 会话状态缓存秒数 |
|
| 启用的站点 |
测试
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 toolsdiagnosticsA
本地检查:配置、数据量、浏览器依赖、限速与当前任务;不联网。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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。
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | ||
| site | No | ||
| retry | No | ||
| title | No | ||
| format | No | auto | |
| record_ref | No | ||
| subdirectory | No | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| scope | No | selected | |
| format | No | gbt7714 | |
| titles | No | ||
| filename | No | ||
| template | No | ||
| search_id | No | ||
| record_refs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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,会明确标注不可得)。
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| limit | No | ||
| scope | No | selected | |
| fields | No | ||
| offset | No | ||
| titles | No | ||
| quality | No | ||
| refresh | No | ||
| search_id | No | ||
| local_only | No | ||
| record_refs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
列出已注册站点及能力矩阵,用于发现哪些站点已可检索/下载。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 会清除已保存的会话后重新登录。
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 重启浏览器。
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| operation_id | No | ||
| additional_seconds | No | ||
| additional_requests | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 时返回当前活动任务。
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | No | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
searchC
按研究问题检索学术文献(默认 Web of Science)。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | balanced | |
| site | No | ||
| sort | No | relevance | |
| limit | No | ||
| query | Yes | ||
| options | No | ||
| year_to | No | ||
| year_from | No | ||
| concept_groups | No | ||
| document_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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, yet it only discloses the default source (Web of Science). It says nothing about authentication requirements, rate limits, whether results are paginated or truncated at 'limit', or what makes 'mode' (default 'balanced') change behavior. For a 10-parameter search tool with zero annotation coverage, this is a significant gap.
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?
It is a single, tightly written sentence with no padding, and the core action is front-loaded. Its brevity is a virtue in form but the space saved is not reallocated to the missing parameter and usage detail, which is penalized in other dimensions.
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?
An output schema exists, so return values need not be explained, but for a 10-parameter search tool with no annotations and no schema descriptions, the definition leaves the agent without guidance on mode, filtering, sorting, or how this differs from 'structured_search'. It is far too thin for the tool's complexity.
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%: the schema gives bare titles and defaults (mode, site, sort, limit, year_from, year_to, concept_groups, document_types, options) with no meaning. The description only hints that 'query' is a research question and that 'site' defaults to Web of Science; the other eight parameters receive no semantic explanation in either the schema or the 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 identifies a specific verb and resource ('按研究问题检索学术文献') and names a default source (Web of Science), so the agent knows this is a literature search. However, it does not distinguish the tool from the sibling 'structured_search' or 'search_results', so an agent cannot tell which search entry point is appropriate without opening both schemas.
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 phrase '按研究问题' implies that this tool is meant for research-question-level queries rather than fielded or structured queries, providing only the faintest usage context. The description names no alternatives, gives no when-to-use or when-not-to-use guidance, and says nothing about prerequisites such as login or site selection, even though a 'login' and 'list_sites' sibling exist.
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
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | compact | |
| limit | No | ||
| scope | No | selected | |
| offset | No | ||
| search_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 时用浏览器会话重新探测。
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| refresh | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
structured_searchB
布尔表达式精确检索:叶子 {field,value,match},组合 {op:and|or|not,items}。
字段:title、topic、abstract、author(s)、source、doi、document_type、 issn、accession、organization、pmid、year。match 为 phrase(默认)或 exact。
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| sort | No | relevance | |
| limit | No | ||
| options | No | ||
| year_to | No | ||
| year_from | No | ||
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavior for the expression itself: allowed operators, the default of `match: phrase` versus `exact`, and the exact field vocabulary. It says nothing about what happens on malformed expressions, how `site` scopes results, auth/rate limits, or pagination behavior, which leaves substantial behavioral ground uncovered.
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 compact sentences with the grammar front-loaded and the valid field list following it; every element is load-bearing. The structure is terse but readable, with 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?
Given a nested, free-form object as the required argument, the description gives the minimum an agent needs to build a valid expression. It stops short of covering the six sibling parameters and the year_from/year_to versus `year` overlap, which is a real ambiguity for a 7-parameter tool, though the existing output schema reduces the need to describe results.
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% across 7 parameters, so six of them (site, sort, limit, options, year_from, year_to) are documented nowhere. The description compensates strongly for the required `expression` parameter by spelling out its nested shape and field names, but it never clarifies how year_from/year_to relate to the `year` field inside the expression or what `options` accepts, so the gap is only partly filled.
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 names a specific mechanism: boolean-expression retrieval where a leaf is {field,value,match} and a node is {op:and|or|not,items}, and it enumerates the queryable fields. An agent can tell this is the precise/structured query tool, but nothing in the text distinguishes it from the sibling `search` tool, so it falls short of a 5.
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?
There is no explicit statement about when to use this tool instead of `search` or `search_results`, and no exclusions or preconditions. Precise boolean semantics are implied by the grammar, but the choice between this and a plain keyword search is left entirely to inference.
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.
12 tool updates
v0.3.0- First observed
diagnostics - First observed
download_paper - First observed
export_citations - First observed
get_metadata - First observed
list_sites - First observed
login - First observed
operation_control - First observed
operation_status - First observed
search - First observed
search_results - First observed
session_status - First observed
structured_search
TDQS
Scored across 12 tools
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.
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.
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.
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
Related MCP Connectors
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Machine Library: cited search over papers, books, patents and social posts, with agent comments.
Search research, revise drafts, format references and export your Citation documents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables academic literature collection and full-text downloading from multiple sources (CNKI, Elsevier, OpenAlex, etc.) via natural language commands.3MIT
- FlicenseNot gradedqualityAmaintenanceEnables 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-
- AlicenseAqualityBmaintenanceEnables 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.99GPL 3.0