VOOZH about

URL: https://glama.ai/mcp/servers/dengls24/annota

โ‡ฑ annota by dengls24 | Glama


Annota โ€” AI-Powered Paper Annotation Assistant

Turn your PDF library into an intelligent research assistant.

AI reads your papers, highlights key findings, explains formulas, and writes structured notes โ€” all saved back to your reference manager.

๐Ÿ‘ License: MIT
๐Ÿ‘ Python 3.10+
๐Ÿ‘ MCP
๐Ÿ‘ Platform

Features ยท Quick Start ยท Usage Examples ยท Screenshots ยท Roadmap


What Can It Do?

You say...

AI does...

"้ซ˜ไบฎๆ‘˜่ฆไธญ็š„ๅ‘็Žฐ็ป“ๆžœ" (Highlight findings in the abstract)

Reads the abstract, identifies findings, highlights them in green

"่งฃ้‡Š็ฌฌ3้กต็š„ๅ…ฌๅผ" (Explain the formulas on page 3)

Extracts the formula, adds an explanation as a note annotation

"ๅ†™ไธ€ไปฝ็ป“ๆž„ๅŒ–้˜…่ฏป็ฌ”่ฎฐ" (Write a structured reading note)

Generates a note with contributions, methods, results, limitations โ€” saved to your library

"ไปฅ MICRO ๅฎก็จฟไบบ่ง†่ง’ๅฎก้˜…" (Review as a MICRO reviewer)

Produces a structured review with scores and actionable feedback

AI reads the paper โ†’ understands content โ†’ creates precise annotations

AI generates a structured reading summary with key findings, methods, and conclusions


Related MCP server: Zotero MCP Server

โœจ Features

9 MCP Tools

Tool

What it does

search_zotero_items

Search by title / author / key

list_zotero_items

Browse recent items

get_item_metadata

Get authors, year, venue, DOI

get_pdf_text_bulk

Extract full text (no coords, fast)

get_pdf_layout_text

Extract text + precise coordinates

list_annotations

View existing annotations

create_pdf_annotation

Create highlight / underline

batch_annotate

Create multiple annotations at once

add_child_note

Add a note to any item

3 Claude Code Skills (Slash Commands)

Command

Function

/annota-annotate

Smart annotation with semantic color coding

/annota-summarize

Structured reading notes saved to your library

/annota-review

Simulated peer review with scoring rubric

Smart Design

  • Two-phase workflow โ€” Reads full text first (cheap), then only gets coordinates for target sentences (precise). Reduces context usage by 63โ€“80%.

  • Auto-skip references โ€” Detects "References" section and skips it. A 21-page paper extracts only 13 pages.

  • Batch annotations โ€” Creates 10 highlights in 1 API call instead of 10.

  • Friendly errors โ€” Write failures return helpful messages instead of crashing.


๐Ÿš€ Quick Start (3 Minutes)

Step 1: Clone & Install

git clone https://github.com/dengls24/annota.git
cd annota

python -m venv .venv

# Windows:
.venv\Scripts\activate
# macOS / Linux:
# source .venv/bin/activate

pip install pymupdf mcp

Step 2: Configure Claude Code

Add to ~/.claude.json (or via Claude Code Settings > MCP Servers):

Windows:

{
 "mcpServers": {
 "annota": {
 "command": "C:/path/to/annota/.venv/Scripts/python.exe",
 "args": ["C:/path/to/annota/annota/server.py"],
 "env": {
 "ZOTERO_DATA_DIR": "C:/Users/YourName/Zotero"
 }
 }
 }
}

macOS / Linux:

{
 "mcpServers": {
 "annota": {
 "command": "/path/to/annota/.venv/bin/python",
 "args": ["/path/to/annota/annota/server.py"],
 "env": {
 "ZOTERO_DATA_DIR": "/Users/YourName/Zotero"
 }
 }
 }
}

