zotero-local-mcp
Server Quality Checklist
Latest release: v0.2.0
- Disambiguation5/5
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.
Naming Consistency4/5All 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.
Tool Count5/5Eight tools is well-scoped for a local Zotero library MCP. Each tool covers a necessary read-only operation without redundancy or bloat.
Completeness5/5The 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.
Average 3.5/5 across 8 of 8 tools scored. Lowest: 2.7/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 2 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- 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 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.
Conciseness4/5Is 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.
Completeness2/5Given 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.
Parameters2/5Does 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.
Purpose4/5Does 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.
Usage Guidelines2/5Does 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.
- Behavior2/5
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.
Conciseness4/5Is 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.
Completeness3/5Given 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.
Parameters2/5Does 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.
Purpose4/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior2/5
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.
Conciseness5/5Is 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.
Completeness3/5Given 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.
Parameters2/5Does 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.
Purpose5/5Does 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.
Usage Guidelines2/5Does 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.
- Behavior4/5
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.
Conciseness4/5Is 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.
Completeness3/5Given 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.
Parameters2/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior3/5
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.
Conciseness4/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines2/5Does 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.
- Behavior4/5
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.
Conciseness3/5Is 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.
Completeness3/5Given 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.
Parameters2/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior3/5
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.
Conciseness4/5Is 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.
Completeness5/5Given 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.
Parameters4/5Does 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.
Purpose5/5Does 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.
Usage Guidelines2/5Does 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.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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