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.

Recommended pairing

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 file (typically a 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zotero_mcp_server_write-0.1.3.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zotero_mcp_server_write-0.1.3-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file zotero_mcp_server_write-0.1.3.tar.gz.

File metadata

  • Download URL: zotero_mcp_server_write-0.1.3.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for zotero_mcp_server_write-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0d9a697da124b7203d9a7ef29d4432bf97e359766a51b1fd5ee175d1dc20972e
MD5 9a5028544bbef37ccbe0f9a8b6c6fe2f
BLAKE2b-256 b3ea1a6509deb4ff8749f2b1a84b9c4284480ee563a45fe9ada6a2c9be70558a

See more details on using hashes here.

File details

Details for the file zotero_mcp_server_write-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: zotero_mcp_server_write-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for zotero_mcp_server_write-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ddc2f3d3e94d09f63f0d4679c7dd4dbfc6eb25e6f3b3e1cb256fed2eb995f057
MD5 1acd6fb6a886939618fc17ee21c4e85d
BLAKE2b-256 27afd1cc94725970dbf25dc671ae18a15fd040d99950fa4ca78c54f4ebe04c6e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

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