Finding your Zotero data directory:

  • Windows: Zotero โ†’ Edit โ†’ Settings โ†’ Advanced โ†’ Data Directory Location (default: C:\Users\YourName\Zotero)

  • macOS: Zotero โ†’ Settings โ†’ Advanced โ†’ Data Directory Location (default: ~/Zotero)

  • Linux: default ~/Zotero

Step 3: Use It

Just talk to Claude naturally:

# One command to read a full paper:
/annota-read "path/to/paper.pdf"

# Or natural language:
# Highlight the findings in this paper's abstract in green
"/Users/yourname/Zotero/storage/ABCD1234/paper.pdf"

Or use slash commands:

/annota-read "path/to/paper.pdf"
/annota-annotate "path/to/paper.pdf"
/annota-summarize "path/to/paper.pdf"
/annota-review "path/to/paper.pdf" ISCA

macOS path tip: Drag a file from Finder into the terminal to get its full path, or right-click โ†’ "Copy as Pathname".

(Optional) Install Skills Globally

# Make skills available in all projects
cp -r .claude/skills/ ~/.claude/skills/

๐Ÿ“– Usage Examples

Example 1: Highlight Key Findings

Input:

ๆŠŠ่ฟ™็ฏ‡่ฎบๆ–‡ๆ‘˜่ฆไธญ็š„ๅ‘็Žฐ็ป“ๆžœ็”จ็ปฟ่‰ฒๆ ‡ๅ‡บๆฅ
(Highlight the findings in this paper's abstract in green)
"E:\Zotero\storage\ABCD1234\Song et al. - 2025 - AI washing.pdf"

Result:

AI identifies findings in the abstract and highlights them in green


Example 2: Annotate Hypotheses & Theories

Input:

ๆ ‡ๆณจ่ฎบๆ–‡ไธญ็š„ๅ‡่ฎพ(H1, H2)๏ผŒๅนถ็”จไธญๆ–‡่งฃ้‡Šๆฏไธชๅ‡่ฎพ็š„็†่ฎบๅŸบ็ก€
(Annotate the hypotheses (H1, H2) and explain the theoretical basis of each in Chinese)

Result:

Hypotheses highlighted in yellow, with Chinese explanation notes for the underlying theory


Example 3: Explain Formulas

Input:

่งฃ้‡Š่ฎบๆ–‡ไธญ็š„ๆ ธๅฟƒๅ…ฌๅผ๏ผŒๆทปๅŠ ไธญๆ–‡ๆณจ้‡Š
(Explain the key formulas in this paper, add Chinese annotations)

Result:

DID model formula annotated with variable explanations in Chinese


Example 4: Policy Implications & Conclusion Notes

Input:

ๆ ‡ๆณจ็ป“่ฎบ้ƒจๅˆ†็š„ๆ”ฟ็ญ–ๅฏ็คบ๏ผŒๆทปๅŠ ไธญๆ–‡ๆ€ป็ป“็ฌ”่ฎฐ
(Highlight policy implications in the conclusion, add a Chinese summary note)

Result:

Conclusion highlighted with a structured policy implications note


Example 5: Full Paper Reading Notes

Input:

/annota-summarize "path/to/paper.pdf"

Result:

AI generates a complete reading summary: topic, research question, method, key findings, and implications


Example 6: Detailed Paragraph-by-Paragraph Notes

Input:

้€ๆฎต้˜…่ฏป่ฟ™็ฏ‡่ฎบๆ–‡๏ผŒไธบๆฏไธช้‡่ฆๆฎต่ฝๆทปๅŠ ไธญๆ–‡ๆ‰นๆณจ
(Read this paper paragraph by paragraph, add Chinese annotations to each important section)

Result:

Each important paragraph gets a Chinese annotation explaining the content


Example 7: The AI Workflow in Action

Here's what Claude Code looks like when processing a paper:

Claude creates a task list, reads the PDF, and calls MCP tools to create annotations step by step


๐ŸŽจ Color Convention

Color

Code

Use for

๐ŸŸก Yellow

#ffd400

Default / general highlights

๐ŸŸข Green

#28CA42

Results, findings, data

๐Ÿ”ต Blue

#2EA8E5

Methods, definitions, algorithms

๐Ÿ”ด Red

#ff6666

Limitations, issues, problems

๐ŸŸฃ Purple

#a28ae5

Contributions, novelty


โšก How It Handles Large PDFs

For papers >10 pages, a two-phase workflow avoids context overflow:

Phase 1 โ€” Understand (lightweight)
 get_pdf_text_bulk(pdf, skip_refs=True)
 โ†’ Full text without coordinates
 โ†’ AI identifies which sentences to annotate

Phase 2 โ€” Annotate (precise)
 get_pdf_layout_text(pdf, target_page_only)
 โ†’ Coordinates for 1โ€“2 target pages
 batch_annotate(pdf, all_annotations)
 โ†’ Write everything in one call

Real-world performance:

Paper

Pages

Old approach

New approach

Savings

Conference paper

2 pages

41 KB coords

15 KB text

63%

Journal article

21 pages

21 pages extracted

13 pages (refs skipped at p.13)

38%

Survey paper

19 pages

19 pages extracted

10 pages (refs skipped at p.10)

47%


๐Ÿ“ Project Structure

annota/
โ”œโ”€โ”€ annota/ # MCP Server (Python)
โ”‚ โ”œโ”€โ”€ server.py # 9 tool registrations
โ”‚ โ”œโ”€โ”€ zotero_db.py # SQLite read/write layer
โ”‚ โ”œโ”€โ”€ pdf_tools.py # PyMuPDF text extraction
โ”‚ โ””โ”€โ”€ config.py # Constants & configuration
โ”œโ”€โ”€ .claude/skills/ # Claude Code Skills
โ”‚ โ”œโ”€โ”€ annota-annotate/SKILL.md # /annota-annotate
โ”‚ โ”œโ”€โ”€ annota-summarize/SKILL.md # /annota-summarize
โ”‚ โ””โ”€โ”€ annota-review/SKILL.md # /annota-review
โ”œโ”€โ”€ docs/ # Design documents
โ”‚ โ”œโ”€โ”€ annota-guide.md # Usage guide (CN)
โ”‚ โ”œโ”€โ”€ large-pdf-design.md # Large PDF handling design
โ”‚ โ”œโ”€โ”€ dev-notes.md # Pitfalls & solutions
โ”‚ โ””โ”€โ”€ commercial-plan.md # Commercialization plan
โ”œโ”€โ”€ assets/ # Screenshots
โ””โ”€โ”€ README.md

โš ๏ธ Known Limitations & Disclaimer

Database Direct Access: Annota writes annotations directly to the Zotero SQLite database, which bypasses Zotero's internal consistency mechanisms. This is a design choice to enable fully offline, local-first annotation workflows without depending on external services. Users are responsible for their own database โ€” please back up your zotero.sqlite before use. We plan to migrate to the official Zotero Web API / Local API in future versions.

Limitation

Workaround

Planned Fix

Direct SQLite write (not officially supported)

Back up your database before use

Migrate to Zotero Local API / Web API

Write ops need Zotero closed

Close Zotero before annotating

Local API bridge

References detection is heuristic

Pass skip_refs=False if needed

Improve heuristics

Tested primarily on Windows

Should work on macOS/Linux โ€” paths auto-detected

Community testing welcome


๐Ÿ—บ Roadmap

  • Zotero Local API / Web API โ€” Migrate from direct SQLite to official API for safer writes

  • More skills โ€” /compare-papers, /extract-tables, /literature-map

  • Prompt template marketplace โ€” Share and reuse annotation rules

  • Team features โ€” Shared annotation standards for lab groups

  • Multi-backend โ€” Support Adobe Acrobat, Endnote, and other PDF tools


๐Ÿค Contributing

Issues and PRs are welcome! If you have ideas for new skills or tools, please open an issue.

๐Ÿ“„ License

MIT โ€” Use it freely for research and commercial projects.


Built with MCP + Claude Code

If this project helps your research, consider giving it a โญ

A
license - permissive license
A
quality
A
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
1Releases (12mo)
Commit activity

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/dengls24/annota'

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