Side Projects

Hardening Literature Import for Zotero MCP 2026

Problem

Managing research literature through an LLM still broke at a basic task: adding a paper to Zotero from a DOI or arXiv ID. The flow depended on brittle manual steps for resolving metadata, finding a PDF, and filing the item. PR #83 established the foundation; I set out to harden it for real model-generated calls in zotero-mcp, a 4.6k-star open-source project.

Role

Open-source contributor

Timeline

March 4–22, 2026

Team

Yusheng Chen (uilfl) · zotero-mcp maintainers

Skills

Python · MCP tool design · Crossref and arXiv APIs · Testing · Documentation

Closed — not mergedView pull request #135
GitHub conversation page for zotero-mcp pull request 135 showing the Closed badge, nine commits, four changed files, and the contribution summary

PR #135 as submitted: 9 commits and +2,496 −2 across 4 files. GitHub marks it Closed; the pull request itself was not merged.

Approach

I designed an identifier-import pipeline that normalizes DOI and arXiv variants, resolves metadata through Crossref and arXiv, and discovers a PDF before attaching it as auto, import_file, or linked_url. I also made update_item treat a supplied collection list as a strict replacement, explicitly removing old memberships and adding the requested ones.

The key LLM-ergonomics insight was that tool boundaries must tolerate predictable generation errors. The _normalize_str_list_input helper accepts a real list, a JSON-encoded string, or a comma-separated string, then produces one consistent value for the tool logic without making its data semantics ambiguous.

GitHub files changed view for pull request 135 showing added README prompts for DOI and arXiv import, item updates, and collection management

The documentation diff made the new workflows legible to both people and models; two new test suites added about 735 lines around identifier import and item management.

Outcome

Status:This PR was closed, not merged. The maintainer wrote: "Closing — DOI/identifier import, PDF attachment, and collection management features have been merged via add_by_doi, add_by_url, add_from_file, and update_itemtools. Thanks for the extensive work!"

The capabilities therefore landed upstream in equivalent form, while PR #135 remained a closed contribution. Its concrete output was the end-to-end design, documentation, and roughly 735 lines of tests that made identifier parsing, PDF fallback behavior, and collection-replacement edge cases explicit.

LinkedIn·yushengchen.uxr.build@gmail.com
© 2026 Yusheng Chen. All Rights Reserved.