zotero-local-mcp
Provides read-only access to a local Zotero 7 library, enabling AI agents to search literature, browse collections and items, list tags, check connection status, and generate BibTeX citations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zotero-local-mcpsearch my library for recent papers on large language models"
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.
zotero-local-mcp
零配置、只读的 Zotero 本地 MCP Server —— 让所有主流 AI 都能用你的 Zotero 文献库。
让 Claude、Cursor、Windsurf、VS Code、Codex、Gemini CLI、Cherry Studio 等 AI 助手直接检索、浏览、引用你本机的 Zotero 文献库。 不需要申请 API Key,不需要装任何 Zotero 插件,所有数据都留在你自己的电脑上。
// 大多数客户端只需这几行,然后就能问:
// 「帮我找库里关于 deep learning 的论文」「给这篇生成 BibTeX」
{
"mcpServers": {
"zotero": { "command": "zotero-local-mcp" }
}
}✨ 特点
零配置 —— 不申请 Zotero API Key,不装 Better BibTeX 等任何插件
纯本地 —— 通过 Zotero 7 内置的本地 API(
127.0.0.1:23119)工作,数据不出电脑广泛兼容 —— 同时支持 stdio(桌面客户端)与 Streamable HTTP / SSE(Web 类客户端)两种传输
引用直达 ——
zotero_bibtex优先使用 Zotero 自带的 BibTeX 导出,失败时自动退回内置简化生成器离线友好 —— Zotero 没开会返回清晰的中英文排查指引,而不是晦涩报错
Related MCP server: zotero-mcp-lite
🧩 客户端兼容性
客户端 | 传输方式 | 支持 |
Claude Desktop | stdio | ✅ |
Claude Code | stdio | ✅ |
Cursor | stdio | ✅ |
Windsurf | stdio | ✅ |
VS Code(GitHub Copilot) | stdio | ✅ |
Codex CLI / Codex 桌面版 | stdio | ✅ |
Gemini CLI | stdio | ✅ |
ZCode | stdio | ✅ |
Cline / Roo Code(VS Code 插件) | stdio | ✅ |
Cherry Studio | stdio | ✅ |
Open WebUI / LobeChat / Dify 等 Web 端 | Streamable HTTP / SSE | ✅ |
任何支持 MCP 协议(stdio 或 Streamable HTTP)的客户端都可以接入。
🧰 提供的工具(8 个)
工具 | 作用 |
| 检查与本地 Zotero 的连接状态 |
| 关键词搜索文献(支持按标签过滤) |
| 列出最近添加/修改的文献 |
| 列出所有分类(集合) |
| 浏览某个分类下的条目 |
| 查看条目详情(摘要、DOI、附件、笔记数) |
| 列出文献库用过的标签 |
| 为一个或多个条目生成 BibTeX |
📦 安装
# 方式一:用 uv 运行(推荐,自动解决 Python 环境,无需手动装 Python)
uvx zotero-local-mcp
# 方式二:pip / pipx 安装
pip install zotero-local-mcp
pipx install zotero-local-mcp从源码安装:
git clone https://github.com/Zhang-rgb-r/zotero-local-mcp
cd zotero-local-mcp
pip install -e .前置条件:Zotero 7 或更高版本正在运行。Zotero 7 的本地 API 默认开启;如果没有,请在 「编辑 → 设置 → 高级」中勾选**「允许这台计算机上的其他应用程序与 Zotero 通信」**。
🔧 各客户端接入配置
以下配置任选其一。zotero-local-mcp 需在 PATH 中(pipx/pip 安装后即有);
如果用 uvx,把 command 换成 uvx、args 换成 ["zotero-local-mcp"] 即可免装 Python。
Claude Desktop(%APPDATA%\Claude\claude_desktop_config.json,macOS 为
~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"zotero": { "command": "zotero-local-mcp" }
}
}Cursor:设置 → MCP → Add MCP Server,或编辑 ~/.cursor/mcp.json,内容同上。
Windsurf(~/.codeium/windsurf/mcp_config.json):内容同上。
Cline / Roo Code(VS Code 内 MCP 设置文件 cline_mcp_settings.json):内容同上。
Cherry Studio:设置 → MCP 服务器 → 添加,类型选 STDIO,命令填 zotero-local-mcp。
Claude Code(终端一条命令):
claude mcp add zotero -- zotero-local-mcpVS Code(GitHub Copilot)(工作区 .vscode/mcp.json):
{
"servers": {
"zotero": {
"command": "zotero-local-mcp"
}
}
}Codex CLI(~/.codex/config.toml):
[mcp_servers.zotero]
command = "zotero-local-mcp"Gemini CLI(~/.gemini/settings.json):
{
"mcpServers": {
"zotero": { "command": "zotero-local-mcp" }
}
}ZCode:在 MCP 设置中添加同样的 mcpServers 结构,或参考客户端文档以 /mcp 方式添加。
Open WebUI / LobeChat / Dify 等 Web 端(先以 HTTP 模式启动服务):
zotero-local-mcp --transport http --port 8321
# SSE 模式:zotero-local-mcp --transport sse --port 8321然后在客户端里添加远程 MCP 地址:http://127.0.0.1:8321/mcp(SSE 模式为 http://127.0.0.1:8321/sse)。
💡 从源码安装时,把上面各配置里的 command 换成你的解释器路径、加 args: ["-m", "zotero_local_mcp"] 即可。
Zotero 不在默认地址时,可通过环境变量覆盖:ZOTERO_LOCAL_URL=http://127.0.0.1:23119。
💬 装好之后可以怎么用
「我库里有没有关于 transformer 注意力机制的论文?」
「列出最近一个月加进来的文献」
「我"强化学习"分类下都有什么?」
「给刚才那篇生成 BibTeX,我要贴进 LaTeX」
🧠 工作原理
Zotero 7 在本机 127.0.0.1:23119 提供了一个只读 HTTP API,
URL 结构与 api.zotero.org 一致。
本项目是它与 Model Context Protocol 之间的轻量桥梁:
把 MCP 工具调用翻译成对本地 API 的请求,并整理成对 AI 友好的紧凑输出。
项目为只读,不会修改你的文献库。
🆚 与其他方案对比
方案 | 需要 API Key | 需要插件 | 说明 |
zotero-local-mcp(本项目) | ❌ | ❌ | 本地库、只读、零配置、stdio+HTTP 双模式 |
基于 Zotero Web API 的方案 | ✅ | ❌ | 读写同步库,需去 zotero.org 申请密钥 |
基于 Better BibTeX debug-bridge 的方案 | ❌ | ✅ | 引用能力更强,但配置门槛高 |
🗺 Roadmap
写入支持(通过 connector 接口添加条目)
PDF 注释/高亮导出
与 Better BibTeX 集成,输出 CSL 引用格式
上架 PyPI,支持
uvx zotero-local-mcp一行运行演示 GIF
🛠 本地开发
python -m venv .venv
.venv\Scripts\pip install -e .
.venv\Scripts\python scripts\e2e_check.py # stdio 端到端测试(建议开着 Zotero 跑)
.venv\Scripts\python -m zotero_local_mcp --transport http --port 8321 # 起HTTP服务
.venv\Scripts\python scripts\http_probe.py # 验证 HTTP 传输
.venv\Scripts\python tests\mock_zotero_api.py # 没有 Zotero?先起模拟 API 再跑 e2eEnglish
zotero-local-mcp is a zero-config, read-only MCP server that lets AI assistants (Claude, Cursor, Windsurf, VS Code, Codex, Gemini CLI, ...) search and cite your local Zotero 7 library — no API key, no plugins, everything stays on your machine. Ships both stdio (desktop clients) and Streamable HTTP / SSE (web clients) transports.
pip install zotero-local-mcp
# or run without installing: uvx zotero-local-mcp
# web clients: zotero-local-mcp --transport http --port 8321 -> http://127.0.0.1:8321/mcpRequirements: Zotero 7 running locally. 8 tools: status / search / recent / collections / collection items / item detail / tags / BibTeX.
📄 License
Available Tools
8 toolszotero_bibtexA
为一个或多个条目生成 BibTeX 引用(简化版,适合快速引用)。
Generate BibTeX for one or more items. Tries Zotero's own BibTeX export first and falls back to a built-in simplified generator.
| Name | Required | Description | Default |
|---|---|---|---|
| item_keys | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. It discloses a key behavioral trait: it tries Zotero's native BibTeX export first, then falls back to a built-in simplified generator. It also notes the output is a 'simplified' version suited for quick citations, which informs expectations about output completeness.
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 is short and front-loaded with the action. However, it duplicates the same information in Chinese and English, which is unnecessary when both audiences can be served by a single concise message; still, the overall length is acceptable and each sentence adds context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers the core purpose and fallback behavior. Yet it omits practical details like key formats, how the output is returned, and when the fallback is triggered. Since annotations are absent and schema coverage is zero, the description is only minimally sufficient, not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only indicates the tool works for 'one or more items,' loosely mirroring the item_keys array, but fails to define what an item key is, where to obtain it, or how invalid/duplicate keys are handled. This is a significant gap for a parameter that is both required and untyped beyond 'array of strings.'
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: 'Generate BibTeX for one or more items.' It also clarifies scope ('one or more') and distinguishes itself from sibling tools like zotero_item or zotero_search, none of which target citation generation. The mention of a simplified generator adds further specificity.
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: it is for creating BibTeX citations, which none of the sibling tools do. However, the description does not explicitly say when to prefer this tool over alternatives or mention scenarios where it should not be used. There are no exclusions or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_collection_itemsB
列出某个分类下的条目。List top-level items inside a collection.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| collection_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds only the scoping detail 'top-level' (excluding subcollections/nested items) but does not mention pagination, default limit behavior, read-only nature, authentication needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, stating the core purpose in just two short sentences. There is no filler or irrelevant information, and the bilingual phrasing is redundant but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with only two parameters and an output schema, the description gives the essential purpose but omits practical usage context such as when to choose this over zotero_search or zotero_recent, and lacks behavioral details like limit defaults. It is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention collection_key or limit at all, adding no meaning beyond the parameter names and types. The names are self-explanatory, but the description offers zero parameter guidance.
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 action and resource: 'List top-level items inside a collection.' It clearly distinguishes this from sibling tools like zotero_collections (which lists collections) and zotero_item (which fetches a single item), making the purpose immediately identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. The description only states what it does, with no mention of exclusions, prerequisites, or when a sibling tool would be more appropriate. The sibling list exists but is not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_collectionsA
列出文献库中的所有分类(集合)。List all collections in the library.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of indicating safety and side effects. The verb 'List' implies a read-only operation, but the description does not explicitly state that nothing is modified, nor does it mention any limits, ordering, or whether empty collections are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded. The two sentences are parallel translations of the same clear statement, containing no filler or irrelevant details.
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 parameterless list operation with an output schema, the description is nearly complete. It fully communicates the tool's scope, though it could have added a brief note about the relationship to zotero_collection_items or the structure/nesting of collections.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the empty schema is fully self-documenting on that front. The description adds useful semantic emphasis with '所有/all', clarifying that the tool returns every collection without filtering.
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 ('List') and resource ('all collections in the library'), and the bilingual phrasing reinforces the meaning. It is clearly distinguishable from sibling tools like zotero_tags, zotero_collection_items, and zotero_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as zotero_collection_items or zotero_tags. The description only states what the tool does, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_itemA
查看单个条目的完整信息(摘要、页码、附件等)。
Show full metadata for one item, including abstract and attachment list.
| Name | Required | Description | Default |
|---|---|---|---|
| item_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. 'Show' implies a read-only lookup, and the description adds useful content expectations, but it does not explicitly say the operation is non-mutating or describe not-found/error behavior. The output schema covers return structure, so this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core idea: viewing a single item's full metadata. The bilingual repetition adds no new information, but it is compact enough that it does not become wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup tool with an output schema, the description covers the purpose and highlights key result contents. It does not explain how to obtain a valid item_key or what happens if the item is missing, but those gaps are minor given the tool's simplicity and available schema.
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 the undocumented item_key parameter. The phrase 'one item' ties the key to the item whose metadata will be shown, but the description does not explain the key's format or how to obtain it. For a single required parameter, this is enough to call correctly, though minimally.
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 ('Show') and resource ('full metadata for one item'), and names distinguishing contents such as abstract and attachment list. This separates it clearly from sibling tools like zotero_search and zotero_collection_items.
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 intended context is implied: use this when you have a single item key and need that item's full metadata. However, it does not explicitly say when to prefer this over zotero_search or zotero_recent, and it provides no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_recentC
列出最近添加/修改的文献。List recently modified top-level items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 does clarify that only top-level items are returned, which is useful, but it does not define what 'recent' means, describe ordering or pagination, or address whether the result is sorted by modification time. The Chinese phrase also claims added/modified while the English says modified, creating a transparency inconsistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core action stated immediately in both Chinese and English. The two sentences are redundant, but they do not waste much space. For such a simple tool, this level of conciseness is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple optional limit parameter and an output schema, the description is nearly adequate, but it leaves key contextual questions unanswered: how recent is 'recent', whether both additions and modifications are included, and what the default ordering is. The internal language mismatch also makes the exact scope unreliable for an agent.
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 single parameter 'limit' has no schema description and the main description does not mention it. With 0% schema description coverage, the description needed to compensate, but it adds no information about how the limit behaves or its relation to the result set. The parameter is self-explanatory from its name and default value, which prevents a score of 1.
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 operation: list recently modified top-level items in Zotero. It is clear and distinct from search/collection tools, though it does not explicitly contrast itself with siblings. The bilingual wording introduces a minor ambiguity between 'added/modified' (Chinese) and 'modified' (English), but the core purpose is still evident.
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 guidance about when to use this tool versus alternatives like zotero_search or zotero_item. The use case is only implied by the word 'recently' rather than stated. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_searchA
按关键词搜索文献库(标题/作者/年份等全字段匹配),只返回顶层条目。
Search the library by keyword; returns top-level items only (attachments excluded). 拿到 key 后用 zotero_item 查看详情,或 zotero_bibtex 生成引用。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the behavioral disclosure burden. It transparently states that the search performs full-field matching, returns only top-level items, and excludes attachments. This gives the agent important behavioral context beyond a simple 'search' verb, though it does not mention pagination or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose, but it duplicates the same information in Chinese and English, creating redundancy. The final sentence adds useful workflow guidance, but a more compact single-language description would be tighter.
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 description covers the main behavior and downstream workflow, and an output schema exists to document return values. However, it omits parameter-level detail for tag and limit, and does not address pagination behavior or any limits on result size, leaving some gaps for an agent trying 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%, so the description must compensate, but it only covers the query parameter indirectly through 'keyword search'. The tag and limit parameters are not described at all, leaving their exact semantics to inference from their names and defaults. This is a notable gap for a tool with three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a keyword search across the library with full-field matching (title/author/year), and specifies that only top-level items are returned. It distinguishes itself from sibling tools like zotero_item and zotero_recent by emphasizing the search scope and attachment exclusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear downstream routing: after obtaining a key, use zotero_item for details or zotero_bibtex for citations. It also states that attachments are excluded, which helps an agent decide when this tool is appropriate, though it does not explicitly list when-not-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_statusA
检查与本地 Zotero 的连接状态。Check whether the local Zotero server is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It states the core behavior (checking reachability), which implies a read-only, non-destructive operation, but it does not describe expected outputs on success or failure, error behavior, or side effects. For a simple zero-parameter check, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, stating the purpose in two parallel sentences. The bilingual duplication is mildly redundant, but the text is compact and free of filler, so it earns a high score.
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 zero parameters, a present output schema, and a simple health-check function, the description fully covers what an agent needs to invoke the tool correctly. The sibling list further clarifies that this tool is the connectivity check among content-focused tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter documentation burden on the description. The baseline for zero-parameter tools is 4, and the description correctly focuses on the tool's purpose rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('check') and resource ('local Zotero server reachability'), and it is distinct from sibling tools like zotero_search or zotero_recent, which deal with content retrieval. Both Chinese and English versions reinforce the same unambiguous purpose.
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 use this tool versus alternatives, no mention of prerequisites, and no exclusions. The description only states what the tool does; it does not explain that it should be used before other Zotero operations or how it fits into a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zotero_tagsB
列出文献库中使用过的标签。List tags used in the library.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states a read-only listing operation, but does not mention how the 'limit' parameter affects results, whether tags are sorted or deduplicated, or any access/rate-limit behavior. Basic behavior is present, but important operational details are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and action-first. The Chinese and English sentences are redundant, which wastes a little space, but the overall length is appropriate and the core operation appears immediately.
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 one-parameter list tool with an output schema, the description is minimally adequate. The output schema covers return shape, lowering the burden, but the lack of parameter behavior and usage context leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'limit' parameter at all. The property name and default value hint at its meaning, but the description adds no semantics beyond the input 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 states a specific action ('List') and resource ('tags used in the library'), and the resource is unique among siblings such as collections, items, and search. It is clear but does not explicitly contrast itself with a sibling, so it misses the strongest differentiation.
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 use case is implicitly clear: call this tool when you need the set of tags used in the Zotero library. However, there is no explicit guidance about when not to use it or how it relates to alternatives such as zotero_search or zotero_collection_items.
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. Dates show when Glama detected each change.
8 tool updates
v0.2.0- First observed
zotero_bibtex - First observed
zotero_collection_items - First observed
zotero_collections - First observed
zotero_item - First observed
zotero_recent - First observed
zotero_search - First observed
zotero_status - First observed
zotero_tags
TDQS
Each tool targets a distinct aspect of the Zotero library: status, search, recent items, collections, collection contents, item details, BibTeX export, and tags. There is no meaningful overlap, and the descriptions clarify when to use each tool.
All tools share the zotero_ prefix and use snake_case, forming a recognizable pattern. Minor inconsistency exists because some names are noun-oriented (collections, item) while others are verb- or adjective-oriented (search, recent), but the pattern is still predictable.
Eight tools is well-scoped for a local Zotero library MCP. Each tool covers a necessary read-only operation without redundancy or bloat.
The tool set covers the main read-only workflows: checking connectivity, finding items, browsing collections, inspecting item details, and generating citations. The documented flow from search to item detail to BibTeX export shows no obvious dead ends or missing essential operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Academic literature search, retrieval, and private library management on top of OpenAlex.
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Related MCP Servers
- MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to search, read, and manage Zotero references locally with customizable research workflows.94MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to search, cite, and manage research references directly from a Zotero library.97-
- AlicenseNot gradedqualityBmaintenanceEnables natural language interaction with Zotero libraries, allowing users to search, retrieve, and update papers and metadata via AI assistants like Claude and Gemini.1GPL 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zhang-rgb-r/zotero-local-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server