Sharing my Zotero-MCP + Claude Skill setup

I have a pretty large Zotero library, about 9k entries, in a couple of languages. I recently installed Zotero-MCP with semantic search to improve that:

https://stevenyuyy.us/zotero-mcp/

It works great, but it can be difficult to use well, and difficult to output the results as I like them, so I have been using Claude AI's new "skills" feature to create a skill that would know how to do all of this for me, so I can simply ask Claude to search for me.

This worked well, but it uses a lot of tokens. A search might take 2,372 tokens. However, Claude recently posted a blog post about a new way of working with MCPs that is much more efficient:

https://www.anthropic.com/engineering/code-execution-with-mcp

Basically, you have a piece of code masticate the results before feeding them to Claude. So, I had Claude Code try to implement such a solution for me. (Note that my workflow is done entirely in Claude Code, I don't think this would work in Claude's desktop app, since it involves running that code.)

I've shared my setup here:

https://github.com/kerim/zotero-code-execution

This is all vibe-coded so don't ask me to explain anything! I just know it works, and the number of tokens for a search is now only 582.
  • The MCP server you linked (https://github.com/54yyyu/zotero-mcp) seems to be a Python implementation (MCP server implemented as python package) that uses pyzotero to access Zotero via the Web API (local or remote), resulting in read-only access to your library.

    Your approach could be simplified: we could write a SKILL.md that directly uses pyzotero to talk to Zotero using the Web API.

    However, it seems like there is a different Zotero MCP server that is implemented as a Zotero plugin and directly exposes the Zotero JS API, therefore giving write access: https://github.com/cookjohn/zotero-mcp/tree/main

    I'm investigating both approaches.
  • This was written a while ago. I'm now using this:

    https://github.com/ElliotRoe/lit-lake
  • So it seems that there are still three main options:

    54yyyu/zotero-mcp (updated last month)
    cookjohn/zotero-mcp (updated 2 months ago)
    ElliotRoe/lit-lake (updated 3 months ago)

    It often seems to me that the "best" one is the one that has been most recently updated. I have recently gone back to using 54yyyu/zotero-mcp, but I haven't really tested the most recent versions of cookjohn/zotero-mcp. It would be nice to see a detailed comparison.
  • edited today at 6:25am
    By the way, after struggling with the results I got for synthesis and semantic searches from existing tools, I decided to develop a solution and I'm in the process of making it generally available. If any of you guys would like to try it out (it's much more than semantic search), please fill the early access form here: https://agentbayes.com

    Note it is not a replacement for semantic search over your entire library, as it works on a subset of documents that you selectively choose to index. Most existing RAG tools use a sliding window and all my tests yielded average results with this method (garbage in, garbage out) so the indexing process I ended up with is much more expensive and time consuming, but at least you get very high quality synthesis out of it.
Sign In or Register to comment.