A native-feeling Mac desktop app for managing research papers. Search arXiv, save and annotate PDFs, organize with collections and tags, explore citation graphs, and let AI assistants access your library via MCP.
Download the latest .dmg from Releases, open it, and drag PaperShelf to Applications.
Requires macOS (Apple Silicon). The app is signed and notarized.
- arXiv search -- find papers and save them to your library with one click
- PDF viewer -- read, highlight, and add sticky notes directly on papers
- Collections & tags -- organize papers with colored collections and tags
- Citation graph -- visualize how papers cite each other using Semantic Scholar data
- Full-text search -- FTS5-powered search across titles, abstracts, and full paper text
- MCP server -- expose your library to AI assistants (Claude, etc.) over the Model Context Protocol
- Keyboard-driven -- customizable shortcuts for fast navigation
PaperShelf includes a built-in MCP server that lets AI assistants search your library, read papers, and manage collections.
- Open PaperShelf Settings and enable the MCP server
- Add to your MCP client config (e.g. Claude Desktop's
claude_desktop_config.json):
{
"mcpServers": {
"papershelf": {
"url": "http://127.0.0.1:3847/mcp"
}
}
}Port 3847 in production, 13847 in development.
| Tool | Description |
|---|---|
search_arxiv |
Search arXiv for papers |
search_library |
Full-text search your saved papers |
get_paper |
Get details for a specific paper |
list_papers |
List papers with optional collection/tag filters |
save_paper |
Save an arXiv paper to your library |
fetch_paper_html |
Fetch the HTML content of a paper |
get_bibtex |
Generate a BibTeX citation for a paper |
list_collections |
List all collections |
list_tags |
List all tags |
list_categories |
List arXiv categories |
create_collection |
Create a new collection |
create_tag |
Create a new tag |
add_paper_to_collection |
Add a paper to a collection |
remove_paper_from_collection |
Remove a paper from a collection |
add_tag_to_paper |
Add a tag to a paper |
remove_tag_from_paper |
Remove a tag from a paper |
toggle_favorite |
Toggle favorite status on a paper |
npm install # also runs @electron/rebuild for better-sqlite3
# dev mode with isolated data directory
PAPERSHELF_DATA_DIR=/tmp/papershelf-dev npm run dev
npm run test # run tests (vitest)
npm run lint # biome check
npm run build # build main + rendererElectron + React + TypeScript + SQLite + Tailwind CSS
If you find PaperShelf useful, consider sponsoring the project.