Zotero MCP Server
Provides programmatic access to a Zotero library, allowing users to search papers, manage notes, and access repository content through the MCP server
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 MCP Serverfind papers about machine learning ethics from the last 2 years"
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 MCP Server
A MCP (Model Context Protocol) server to let your MCP clients (e.g. Anthropic Claude App, Goose, possibly vscode Cline too) interact with your local Zotero repository. This server enables programmatic access to your Zotero library, allowing you to search papers, manage notes, and more.
Note: If you don't want to set up API keys, see the SQLite database server option below.
Setup
Install dependencies:
pip install -e .Create a
.envfile in the root directory with your Zotero credentials:
ZOTERO_API_KEY=your_api_key_here
ZOTERO_USER_ID=your_user_id_hereYou can get your Zotero API key and user ID from Zotero's settings page.
Related MCP server: zotero-mcp
Integration with Anthropic Desktop App
To integrate with the Anthropic Desktop app, add the following configuration to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"zotero-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/Users/swairshah/work/research/zotero-mcp",
"run",
"python",
"-m",
"zotero_mcp.server"
]
}
}
}If this gives an error like
{"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0}
error: unexpected argument '--directory' foundThen use the following config, make sure to do uv venv; source .venv/bin/activate; uv pip install ".[dev]" to make sure the server can be run with all dependencies.
{
"mcpServers": {
"zotero-mcp-server": {
"command": "bash",
"args": [
"-c",
"cd /Users/shahswai/personal/zotero-mcp-server && source .venv/bin/activate && python -m zotero_mcp.server"
]
}
}
}Alternative: Direct SQLite Database Access
If you prefer to bypass the Zotero API entirely and work directly with the SQLite database, use zotero_mcp/db_server.py. This approach gives you full control over your Zotero data without API limitations. Note that you'll need to close Zotero completely before using this method since SQLite locks the database when Zotero is running.
Claude MCP config for the SQLite version:
{
"mcpServers": {
"zotero-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/Users/swair/work/code/zotero-mcp-server",
"run",
"python",
"-m",
"zotero_mcp.db_server"
]
}
}
}Example Usage

