academic-search-mcp 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. academic_search_mcp-0.1.3/.claude/settings.local.json +8 -0
  2. academic_search_mcp-0.1.3/.github/workflows/publish.yml +32 -0
  3. academic_search_mcp-0.1.3/.gitignore +172 -0
  4. academic_search_mcp-0.1.3/CLAUDE.md +70 -0
  5. academic_search_mcp-0.1.3/Dockerfile +19 -0
  6. academic_search_mcp-0.1.3/LICENSE +21 -0
  7. academic_search_mcp-0.1.3/PKG-INFO +243 -0
  8. academic_search_mcp-0.1.3/README.md +225 -0
  9. academic_search_mcp-0.1.3/docs/images/demo.png +0 -0
  10. academic_search_mcp-0.1.3/paper_search_mcp/__init__.py +0 -0
  11. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/__init__.py +0 -0
  12. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/arxiv.py +147 -0
  13. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/biorxiv.py +156 -0
  14. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/core.py +284 -0
  15. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/crossref.py +375 -0
  16. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/cyberleninka.py +396 -0
  17. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/google_scholar.py +249 -0
  18. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/hub.py +0 -0
  19. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/iacr.py +548 -0
  20. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/medrxiv.py +156 -0
  21. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/openalex.py +497 -0
  22. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/pubmed.py +159 -0
  23. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/sci_hub.py +178 -0
  24. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/semantic.py +492 -0
  25. academic_search_mcp-0.1.3/paper_search_mcp/academic_platforms/ssrn.py +385 -0
  26. academic_search_mcp-0.1.3/paper_search_mcp/paper.py +69 -0
  27. academic_search_mcp-0.1.3/paper_search_mcp/pdf_utils.py +67 -0
  28. academic_search_mcp-0.1.3/paper_search_mcp/server.py +514 -0
  29. academic_search_mcp-0.1.3/pyproject.toml +31 -0
  30. academic_search_mcp-0.1.3/smithery.yaml +13 -0
  31. academic_search_mcp-0.1.3/tests/__init__.py +0 -0
  32. academic_search_mcp-0.1.3/tests/test.pubmed.py +25 -0
  33. academic_search_mcp-0.1.3/tests/test_arxiv.py +16 -0
  34. academic_search_mcp-0.1.3/tests/test_biorxiv.py +61 -0
  35. academic_search_mcp-0.1.3/tests/test_core.py +129 -0
  36. academic_search_mcp-0.1.3/tests/test_crossref.py +105 -0
  37. academic_search_mcp-0.1.3/tests/test_cyberleninka.py +119 -0
  38. academic_search_mcp-0.1.3/tests/test_google_scholar.py +46 -0
  39. academic_search_mcp-0.1.3/tests/test_iacr.py +307 -0
  40. academic_search_mcp-0.1.3/tests/test_medrxiv.py +61 -0
  41. academic_search_mcp-0.1.3/tests/test_sci_hub.py +182 -0
  42. academic_search_mcp-0.1.3/tests/test_semantic.py +275 -0
  43. academic_search_mcp-0.1.3/tests/test_server.py +36 -0
  44. academic_search_mcp-0.1.3/tests/test_ssrn.py +137 -0
  45. academic_search_mcp-0.1.3/uv.lock +681 -0
