Skip to content

Commit cd6785f

Browse files
committed
Add query cache; Remove CORE API
1 parent a949263 commit cd6785f

4 files changed

Lines changed: 179 additions & 252 deletions

File tree

README.md

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Scholar Search MCP
22

3-
A MCP server that integrates the [CORE API v3](https://api.core.ac.uk/docs/v3), [Semantic Scholar API](https://www.semanticscholar.org/product/api), and [arXiv API](https://info.arxiv.org/help/api/user-manual.html) so AI assistants (e.g. Claude, Cursor) can search and fetch academic paper metadata.
3+
A MCP server that integrates the [Semantic Scholar API](https://www.semanticscholar.org/product/api) and [arXiv API](https://info.arxiv.org/help/api/user-manual.html) so AI assistants (e.g. Claude, Cursor) can search and fetch academic paper metadata.
44

55
## Features
66

7-
- **Search papers** – Keyword search with **fallback chain**: tries **CORE API** first (no key required; set `CORE_API_KEY` for higher limits), then **Semantic Scholar**, then **arXiv**; optional year and venue filters (venue applies to Semantic Scholar only)
7+
- **Search papers** – Keyword search with parallel merge from **Semantic Scholar** and **arXiv**; optional year and venue filters (venue applies to Semantic Scholar only)
88
- **Paper details** – Full metadata (title, authors, abstract, citations, etc.)
99
- **Citations & references** – Papers that cite or are cited by a given paper
1010
- **Author info** – Author profile and paper list
@@ -36,7 +36,6 @@ Add:
3636
"command": "python",
3737
"args": ["-m", "scholar_search_mcp"],
3838
"env": {
39-
"SCHOLAR_SEARCH_ENABLE_CORE": "false", // enable https://core.ac.uk/
4039
"SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR": "true", // enable https://www.semanticscholar.org/
4140
"SCHOLAR_SEARCH_ENABLE_ARXIV": "true" // enable https://arxiv.org/
4241
}
@@ -54,9 +53,7 @@ If you have API keys (optional but recommended for search):
5453
"command": "python",
5554
"args": ["-m", "scholar_search_mcp"],
5655
"env": {
57-
"CORE_API_KEY": "your-core-api-key-here",
5856
"SEMANTIC_SCHOLAR_API_KEY": "your-semantic-scholar-api-key-here",
59-
"SCHOLAR_SEARCH_ENABLE_CORE": "true", // enable https://core.ac.uk/
6057
"SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR": "true", // enable https://www.semanticscholar.org/
6158
"SCHOLAR_SEARCH_ENABLE_ARXIV": "true" // enable https://arxiv.org/
6259
}
@@ -71,22 +68,20 @@ Add an MCP server in Cursor settings with the same `command`, `args`, and `env`
7168

7269
### API keys (optional)
7370

74-
**Search fallback order:** When you call `search_papers`, the server tries sources in order and uses the first that succeeds:
71+
`search_papers` queries enabled sources in parallel and merges results by title:
7572

76-
1. **CORE API** – Tried first; works without a key (subject to [rate limits](https://api.core.ac.uk/docs/v3#section/Rate-limits)). Set `CORE_API_KEY` for higher limits ([register](https://core.ac.uk/api-keys/register)).
77-
2. **Semantic Scholar** – Used if CORE fails; works without a key with lower limits. Set `SEMANTIC_SCHOLAR_API_KEY` for higher limits.
78-
3. **arXiv** – Used as last fallback; no key required.
73+
1. **Semantic Scholar** – Works without a key with lower limits. Set `SEMANTIC_SCHOLAR_API_KEY` for higher limits.
74+
2. **arXiv** – No key required.
7975

8076
### Enable/disable search channels
8177

82-
Control which sources are used in the `search_papers` fallback chain via environment variables (default: all enabled):
78+
Control which sources are used in `search_papers` via environment variables (default: all enabled):
8379

8480

85-
| Variable | Description |
86-
| ---------------------------------------- | ---------------------------------------------------------------------- |
87-
| `SCHOLAR_SEARCH_ENABLE_CORE` | Use CORE API (default: true). Set to `0`, `false`, or `no` to disable. |
88-
| `SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR` | Use Semantic Scholar (default: true). |
89-
| `SCHOLAR_SEARCH_ENABLE_ARXIV` | Use arXiv (default: true). |
81+
| Variable | Description |
82+
| ---------------------------------------- | ------------------------------------- |
83+
| `SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR` | Use Semantic Scholar (default: true). |
84+
| `SCHOLAR_SEARCH_ENABLE_ARXIV` | Use arXiv (default: true). |
9085

9186
Example: CORE and arXiv only (skip Semantic Scholar):
9287

@@ -132,7 +127,6 @@ MIT
132127

133128
## Links
134129

135-
- [CORE API v3 Documentation](https://api.core.ac.uk/docs/v3)
136130
- [Semantic Scholar API](https://api.semanticscholar.org/api-docs)
137131
- [arXiv API User's Manual](https://info.arxiv.org/help/api/user-manual.html)
138132

pyproject.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "scholar-search-mcp"
7-
version = "0.1.2"
7+
version = "0.1.3"
88
description = "Model Context Protocol server for Semantic Scholar API"
99
readme = "README.md"
1010
requires-python = ">=3.10"
@@ -23,6 +23,7 @@ classifiers = [
2323
dependencies = [
2424
"mcp>=0.9.0",
2525
"httpx>=0.25.0",
26+
"diskcache>=5.6.0"
2627
]
2728

2829
[project.optional-dependencies]
@@ -31,9 +32,9 @@ dev = [
3132
]
3233

3334
[project.urls]
34-
Homepage = "https://github.com/yourusername/scholar-search-mcp"
35-
Repository = "https://github.com/yourusername/scholar-search-mcp"
36-
Issues = "https://github.com/yourusername/scholar-search-mcp/issues"
35+
Homepage = "https://github.com/silung/scholar-search-mcp"
36+
Repository = "https://github.com/silung/scholar-search-mcp"
37+
Issues = "https://github.com/silung/scholar-search-mcp/issues"
3738

3839
[tool.setuptools.packages.find]
3940
where = ["."]

scholar_search_mcp/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Scholar Search MCP - Semantic Scholar API via Model Context Protocol."""
22

3-
__version__ = "0.1.0"
3+
__version__ = "0.1.3"
44

55
from .server import main
66

0 commit comments

Comments
 (0)