Skip to main content

zotero-mcp-server-write

A Model Context Protocol (MCP) server that exposes the write operations of a local Zotero installation to LLM agents. It is a thin async wrapper around the companion zotero_write_api_plugin Zotero plugin, which adds HTTP endpoints to Zotero's built-in local server on http://127.0.0.1:23119. Together they let an agent import items by DOI, ingest PDFs with Zotero's metadata recognizer, attach files to existing items, and add formatted notes.

Prerequisite

You must install the zotero_write_api_plugin XPI in Zotero before this MCP server can do anything useful. Download the latest release from github.com/akchan/zotero_write_api_plugin/releases and install it via Tools → Add-ons → Install Add-on From File… in Zotero. Make sure Zotero is running whenever you use the MCP server.

This server only covers writes. For reads (searching the library, browsing collections, fetching item metadata, getting tags, etc.) install 54yyyu/zotero-mcp alongside it. The two together give an agent a complete view-and-edit surface over your local Zotero library. The tool descriptions in this server explicitly point at 54yyyu/zotero-mcp as the way to discover item_key and collection_key values.

Install / run

The server is published to PyPI as zotero-mcp-server-write:

# Run on-demand with uv (recommended; matches the Claude Desktop config below)
uvx zotero-mcp-server-write

# Or install with pip into a virtual environment / globally
pip install zotero-mcp-server-write
zotero-mcp-server-write

The console-script entry point has the same name as the package.

Tools

Tool Description
add_by_doi Import a new item from a DOI / ISBN / arXiv ID / PMID (type auto-detected).
add_pdf Import a local PDF, then run Zotero's metadata recognizer to find a parent item.
attach_pdf_to_item Attach a local PDF to an existing Zotero item by item_key.
add_note Add a child note to an existing item. Accepts markdown (rendered to HTML) or raw HTML.
update_note Replace the body of an existing note item (markdown or raw HTML).
add_tags Add one or more tags to an existing item. Already-present tags are skipped, not errored.

Claude Desktop config example

Register both the read server and this write server side-by-side:

{
  "mcpServers": {
    "zotero-mcp": {
      "command": "uvx",
      "args": ["zotero-mcp"]
    },
    "zotero-mcp-server-write": {
      "command": "uvx",
      "args": ["zotero-mcp-server-write"],
      "env": {
        "ZOTERO_LOCAL_API_BASE": "http://127.0.0.1:23119",
        "ZOTERO_WRITE_TIMEOUT": "60"
      }
    }
  }
}

Environment variables

Variable Default Purpose
ZOTERO_LOCAL_API_BASE http://127.0.0.1:23119 Base URL of Zotero's local HTTP server (where the plugin is hooked in).
ZOTERO_WRITE_TIMEOUT 60 (seconds) Per-request HTTP timeout for the plugin endpoints.

Out of scope

  • Group libraries. Only the user's local library is targeted; group library writes are not supported by the underlying plugin.
  • Collection management. This server does not create, rename, delete, or reassign collections. Tag addition is supported via add_tags, but renaming/removing tags is not. Use 54yyyu/zotero-mcp for read access to those structures and edit them in the Zotero UI when needed.

License

MIT, see LICENSE.

Metadata

Release files for zotero-mcp-server-write 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zotero-mcp-server-write 0.1.5
File Size Uploaded Provenance Actions
zotero_mcp_server_write-0.1.5.tar.gz 12.2 kB Without provenance Details for zotero_mcp_server_write-0.1.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for zotero-mcp-server-write 0.1.5
File Interpreter ABI Platform Actions
zotero_mcp_server_write-0.1.5-py3-none-any.whl Python 3 none any Details for zotero_mcp_server_write-0.1.5-py3-none-any.whl

Total release size: 22.7 kB

Release files / zotero_mcp_server_write-0.1.5.tar.gz

Download URL zotero_mcp_server_write-0.1.5.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
789c78d4fa913fe17091f4ddad063d77468ad905409cea63f41e4da8756822b1
BLAKE2b-256 checksum
How to use checksums
1c3f3e72c8cbee67433970b851ba423e380a1abe32e37f0ee0f181298f2fb536
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zotero_mcp_server_write-0.1.5-py3-none-any.whl

Download URL zotero_mcp_server_write-0.1.5-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d63b3f76b3310f6c262110d37abf645b4a385ca434b9d0587e44495a9487bad
BLAKE2b-256 checksum
How to use checksums
62e5b48b427cda06618c40bbcce1375b5c2074a054454b8be637719838ca651d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for zotero-mcp-server-write 0.1.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page