Observed since 20 Oct, 17:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Evidence-grounded academic literature discovery for AI agents, MCP clients, and Python applications.
Evidence-grounded academic literature discovery for AI agents, MCP clients, command-line workflows, and Python applications.
Academic Research Tools provides one normalized interface over several literature sources while preserving the source and identifiers of every record. Its core is independent of any agent harness; MCP, CLI, Python, and Hermes are adapters over the same implementation.
| Provider | Credential | Availability | Notes |
|---|---|---|---|
| arXiv | None | Core | Official public Atom API |
| Semantic Scholar | Optional SEMANTIC_SCHOLAR_API_KEY | Core | Unauthenticated access uses shared public quota |
| Scopus | ELSEVIER_API_KEY | Core, optional at runtime | Metadata and abstracts may require subscription or institutional IP |
| Google Scholar through SerpAPI | SERPAPI_API_KEY | Experimental | Third-party SerpAPI integration; not direct scraping or an official Google Scholar API |
The package remains useful without credentials: arXiv is available immediately and Semantic Scholar can be queried without a key, subject to public rate limits.
Paper, Author, SearchResult, and UnifiedSearchResult contractsgit clone https://github.com/istgrudd/academic-research-tools.git
cd academic-research-tools
python -m venv .venv
. .venv/bin/activate
python -m pip install .
pip install academic-research-tools
# or
pipx install academic-research-tools
No credential is required to verify the installation:
academic-research --version
academic-research doctor
academic-research status
academic-research search "traffic flow estimation low visibility" \
--sources arxiv,semantic_scholar --limit 5
Configure optional providers later, only when you need them:
academic-research configure
Secret input is hidden. Do not paste API keys into chat or pass them as command arguments.
Install the MCP server and workflow skill for a coding agent:
academic-research install --platform claude-code
# or
academic-research install --platform codex
The installer does not launch credential configuration. arXiv and Semantic Scholar public access remain ready for immediate use.
See Getting started and Credential setup.
Run the local stdio server:
academic-research serve
If you use uvx without a prior install, configure the MCP client to execute:
uvx --from academic-research-tools academic-research serve
Generic MCP configuration:
{
"mcpServers": {
"academic-research": {
"command": "uvx",
"args": [
"--from",
"academic-research-tools",
"academic-research",
"serve"
],
"env": {
"SEMANTIC_SCHOLAR_API_KEY": "${SEMANTIC_SCHOLAR_API_KEY}",
"ELSEVIER_API_KEY": "${ELSEVIER_API_KEY}"
}
}
}
}
Only include environment variables for providers you intend to use. The protected user configuration is also read automatically. Details: generic MCP, Claude Code, Codex, Claude Desktop, and Cursor.
research_provider_statussearch_paperssearch_arxivsearch_semantic_scholarsearch_scopusget_scopus_abstractsearch_scopus_authorssearch_google_scholarfrom academic_research import ResearchService
client = ResearchService.from_environment()
result = client.search(
"traffic flow estimation under low visibility",
sources=["arxiv", "semantic_scholar", "scopus"],
limit_per_source=10,
year="2020-2026",
)
for paper in result.papers:
print(paper.title, paper.doi, paper.provenance)
if result.errors:
print("Partial provider failures:", result.errors)
A provider that is not configured is excluded from ResearchService.from_environment(). The MCP unified search preserves results from available providers and reports missing optional providers with a configuration command. A provider-specific request returns an actionable error rather than silently substituting a different source.
Current Hermes installations can install the repository directly:
hermes plugins install istgrudd/academic-research-tools --enable
Pip-distributed discovery is also declared through the hermes_agent.plugins entry-point group. Scopus and SerpAPI use per-tool checks, so missing optional credentials never disable arXiv or Semantic Scholar.
See Hermes integration.
Credentials are resolved from environment variables first and a protected per-user JSON file second. The interactive wizard writes mode 0700 directories and mode 0600 files on Unix. The local file is plaintext and is not an encrypted vault.
This project does not:
statusDo not commit .env; it is ignored by Git. See SECURITY.md.
python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check src tests __init__.py
pytest
python -m build
Tests use synthetic fixtures and do not spend provider quota. See CONTRIBUTING.md.
This project is an independent, unofficial integration and is not affiliated with or endorsed by Elsevier, Scopus, Semantic Scholar, arXiv, Google, or SerpAPI. Users are responsible for complying with each provider's API terms, acceptable-use policies, subscription conditions, and data licenses. The MIT license covers this project's source code, not provider data or services.
Thank you to arXiv for use of its open access interoperability.
Source code is available under the MIT License.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 9 Sept 2026 | 5 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 17:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:084f67fc5c7b63d5080ef6fb8a29715bddc76a48f17e18df203bcf1c94071f21