Skip to main content
Glama

list_collection_items

Retrieve metadata for items stored in a Zotero collection to browse research papers and manage library content.

Instructions

List items in a specific Zotero collection.

Args: collection_key: The Zotero collection key (from list_collections) limit: Maximum items to return (default: 50)

Returns: JSON with item metadata for each item in the collection.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
collection_keyYes
limitNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • MCP tool handler decorated with @mcp_server.tool() that registers 'list_collection_items' as a tool. Accepts collection_key and limit parameters, validates inputs via type hints, and delegates to db.list_collection_items for execution.
    @mcp_server.tool()
    def list_collection_items(collection_key: str, limit: int = 50) -> str:
        """List items in a specific Zotero collection.
    
        Args:
            collection_key: The Zotero collection key (from list_collections)
            limit: Maximum items to return (default: 50)
    
        Returns:
            JSON with item metadata for each item in the collection.
        """
        return db.list_collection_items(collection_key, limit=limit)
  • Core implementation that fetches items from a Zotero collection using pyzotero client. Filters out attachments and notes, formats each item using _item_to_dict, and returns JSON with items list and total count.
    def list_collection_items(collection_key: str, limit: int = 50) -> str:
        """Return items in a specific collection."""
        limit = max(1, limit)
        try:
            zot = _get_zot()
            items = zot.collection_items(collection_key, limit=limit)
        except Exception as e:
            return json.dumps({"error": f"Failed to fetch collection items: {e}"})
    
        result = []
        for item in items:
            data = item.get("data", {})
            if data.get("itemType") in ("attachment", "note"):
                continue
            result.append(_item_to_dict(item, truncate_abstract=500))
    
        return json.dumps({"items": result, "total": len(result)})
  • Helper function that defines the output schema by converting pyzotero item dicts to a standardized format with key, itemType, title, creators, date, DOI, url, tags, collections, and abstract fields. Supports abstract truncation for list views.
    def _item_to_dict(item: dict, truncate_abstract: int = 0) -> dict:
        """Convert a pyzotero item to a concise dict for tool output."""
        data = item.get("data", {})
        abstract = data.get("abstractNote", "")
        if truncate_abstract > 0 and len(abstract) > truncate_abstract:
            abstract = abstract[:truncate_abstract] + "..."
    
        collections = data.get("collections", [])
        tags = [t.get("tag", "") for t in data.get("tags", []) if t.get("tag")]
    
        return {
            "key": data.get("key", ""),
            "itemType": data.get("itemType", ""),
            "title": data.get("title", ""),
            "creators": _format_creators(data.get("creators", [])),
            "date": data.get("date", ""),
            "DOI": data.get("DOI", ""),
            "url": data.get("url", ""),
            "tags": tags,
            "collections": collections,
            "abstract": abstract,
        }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

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/eric-tramel/zoty'

If you have feedback or need assistance with the MCP directory API, please join our Discord server