Paper Intelligence — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Paper Intelligence (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A local MCP server for intelligent paper/PDF management. Convert PDFs to markdown, then search them with hybrid grep + semantic search. Designed for token efficiency: search first, read only what you need.
curl -LsSf https://astral.sh/uv/install.sh | shClaude Code CLI:
claude mcp add paper-intelligence -- uvx paper-intelligence@latestVS Code:
code --add-mcp '{"name":"paper-intelligence","command":"uvx","args":["paper-intelligence@latest"]}'That's it! uvx handles everything automatically. Using @latest ensures you always get the newest version.
<details> <summary><strong>Claude Desktop</strong></summary>
Add to your Claude Desktop config:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"paper-intelligence": {
"command": "uvx",
"args": ["paper-intelligence@latest"]
}
}
}</details>
<details> <summary><strong>Cursor</strong></summary>
command typeuvx paper-intelligence@latestOr add to ~/.cursor/mcp.json:
{
"mcpServers": {
"paper-intelligence": {
"command": "uvx",
"args": ["paper-intelligence@latest"]
}
}
}</details>
<details> <summary><strong>Windsurf / Other MCP Clients</strong></summary>
Any MCP-compatible client can use paper-intelligence:
{
"mcpServers": {
"paper-intelligence": {
"command": "uvx",
"args": ["paper-intelligence@latest"]
}
}
}</details>
process_paper<details> <summary>Full pipeline: Convert PDF → Index headers → Create embeddings</summary>
Parameters:
pdf_path (string): Path to PDF fileuse_llm (boolean, optional): Enhanced accuracy mode (default: false)chunk_size (integer, optional): Text chunk size for embedding (default: 512)chunk_overlap (integer, optional): Overlap between chunks (default: 50)Example:
Process the paper at ~/Downloads/attention-is-all-you-need.pdfOutput Structure:
attention-is-all-you-need/
├── attention-is-all-you-need.md # Converted markdown
├── metadata.json # Processing version info
├── index.json # Header hierarchy
├── chroma/ # Embeddings database
└── images/ # Extracted figures</details>
search<details> <summary>Unified search with grep and/or semantic RAG</summary>
Parameters:
query (string): Search query (text, regex, or semantic)paper_dirs (array): List of paper directories to searchmode (string, optional): "grep", "rag", or "hybrid" (default: hybrid)top_k (integer, optional): Number of results (default: 5)regex (boolean, optional): Treat query as regex (default: false)Example Queries:
# Semantic search across papers
Search for "attention mechanism implementation" in my processed papers
# Exact text search
Search for "transformer" using grep mode
# Regex search
Search for "BERT|GPT|T5" with regex enabledReturns: Results with line numbers, surrounding context, and header location.
</details>
convert_pdf<details> <summary>Convert PDF to Markdown (without embeddings)</summary>
Parameters:
pdf_path (string): Path to PDF fileoutput_dir (string, optional): Custom output directoryuse_llm (boolean, optional): Enhanced accuracy modeReturns: markdown_path, images_dir, image_count
</details>
get_paper_info<details> <summary>Check processing status of a paper</summary>
Parameters:
paper_dir (string): Path to paper directoryExample Response:
{
"has_markdown": true,
"has_index": true,
"has_embeddings": true,
"has_images": true,
"image_count": 12,
"version": "0.2.0",
"processed_at": "2025-01-15T10:30:00Z"
}</details>
index_markdown / embed_document<details> <summary>Individual pipeline steps (for advanced use)</summary>
`index_markdown` — Extract header hierarchy into searchable JSON
index_markdown(markdown_path="~/Downloads/paper/paper.md")`embed_document` — Create embeddings for semantic search
embed_document(
markdown_path="~/Downloads/paper/paper.md",
chunk_size=512,
chunk_overlap=50
)</details>
{
"source": "attention-is-all-you-need.md",
"line_number": 142,
"header_path": "Model Architecture > Attention",
"content": "An attention function can be described as mapping a query and a set of key-value pairs to an output...",
"score": 0.89
}Process the PDF at ~/Downloads/transformer-paper.pdf
Search for "positional encoding" in my papers
Show me the Methods section from the transformer paper
The agent reads search results (a few hundred tokens) instead of entire papers (tens of thousands of tokens).
<details> <summary><strong>Install from PyPI</strong></summary>
# Install with pip
pip install paper-intelligence
# Or run directly with uvx (no install needed)
uvx paper-intelligence@latest</details>
<details> <summary><strong>Install from GitHub</strong></summary>
pip install "paper-intelligence @ git+https://github.com/Strand-AI/paper-intelligence.git"</details>
<details> <summary><strong>Local Development</strong></summary>
git clone https://github.com/Strand-AI/paper-intelligence.git
cd paper-intelligence
# Create virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
# Install in development mode
pip install -e ".[dev]"
# Run the server
python -m paper_intelligence.serverDevelopment MCP config:
{
"mcpServers": {
"paper-intelligence": {
"command": "python",
"args": ["-m", "paper_intelligence.server"],
"cwd": "/path/to/paper-intelligence"
}
}
}Run tests:
# Unit tests (fast)
pytest tests/test_markdown_parser.py
# Integration tests (slow, requires ML models)
pytest tests/test_integration.py -v</details>
Use the MCP Inspector to debug the server:
npx @modelcontextprotocol/inspector uvx paper-intelligence@latest<details> <summary><strong>Server not starting?</strong></summary>
uvx paper-intelligence@latest directly to see error messages</details>
<details> <summary><strong>Windows encoding issues?</strong></summary>
Add to your MCP config:
"env": {
"PYTHONIOENCODING": "utf-8"
}</details>
<details> <summary><strong>Claude Desktop not detecting changes?</strong></summary>
Claude Desktop only reads configuration on startup. Fully restart the app after config changes.
</details>
| Component | Technology |
|---|---|
| MCP Server | Official Python SDK with FastMCP |
| PDF Conversion | marker-pdf |
| Embeddings | LlamaIndex + HuggingFace (BAAI/bge-small-en-v1.5) |
| Vector Store | ChromaDB (persistent, local per-paper) |
| GPU Support | PyTorch with MPS (Apple) or CUDA |
MIT — see LICENSE for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.