@@ -0,0 +1,8 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(wc:*)",
5
+ "Bash(python -m pytest:*)"
6
+ ]
7
+ }
8
+ }
@@ -0,0 +1,32 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*.*.*'
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ environment: pypi
12
+ permissions:
13
+ id-token: write
14
+ steps:
15
+ - name: Checkout code
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: '3.10'
22
+
23
+ - name: Install build tools
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install build
27
+
28
+ - name: Build package
29
+ run: python -m build
30
+
31
+ - name: Publish to PyPI
32
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,172 @@
1
+ .DS_Store
2
+ scratch/
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ build/
15
+ develop-eggs/
16
+ dist/
17
+ downloads/
18
+ eggs/
19
+ .eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ share/python-wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+ MANIFEST
31
+
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ htmlcov/
44
+ .tox/
45
+ .nox/
46
+ .coverage
47
+ .coverage.*
48
+ .cache
49
+ nosetests.xml
50
+ coverage.xml
51
+ *.cover
52
+ *.py,cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+ cover/
56
+
57
+ # Translations
58
+ *.mo
59
+ *.pot
60
+
61
+ # Django stuff:
62
+ *.log
63
+ local_settings.py
64
+ db.sqlite3
65
+ db.sqlite3-journal
66
+
67
+ # Flask stuff:
68
+ instance/
69
+ .webassets-cache
70
+
71
+ # Scrapy stuff:
72
+ .scrapy
73
+
74
+ # Sphinx documentation
75
+ docs/_build/
76
+
77
+ # PyBuilder
78
+ .pybuilder/
79
+ target/
80
+
81
+ # Jupyter Notebook
82
+ .ipynb_checkpoints
83
+
84
+ # IPython
85
+ profile_default/
86
+ ipython_config.py
87
+
88
+ # pyenv
89
+ # For a library or package, you might want to ignore these files since the code is
90
+ # intended to run in multiple environments; otherwise, check them in:
91
+ # .python-version
92
+
93
+ # pipenv
94
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
96
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
97
+ # install all needed dependencies.
98
+ #Pipfile.lock
99
+
100
+ # poetry
101
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
102
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
103
+ # commonly ignored for libraries.
104
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
105
+ #poetry.lock
106
+
107
+ # pdm
108
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
109
+ #pdm.lock
110
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
111
+ # in version control.
112
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
113
+ .pdm.toml
114
+ .pdm-python
115
+ .pdm-build/
116
+
117
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
118
+ __pypackages__/
119
+
120
+ # Celery stuff
121
+ celerybeat-schedule
122
+ celerybeat.pid
123
+
124
+ # SageMath parsed files
125
+ *.sage.py
126
+
127
+ # Environments
128
+ .env
129
+ .venv
130
+ env/
131
+ venv/
132
+ ENV/
133
+ env.bak/
134
+ venv.bak/
135
+
136
+ # Spyder project settings
137
+ .spyderproject
138
+ .spyproject
139
+
140
+ # Rope project settings
141
+ .ropeproject
142
+
143
+ # mkdocs documentation
144
+ /site
145
+
146
+ # mypy
147
+ .mypy_cache/
148
+ .dmypy.json
149
+ dmypy.json
150
+
151
+ # Pyre type checker
152
+ .pyre/
153
+
154
+ # pytype static type analyzer
155
+ .pytype/
156
+
157
+ # Cython debug symbols
158
+ cython_debug/
159
+
160
+ # PyCharm
161
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
162
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
163
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
164
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
165
+ #.idea/
166
+
167
+ # vscode
168
+ .vscode/
169
+ **/CLAUDE.local.md
170
+
171
+ ./downloads
172
+ ./test_downloads
@@ -0,0 +1,70 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ Academic Search MCP is a Model Context Protocol (MCP) server that enables Claude and other LLM clients to search and download academic papers from 12 platforms: arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, IACR, Semantic Scholar, CrossRef, OpenAlex, CORE, SSRN, and CyberLeninka.
8
+
9
+ Fork of [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp) with additional platforms.
10
+
11
+ ## Commands
12
+
13
+ ```bash
14
+ # Install dependencies (editable mode)
15
+ uv venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
16
+ uv add -e .
17
+
18
+ # Run tests
19
+ pytest tests/
20
+
21
+ # Run specific test
22
+ pytest tests/test_arxiv.py
23
+
24
+ # Run MCP server
25
+ python -m paper_search_mcp.server
26
+ ```
27
+
28
+ ## Architecture
29
+
30
+ ### Core Components
31
+
32
+ - **`server.py`** - MCP server entry point using FastMCP. Declares 18 tools with `@mcp.tool()` decorator
33
+ - **`paper.py`** - `Paper` dataclass for standardized output format across all platforms
34
+ - **`pdf_utils.py`** - PDF text extraction (pdftotext with PyPDF2 fallback)
35
+ - **`academic_platforms/`** - Platform-specific searchers, each inheriting from `PaperSource` base class
36
+
37
+ ### Data Flow
38
+
39
+ 1. MCP Tool receives request → 2. Platform searcher makes API call → 3. Response parsed into `Paper` objects → 4. Serialized via `paper.to_dict(abstract_limit)`
40
+
41
+ ### Base Class Pattern
42
+
43
+ All platform searchers inherit from `PaperSource` and implement:
44
+ - `search(query, **kwargs) -> List[Paper]`
45
+ - `download_pdf(paper_id, save_path) -> str`
46
+ - `read_paper(paper_id, save_path) -> str`
47
+
48
+ ### Tool Categories
49
+
50
+ - **Search**: `search_{platform}` for each of the 12 platforms
51
+ - **Metadata**: `get_paper_by_doi`, `get_crossref_paper_by_doi`, `get_openalex_work_by_id`
52
+ - **Citations**: `get_openalex_references`, `get_openalex_citations`
53
+ - **Authors**: `search_authors`, `get_author_papers`
54
+ - **Download/Read**: `download_paper`, `read_paper` (unified interface)
55
+
56
+ ## Conventions
57
+
58
+ - **Date format**: Always YYYY-MM-DD for `date_from`/`date_to` parameters
59
+ - **Abstract limit**: `abstract_limit` param controls truncation (0=omit, -1=full, default=200)
60
+ - **Searcher naming**: Classes are `{Platform}Searcher` (e.g., `ArxivSearcher`)
61
+ - **Error handling**: Return empty lists on API errors, use logging, graceful degradation
62
+
63
+ ## Adding a New Platform
64
+
65
+ 1. Create `paper_search_mcp/academic_platforms/{platform}.py`
66
+ 2. Create class inheriting from `PaperSource`
67
+ 3. Implement `search()`, `download_pdf()`, `read_paper()` methods
68
+ 4. Add searcher instance to `SEARCHERS` dict in `server.py`
69
+ 5. Create `@mcp.tool()` function for `search_{platform}`
70
+ 6. Add test file `tests/test_{platform}.py`
@@ -0,0 +1,19 @@
1
+ # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
2
+ FROM python:3.10-alpine
3
+
4
+ # Install system dependencies
5
+ RUN apk add --no-cache build-base libffi-dev openssl-dev
6
+
7
+ WORKDIR /app
8
+
9
+ # Copy the entire repository
10
+ COPY . .
11
+
12
+ # Upgrade pip and install dependencies
13
+ RUN pip install --upgrade pip \
14
+ && pip install --no-cache-dir .
15
+
16
+ # Expose port if necessary (MCP servers use stdio; no port to expose)
17
+
18
+ # Command to run the MCP server
19
+ CMD ["python", "-m", "paper_search_mcp.server"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 OPENAGS
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,243 @@
1
+ Metadata-Version: 2.4
2
+ Name: academic-search-mcp
3
+ Version: 0.1.3
4
+ Summary: A MCP server for searching and downloading academic papers from multiple sources.
5
+ Author-email: "P.S Zhang" <pengsongzhang96@gmail.com>
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.10
8
+ Requires-Dist: beautifulsoup4>=4.12.0
9
+ Requires-Dist: curl-cffi>=0.5.0
10
+ Requires-Dist: fastmcp
11
+ Requires-Dist: feedparser
12
+ Requires-Dist: httpx[socks]>=0.28.1
13
+ Requires-Dist: lxml>=4.9.0
14
+ Requires-Dist: mcp[cli]>=1.6.0
15
+ Requires-Dist: pypdf2>=3.0.0
16
+ Requires-Dist: requests
17
+ Description-Content-Type: text/markdown
18
+
19
+ # Academic Search MCP
20
+
21
+ A Model Context Protocol (MCP) server for searching and downloading academic papers from multiple sources. Designed for seamless integration with large language models like Claude Desktop.
22
+
23
+ > **Fork Notice**: This is an extended fork of [openags/academic-search-mcp](https://github.com/openags/academic-search-mcp) with additional platforms (CORE, SSRN, CyberLeninka) and improvements.
24
+
25
+ ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
26
+
27
+ ---
28
+
29
+ ## Table of Contents
30
+
31
+ - [Overview](#overview)
32
+ - [Features](#features)
33
+ - [Installation](#installation)
34
+ - [Quick Start](#quick-start)
35
+ - [Install Package](#install-package)
36
+ - [Configure Claude Desktop](#configure-claude-desktop)
37
+ - [For Development](#for-development)
38
+ - [Setup Environment](#setup-environment)
39
+ - [Install Dependencies](#install-dependencies)
40
+ - [Contributing](#contributing)
41
+ - [Demo](#demo)
42
+ - [License](#license)
43
+ - [TODO](#todo)
44
+
45
+ ---
46
+
47
+ ## Overview
48
+
49
+ `academic-search-mcp` is a Python-based MCP server that enables users to search and download academic papers from various platforms. It provides tools for searching papers (e.g., `search_arxiv`) and downloading PDFs (e.g., `download_arxiv`), making it ideal for researchers and AI-driven workflows. Built with the MCP Python SDK, it integrates seamlessly with LLM clients like Claude Desktop.
50
+
51
+ ---
52
+
53
+ ## Features
54
+
55
+ - **Multi-Source Support**: Search and download papers from arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, IACR ePrint Archive, Semantic Scholar, CrossRef, OpenAlex, CORE, SSRN, and CyberLeninka.
56
+ - **Date Filtering**: All sources support `date_from` and `date_to` parameters (YYYY-MM-DD format) to filter papers by publication date.
57
+ - **Citation Counts**: OpenAlex, Semantic Scholar, CrossRef, and Google Scholar include citation counts in search results.
58
+ - **Citation Graph**: OpenAlex tools to explore references (papers a work cites) and citations (papers citing a work), sorted by impact.
59
+ - **Open Access PDFs**: OpenAlex includes PDF URLs for open access papers.
60
+ - **Token-Optimized Output**: Configurable `abstract_limit` parameter to control abstract length (default: 200 chars, use -1 for full, 0 to omit).
61
+ - **Standardized Output**: Papers are returned in a consistent, compact dictionary format via the `Paper` class.
62
+ - **Asynchronous Tools**: Efficiently handles network requests using `httpx`.
63
+ - **MCP Integration**: Compatible with MCP clients for LLM context enhancement.
64
+ - **Extensible Design**: Easily add new academic platforms by extending the `academic_platforms` module.
65
+
66
+ ### Search Parameters
67
+
68
+ All search tools support these common parameters:
69
+
70
+ | Parameter | Type | Default | Description |
71
+ |-----------|------|---------|-------------|
72
+ | `query` | str | required | Search query string |
73
+ | `max_results` | int | 10 | Maximum number of papers to return |
74
+ | `abstract_limit` | int | 200 | Max chars for abstract (0=omit, -1=full) |
75
+ | `date_from` | str | None | Start date in YYYY-MM-DD format |
76
+ | `date_to` | str | None | End date in YYYY-MM-DD format |
77
+
78
+ > **Note**: Google Scholar only supports year-level filtering (month/day are ignored).
79
+
80
+ ---
81
+
82
+ ## Installation
83
+
84
+ ### Quick Start with uvx
85
+
86
+ The easiest way to use `academic-search-mcp`:
87
+
88
+ ```bash
89
+ uvx academic-search-mcp
90
+ ```
91
+
92
+ Or install globally:
93
+
94
+ ```bash
95
+ uv tool install academic-search-mcp
96
+ ```
97
+
98
+ ### Configure Claude Desktop
99
+
100
+ Add this configuration to `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
101
+
102
+ ```json
103
+ {
104
+ "mcpServers": {
105
+ "academic_search": {
106
+ "command": "uvx",
107
+ "args": ["academic-search-mcp"]
108
+ }
109
+ }
110
+ }
111
+ ```
112
+
113
+ ### Alternative: Install with pip/uv
114
+
115
+ ```bash
116
+ pip install academic-search-mcp
117
+ # or
118
+ uv add academic-search-mcp
119
+ ```
120
+
121
+ 2. **Configure Claude Desktop (alternative)**:
122
+ Add this configuration to `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
123
+ ```json
124
+ {
125
+ "mcpServers": {
126
+ "paper_search_server": {
127
+ "command": "uv",
128
+ "args": [
129
+ "run",
130
+ "--directory",
131
+ "/path/to/your/academic-search-mcp",
132
+ "-m",
133
+ "paper_search_mcp.server"
134
+ ],
135
+ "env": {
136
+ "SEMANTIC_SCHOLAR_API_KEY": "", // Optional: For enhanced Semantic Scholar features
137
+ "CORE_API_KEY": "" // Optional: for CORE repository access
138
+ }
139
+ }
140
+ }
141
+ }
142
+ ```
143
+ > Note: Replace `/path/to/your/academic-search-mcp` with your actual installation path.
144
+
145
+ ### For Development
146
+
147
+ For developers who want to modify the code or contribute:
148
+
149
+ 1. **Setup Environment**:
150
+
151
+ ```bash
152
+ # Install uv if not installed
153
+ curl -LsSf https://astral.sh/uv/install.sh | sh
154
+
155
+ # Clone repository
156
+ git clone https://github.com/openags/academic-search-mcp.git
157
+ cd academic-search-mcp
158
+
159
+ # Create and activate virtual environment
160
+ uv venv
161
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
162
+ ```
163
+
164
+ 2. **Install Dependencies**:
165
+
166
+ ```bash
167
+ # Install project in editable mode
168
+ uv add -e .
169
+
170
+ # Add development dependencies (optional)
171
+ uv add pytest flake8
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Contributing
177
+
178
+ We welcome contributions! Here's how to get started:
179
+
180
+ 1. **Fork the Repository**:
181
+ Click "Fork" on GitHub.
182
+
183
+ 2. **Clone and Set Up**:
184
+
185
+ ```bash
186
+ git clone https://github.com/yourusername/academic-search-mcp.git
187
+ cd academic-search-mcp
188
+ pip install -e ".[dev]" # Install dev dependencies (if added to pyproject.toml)
189
+ ```
190
+
191
+ 3. **Make Changes**:
192
+
193
+ - Add new platforms in `academic_platforms/`.
194
+ - Update tests in `tests/`.
195
+
196
+ 4. **Submit a Pull Request**:
197
+ Push changes and create a PR on GitHub.
198
+
199
+ ---
200
+
201
+ ## Demo
202
+
203
+ <img src="docs\images\demo.png" alt="Demo" width="800">
204
+
205
+ ## TODO
206
+
207
+ ### Planned Academic Platforms
208
+
209
+ - [x] arXiv
210
+ - [x] PubMed
211
+ - [x] bioRxiv
212
+ - [x] medRxiv
213
+ - [x] Google Scholar
214
+ - [x] IACR ePrint Archive
215
+ - [x] Semantic Scholar
216
+ - [x] CrossRef
217
+ - [x] OpenAlex
218
+ - [x] CORE (200M+ open access papers)
219
+ - [x] SSRN (social sciences, law, business preprints)
220
+ - [x] CyberLeninka (Russian academic papers, VAK/RSCI/SCOPUS filters)
221
+ - [ ] PubMed Central (PMC)
222
+ - [ ] Science Direct
223
+ - [ ] Springer Link
224
+ - [ ] IEEE Xplore
225
+ - [ ] ACM Digital Library
226
+ - [ ] Web of Science
227
+ - [ ] Scopus
228
+ - [ ] JSTOR
229
+ - [ ] ResearchGate
230
+
231
+ ---
232
+
233
+ ## License
234
+
235
+ This project is licensed under the MIT License. See the LICENSE file for details.
236
+
237
+ ---
238
+
239
+ Happy researching with `academic-search-mcp`!
240
+
241
+ ## Credits
242
+
243
+ Based on [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp) by P.S Zhang.