A Model Context Protocol (MCP) server for searching, downloading, and analyzing academic papers from multiple sources.
Aggregates data from OpenAlex, DBLP, Semantic Scholar, arXiv, and CrossRef to provide a unified academic research interface for LLMs.
Designed for seamless integration with large language models like Claude Desktop and OpenCode.
- π Multi-Source Search: Unified search across OpenAlex (100K+ free calls/day), DBLP (CS papers), Semantic Scholar (AI recommendations), arXiv (preprints), and CrossRef (DOI resolution).
- π§ Smart ID Resolution: Automatically detects and handles DOIs, arXiv IDs, OpenAlex IDs, Semantic Scholar IDs, and DBLP keys.
- π BibTeX Export: Native BibTeX support from DBLP (high quality) with automatic fallback generation for other sources. Supports batch export.
- π Citation Analysis: Retrieve citation counts, citing papers, and generate citation network data for visualization.
- π€ AI Recommendations: Leverage Semantic Scholar's AI engine to find related papers based on content and citations.
- β‘ Asynchronous: Built with
httpxandasynciofor high-performance concurrent API requests.
If you are using uv (recommended):
uv tool install academixOr with pip:
pip install academix-
Clone the repository:
git clone https://github.com/your-org/academix.git cd academix -
Install dependencies:
uv sync
-
Run the server:
uv run academix
To use this server with Claude Desktop, add the following to your configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"academix": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/academix",
"academix"
],
"env": {
"ACADEMIX_EMAIL": "your.email@example.com",
"SEMANTIC_SCHOLAR_API_KEY": "optional_api_key"
}
}
}
}Note: Replace
/absolute/path/to/academixwith the actual path where you cloned the repository. SettingACADEMIX_EMAILis highly recommended to access the "polite pool" for OpenAlex and CrossRef (higher rate limits).
For OpenCode, modify your configuration file (usually at ~/.config/opencode/opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"academix": {
"type": "local",
"command": [
"uv",
"run",
"--directory",
"/absolute/path/to/academix",
"academix"
],
"environment": {
"ACADEMIX_EMAIL": "your.email@example.com",
"SEMANTIC_SCHOLAR_API_KEY": "optional_api_key"
},
"enabled": true,
"timeout": 10000
}
}
}Configuration Details:
- type: Must be
"local". - command: The full command array to run the server. Use
uv runpointing to the directory. - directory: Replace
/absolute/path/to/academixwith your actual path. - environment: Add API keys or email here.
ACADEMIX_EMAILis recommended. - timeout: Optional. Increased to
10000(10s) to handle network latency.
| Feature | OpenAlex | DBLP | CrossRef | Semantic Scholar | arXiv |
|---|---|---|---|---|---|
| Paper Search | β | β | β | β | β |
| Get Paper Details | β | β | β | β | β |
| BibTeX Export | β | β Native | β | β | β |
| Citation Retrieval | β | β | β | β | β |
| Author Search | β | β | β | β | β |
| Related Papers (AI) | β | β | β | β | β |
| Source | Quality | Notes |
|---|---|---|
| DBLP | βββ Excellent | Native BibTeX export. Best for CS papers. Includes complete venue info. |
| CrossRef | ββ Good | Accurate metadata from publishers. Requires valid DOI. |
| arXiv | ββ Good | Correct preprint info. Entry type is @misc with eprint field. |
| Semantic Scholar | ββ Good | Generated from metadata. May lack venue details. |
| OpenAlex | β Variable | Generated from metadata. Some fields may be incomplete. |
Recommendation: For CS papers, prioritize DBLP for BibTeX. For papers with DOI, CrossRef provides reliable metadata.
| Tool | Description |
|---|---|
academic_search_papers |
Search papers by keywords, title, author, DOI, date, venue. Supports sorting by relevance, date, or citations. |
academic_get_paper_details |
Get full metadata for a paper using any supported ID format. |
academic_get_bibtex |
Export BibTeX citations (single or batch). Prioritizes DBLP for high-quality metadata. |
academic_get_citations |
Get papers that cite a given paper (via OpenAlex). |
academic_search_author |
Find all papers by an author name. |
academic_get_related_papers |
AI-powered related paper recommendations (via Semantic Scholar). |
academic_get_citation_network |
Get citation network data (nodes/edges) for visualization. |
academic_cache_stats |
View cache hit rates and statistics. |
Find papers about "LLM agents" sorted by citation count:
use academic_search_papers with:
{
"query": "LLM agents",
"limit": 5,
"sort": "citation_count"
}Generate BibTeX for multiple papers (mixed ID formats supported):
use academic_get_bibtex with:
{
"paper_ids": "10.1038/nature12345, 10.48550/arXiv.2310.08560"
}Find who is citing a specific paper:
use academic_get_citations with:
{
"paper_id": "W2741809807" // OpenAlex ID or DOI
}| Source | Rate Limits | Authentication | Best For |
|---|---|---|---|
| OpenAlex | 100K/day (with email) | Email (optional) | General search, citations, author data |
| DBLP | Reasonable use | None | CS papers, high-quality BibTeX |
| Semantic Scholar | 100/5min (higher with key) | API key (optional) | AI Recommendations |
| arXiv | Unlimited (polite) | None | Preprints (CS, Math, Physics) |
| CrossRef | Dynamic | Email (optional) | DOI resolution |
# Run all tests
uv run pytest
# Run with coverage report
uv run pytest --cov=academixacademix/
βββ src/academix/
β βββ server.py # MCP server entry point
β βββ aggregator.py # Orchestrator for multiple API clients
β βββ clients/ # Individual API client implementations
β β βββ openalex.py
β β βββ dblp.py
β β βββ semantic.py
β β βββ arxiv_client.py
β β βββ crossref.py
β βββ models.py # Pydantic data models
βββ tests/ # Unit and integration tests
βββ pyproject.toml # Dependencies and config
βββ README.md
MIT License