The server allows you to:
Search papers by tags
Get paper details and attached notes
Add notes to papers
Request paper summaries
Available Tools
10 toolsget_childrenA
Get child items (attachments, notes) of a Zotero item.
Args: key: The Zotero item key.
Returns: JSON array of child items.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states it returns a JSON array, but lacks details on side effects, permissions, or limits. 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?
Short, structured with Args and Returns, no wasted words. Efficient and clear.
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 get operation with one parameter and output schema, description covers core purpose and return type. Could mention more about edge cases, but adequate.
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?
One required parameter 'key' with description 'The Zotero item key'. Adds a bit of meaning beyond schema title, but minimal. Schema coverage is 0%, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get' and resource 'child items (attachments, notes) of a Zotero item', distinguishing from siblings like get_item or 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 explicit guidance on when to use or when not to use this tool; only implied context from the description. No mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_citationsA
Find papers that cite a given paper using Semantic Scholar.
Args: doi: DOI of the paper. limit: Maximum results (default 100, max 1000). min_citations: Minimum citation count filter. check_library: If true, annotate results with local Zotero presence.
Returns: JSON with count and papers list.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | ||
| limit | No | ||
| check_library | No | ||
| min_citations | 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 bears the full burden. It discloses the use of Semantic Scholar, the return format (JSON with count and papers list), and the check_library behavior. However, it does not mention rate limits, authentication needs, or confirm that it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear separation of Args and Returns sections. It avoids unnecessary fluff, though it could be slightly more structured (e.g., using bullet points for Args).
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 presence of an output schema (though not detailed in description), the tool is adequately described. Input parameters are explained, the data source is identified, and the return structure is summarized. Sibling context is known from the list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides brief yet meaningful explanations for all four parameters (doi, limit, min_citations, check_library) beyond their types and defaults. This adds sufficient context for agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'papers that cite a given paper' using Semantic Scholar. It distinguishes itself from siblings like 'search_semantic_scholar' (general search) and 'get_references' (likely referenced papers).
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 for citation lookups but does not explicitly state when to use this tool versus alternatives (e.g., 'find_related', 'search_semantic_scholar'). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fulltextA
Get full-text content of a Zotero attachment.
Args: key: The key of an attachment item (not a top-level item).
Returns: JSON with content, indexedPages, and totalPages.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
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 full burden. It discloses the return JSON structure (content, indexedPages, totalPages) and the constraint that key must be an attachment item, which is sufficient for a read-only operation.
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: one line for purpose, then Args and Returns sections. Every sentence adds value with no redundancy.
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 is complete: it clarifies the input requirement and describes the output fields, matching the output schema. No additional context needed.
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%, so description must compensate. It explains the sole parameter 'key' as 'The key of an attachment item (not a top-level item)', adding meaning beyond the schema's bare 'string' type.
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 'Get full-text content of a Zotero attachment', which specifies a clear verb and resource. It distinguishes from siblings like 'get_item' (which gets metadata) and 'get_children' (which gets child 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 description clarifies that the key must be for an attachment item, not a top-level item, guiding correct usage. It doesn't explicitly mention when not to use, but the scope is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itemC
Get a single Zotero item by its key.
Args: key: The Zotero item key.
Returns: JSON with the full item data.
| Name | Required | Description | Default |
|---|---|---|---|
| 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 full burden. It merely states the return is 'JSON with the full item data,' lacking details on side effects, authentication needs, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded with the main purpose. However, it is slightly under-specified for a production tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (reducing need to document return values), the description omits error conditions, key constraints (e.g., key format), and usage context relative to sibling tools, making it minimally adequate.
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 parameter 'key' is described as 'The Zotero item key,' adding minimal value over the schema property name. Schema description coverage is 0%, so the description should compensate but does not provide type, format, or source hints.
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 'Get a single Zotero item by its key,' identifying the verb (Get), resource (Zotero item), and method (by key). However, it does not explicitly distinguish this from sibling tools like get_children or get_citations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. There is no mention of preconditions, criteria, or when not to use it, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_referencesA
Find papers referenced by a given paper using Semantic Scholar.
Args: doi: DOI of the paper. limit: Maximum results (default 100, max 1000). min_citations: Minimum citation count filter. check_library: If true, annotate results with local Zotero presence.
Returns: JSON with count and papers list.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | ||
| limit | No | ||
| check_library | No | ||
| min_citations | 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, increasing the burden on the description. It discloses behavior such as the check_library annotation feature, return JSON format, and default/max limits. However, it omits potential rate limits or authentication 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?
The description is concise with a clear one-line purpose, structured Args list, and Returns section. It avoids unnecessary detail but is slightly verbose with the Returns line repeating 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?
The description covers the tool's purpose, parameters, and return format. With an output schema present, it doesn't need to detail return fields. It lacks information on prerequisites or side effects, but for a lookup tool, it is sufficiently 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 coverage is 0%, but the description adds meaningful parameter explanations (e.g., 'doi: DOI of the paper,' 'limit: Maximum results (default 100, max 1000)'). This compensates for the lack of schema descriptions, though min_citations could be more detailed.
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 'Find papers referenced by a given paper using Semantic Scholar,' providing a specific verb and resource. It distinguishes references from citations (sibling get_citations) and other related tools.
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 does not explicitly state when to use this tool versus alternatives, nor does it list exclusions. It implicitly suggests use for references, but lacks guidance on when not to use it or mention of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsA
List all collections in the local Zotero library.
Args: limit: Maximum number of collections to return (0 for all).
Returns: JSON array of collections with id, name, items count, and parent info.
| 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 provided, so description must convey behavior. It states return type and fields but omits side effects, permissions, or pagination details. Adequate but not comprehensive.
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?
Extremely concise: two sentences plus parameter/return details. No superfluous text, every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides return format information despite presence of output schema. Covers parameter meaning. Lacks usage context among 9 sibling tools, but given simplicity, it is mostly 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?
With 0% schema description coverage, the description adds critical meaning: explains that limit=0 returns all collections, clarifying the default behavior beyond the schema's integer type.
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?
Clear verb 'List' with specific resource 'collections' and scope 'local Zotero library'. Distinguishes from sibling tools like search and list_tags by focusing on listing all collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention exclusions or prerequisites, leaving the agent to infer use cases from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsA
List all tags in the Zotero library, optionally filtered by collection.
Args: collection: Optional collection key to filter tags.
Returns: JSON array of tag strings.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | 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 must carry behavioral info. It states the return format (JSON array of strings) but does not disclose read-only nature, pagination, or side effects. The 'List' verb implies safety, but explicit mention of read-only would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with the main purpose in the first sentence. 'Args' and 'Returns' sections are well-structured. No redundant or unnecessary content.
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 with one parameter, and an output schema exists (though not shown) to cover return details. The description explains the return format. Edge cases like invalid collection keys are not covered, but for a basic list tool this is acceptable.
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?
With 0% schema description coverage, the description adds meaning by specifying that 'collection' is an optional key for filtering tags. This clarifies the parameter's purpose beyond the schema's bare name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'all tags in the Zotero library', with optional filtering by collection. It distinguishes from siblings like list_collections (collections) and search (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 description implies use for listing tags, but does not explicitly state when to use this tool versus alternatives (e.g., list_collections or search). No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Search the local Zotero library.
Args: query: Search query string. fulltext: If true, search full-text content including PDFs. itemtype: Filter by item type. Use || to combine types, e.g. "book || journalArticle". collection: Filter by collection key. tag: Filter by tag. Use comma-separated values for AND search, e.g. "climate,adaptation". limit: Maximum results to return (default 50). offset: Number of results to skip for pagination.
Returns: JSON with count and items list.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| query | No | ||
| offset | No | ||
| fulltext | No | ||
| itemtype | No | ||
| collection | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description mentions returns JSON with count and items list. Missing details on permissions, rate limits, or error behavior. Sufficient for a read operation.
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?
Well-structured with Args and Returns sections, using concise bullet points. No redundant info; every sentence serves a purpose.
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 7 optional parameters with no required inputs and an output schema present, the description covers all parameter behaviors and return shape comprehensively.
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 has 0% description coverage; description provides detailed semantics for all 7 parameters (e.g., tag: comma-separated AND search, itemtype: || operator). Adds substantial value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with 'Search the local Zotero library,' clearly stating the tool's action and scope. It distinguishes from siblings like get_item (single item retrieval) and search_semantic_scholar (external 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?
Each parameter includes usage instructions (e.g., 'Use || to combine types'). However, no explicit guidance on when to use this tool over siblings like search_semantic_scholar, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_semantic_scholarA
Search for papers on Semantic Scholar.
Args: query: Search query string. limit: Maximum results (default 20, max 100). year: Year filter, e.g. "2020", "2018-2022", or "2020-". open_access: Only return open access papers. sort: Sort by "citations" or "year" (descending). min_citations: Minimum citation count filter. check_library: If true, annotate results with local Zotero presence.
Returns: JSON with count, total, and papers list.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| year | No | ||
| limit | No | ||
| query | Yes | ||
| open_access | No | ||
| check_library | No | ||
| min_citations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full responsibility. It details parameters, defaults, and return format. It discloses the check_library annotation behavior. It does not mention rate limits or auth, but for a read-only search, this is acceptable.
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 structured with clear Args and Returns sections. It is concise, with no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all 7 parameters and the return format. Given the tool's complexity and presence of an output schema, it is sufficiently complete. It lacks edge cases or error handling, but this is acceptable for a search 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?
With 0% schema description coverage, the description adds meaning by briefly describing each parameter (e.g., 'Search query string', 'Maximum results (default 20, max 100)'). This compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for papers on Semantic Scholar. It uses a specific verb ('Search') and resource ('papers on Semantic Scholar'), which distinguishes it from sibling tools like search (likely local) and get_citations.
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 does not explicitly state when to use this tool versus alternatives. It implies its purpose but lacks guidance on when not to use it or comparison to sibling tools like find_related or get_references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a clearly distinct purpose: local Zotero operations (list_collections, list_tags, search, get_item, get_children, get_fulltext) and Semantic Scholar operations (find_related, get_citations, get_references, search_semantic_scholar). Within each group, tools are differentiated by specific actions (e.g., find_related vs. get_citations vs. get_references). There is no ambiguity.
All tool names follow a consistent verb_noun pattern using lowercase and underscores (e.g., list_collections, get_item, search_semantic_scholar). The verbs appropriately reflect the action: 'list' for enumerations, 'get' for retrieving single items, 'search' for queries, and 'find_related' for semantic similarity. No mixing of conventions.
With 10 tools, the surface is well-scoped for a Zotero integration. It covers both local library management (6 tools) and external Semantic Scholar access (4 tools), providing a balanced set without unnecessary overlap or missing core functionality. The count is ideal for an MCP server.
The server provides robust read operations for Zotero items and comprehensive Semantic Scholar functionality. However, it lacks any write operations (create, update, delete) for Zotero library items or collections, which is a notable gap for a library management server. The tool set appears read-only, limiting its utility for full library management.
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
Remote MCP server for full read/write access to a Zotero library
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseAqualityCmaintenanceRead-only MCP server that lets Claude or any MCP client search and retrieve metadata, notes, full text, citations, and BibTeX from your local Zotero library via its built-in API.11MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that connects AI assistants to your Zotero library, enabling full-text PDF extraction and metadata search.MIT
- AlicenseAqualityAmaintenanceAn MCP server that gives AI assistants complete, safe access to your Zotero library for searching, citing, adding papers, and formatting bibliographies, with local-first privacy.302,50230MIT
- AlicenseNot gradedqualityCmaintenanceThis MCP server enables AI assistants like Claude to read and search your local Zotero bibliographic database directly from your machine.8MIT
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/swairshah/zotero-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server