all-in-mcp 0.2.3__tar.gz → 0.2.6__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.
@@ -0,0 +1,129 @@
1
+ Metadata-Version: 2.4
2
+ Name: all-in-mcp
3
+ Version: 0.2.6
4
+ Summary: An MCP (Model Context Protocol) server providing daily-use utility functions and academic paper search capabilities
5
+ Project-URL: Homepage, https://github.com/jiahaoxiang2000/all-in-mcp
6
+ Project-URL: Repository, https://github.com/jiahaoxiang2000/all-in-mcp
7
+ Project-URL: Documentation, https://github.com/jiahaoxiang2000/all-in-mcp/tree/main/docs
8
+ Project-URL: Issues, https://github.com/jiahaoxiang2000/all-in-mcp/issues
9
+ Author-email: isomo <jiahaoxiang2000@gmail.com>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: academic,iacr,mcp,model-context-protocol,papers,utilities
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Scientific/Engineering
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Topic :: Text Processing :: General
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: beautifulsoup4>=4.12.0
27
+ Requires-Dist: feedparser>=6.0.10
28
+ Requires-Dist: httpx>=0.24.0
29
+ Requires-Dist: mcp>=1.9.4
30
+ Requires-Dist: pypdf>=4.0.0
31
+ Requires-Dist: requests>=2.31.0
32
+ Provides-Extra: all
33
+ Requires-Dist: psutil>=5.9.0; extra == 'all'
34
+ Provides-Extra: dev
35
+ Requires-Dist: build>=1.0.0; extra == 'dev'
36
+ Requires-Dist: mypy>=1.5.0; extra == 'dev'
37
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
38
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
39
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
40
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
41
+ Requires-Dist: twine>=4.0.0; extra == 'dev'
42
+ Provides-Extra: system
43
+ Requires-Dist: psutil>=5.9.0; extra == 'system'
44
+ Description-Content-Type: text/markdown
45
+
46
+ # All-in-MCP
47
+
48
+ An MCP (Model Context Protocol) server that provides utility functions, including academic paper search capabilities.
49
+
50
+ - [**Paper Tools overview _Video_**](https://www.bilibili.com/video/BV1RMKWzdEk8)
51
+ - [_Overview PDF_](https://github.com/jiahaoxiang2000/tutor/blob/main/Apaper/setup.pdf)
52
+
53
+ ## Features
54
+
55
+ This MCP server exposes the following daily-use utility tools as MCP endpoints:
56
+
57
+ ### Available Tools
58
+
59
+ - **Academic Research**:
60
+ - `search-iacr-papers`: Search academic papers from IACR ePrint Archive
61
+ - `download-iacr-paper`: Download PDF of an IACR ePrint paper
62
+ - `read-iacr-paper`: Read and extract text content from an IACR ePrint paper PDF
63
+ - **Bibliography Search**:
64
+ - `search-cryptobib-papers`: Search CryptoBib bibliography database for cryptography papers (structured metadata or raw BibTeX)
65
+ - **Crossref Search**:
66
+ - `search-crossref-papers`: Search academic papers from Crossref database
67
+ - **Google Scholar**:
68
+ - `search-google-scholar-papers`: Search academic papers across disciplines with citation data
69
+ - **PDF Reading**:
70
+ - `read-pdf`: Read and extract text from local and online PDF files
71
+
72
+ All tools are implemented as async MCP endpoints with proper validation and error handling.
73
+
74
+ ## Quick Start
75
+
76
+ - [**Video for Env Setup**](https://www.bilibili.com/video/BV1cZKozaEjg)
77
+ - [_Overview PDF_](https://github.com/jiahaoxiang2000/tutor/blob/main/Apaper/config.pdf)
78
+
79
+ ### Prerequisites
80
+
81
+ - Python 3.12 or higher
82
+ - UV package manager
83
+
84
+ ### Installation
85
+
86
+ Install from PyPI (Recommended by `UV`)
87
+
88
+ ```bash
89
+ uv pip install all-in-mcp
90
+ ```
91
+
92
+ ### Integration with MCP Clients Vscode
93
+
94
+ Add this server to your MCP client configuration. The server runs using stdio transport.
95
+
96
+ Example configuration for Vscode:
97
+
98
+ ```json .vscode/mcp.json
99
+ {
100
+ "servers": {
101
+ "all-in-mcp": {
102
+ "type": "stdio",
103
+ "command": "uv",
104
+ "args": ["run", "all-in-mcp"]
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ <details>
111
+ <summary>Development</summary>
112
+
113
+ For development setup and contribution guidelines, see the [Development Guide](docs/development.md).
114
+
115
+ ### Quick Development Setup
116
+
117
+ ```bash
118
+ # Clone the repository
119
+ git clone https://github.com/jiahaoxiang2000/all-in-mcp.git
120
+ cd all-in-mcp
121
+
122
+ # Install with development dependencies
123
+ uv sync --extra dev
124
+
125
+ # Run tests
126
+ uv run pytest
127
+ ```
128
+
129
+ </details>
@@ -0,0 +1,84 @@
1
+ # All-in-MCP
2
+
3
+ An MCP (Model Context Protocol) server that provides utility functions, including academic paper search capabilities.
4
+
5
+ - [**Paper Tools overview _Video_**](https://www.bilibili.com/video/BV1RMKWzdEk8)
6
+ - [_Overview PDF_](https://github.com/jiahaoxiang2000/tutor/blob/main/Apaper/setup.pdf)
7
+
8
+ ## Features
9
+
10
+ This MCP server exposes the following daily-use utility tools as MCP endpoints:
11
+
12
+ ### Available Tools
13
+
14
+ - **Academic Research**:
15
+ - `search-iacr-papers`: Search academic papers from IACR ePrint Archive
16
+ - `download-iacr-paper`: Download PDF of an IACR ePrint paper
17
+ - `read-iacr-paper`: Read and extract text content from an IACR ePrint paper PDF
18
+ - **Bibliography Search**:
19
+ - `search-cryptobib-papers`: Search CryptoBib bibliography database for cryptography papers (structured metadata or raw BibTeX)
20
+ - **Crossref Search**:
21
+ - `search-crossref-papers`: Search academic papers from Crossref database
22
+ - **Google Scholar**:
23
+ - `search-google-scholar-papers`: Search academic papers across disciplines with citation data
24
+ - **PDF Reading**:
25
+ - `read-pdf`: Read and extract text from local and online PDF files
26
+
27
+ All tools are implemented as async MCP endpoints with proper validation and error handling.
28
+
29
+ ## Quick Start
30
+
31
+ - [**Video for Env Setup**](https://www.bilibili.com/video/BV1cZKozaEjg)
32
+ - [_Overview PDF_](https://github.com/jiahaoxiang2000/tutor/blob/main/Apaper/config.pdf)
33
+
34
+ ### Prerequisites
35
+
36
+ - Python 3.12 or higher
37
+ - UV package manager
38
+
39
+ ### Installation
40
+
41
+ Install from PyPI (Recommended by `UV`)
42
+
43
+ ```bash
44
+ uv pip install all-in-mcp
45
+ ```
46
+
47
+ ### Integration with MCP Clients Vscode
48
+
49
+ Add this server to your MCP client configuration. The server runs using stdio transport.
50
+
51
+ Example configuration for Vscode:
52
+
53
+ ```json .vscode/mcp.json
54
+ {
55
+ "servers": {
56
+ "all-in-mcp": {
57
+ "type": "stdio",
58
+ "command": "uv",
59
+ "args": ["run", "all-in-mcp"]
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ <details>
66
+ <summary>Development</summary>
67
+
68
+ For development setup and contribution guidelines, see the [Development Guide](docs/development.md).
69
+
70
+ ### Quick Development Setup
71
+
72
+ ```bash
73
+ # Clone the repository
74
+ git clone https://github.com/jiahaoxiang2000/all-in-mcp.git
75
+ cd all-in-mcp
76
+
77
+ # Install with development dependencies
78
+ uv sync --extra dev
79
+
80
+ # Run tests
81
+ uv run pytest
82
+ ```
83
+
84
+ </details>
@@ -108,6 +108,56 @@ URL: https://eprint.iacr.org/2023/1234
108
108
  [Full extracted text content]
109
109
  ```
110
110
 
111
+ ## Google Scholar Search
112
+
113
+ ### search-google-scholar-papers
114
+
115
+ Search academic papers from Google Scholar. This provides broad coverage across multiple academic disciplines and includes citation information.
116
+
117
+ **Parameters:**
118
+
119
+ - `query` (string, required): Search query string (e.g., 'machine learning', 'neural networks')
120
+ - `max_results` (integer, optional): Maximum number of results to return (default: 10)
121
+ - `year_low` (integer, optional): Minimum publication year for filtering
122
+ - `year_high` (integer, optional): Maximum publication year for filtering
123
+
124
+ **Returns:**
125
+
126
+ - List of papers with metadata (title, authors, citations, year, URL, abstract)
127
+
128
+ **Example:**
129
+
130
+ ```json
131
+ {
132
+ "name": "search-google-scholar-papers",
133
+ "arguments": {
134
+ "query": "deep learning transformers",
135
+ "max_results": 5,
136
+ "year_low": 2020,
137
+ "year_high": 2024
138
+ }
139
+ }
140
+ ```
141
+
142
+ **Response:**
143
+
144
+ ```
145
+ Found 3 Google Scholar papers for query 'deep learning transformers' in year range (2020-2024):
146
+
147
+ 1. **Attention Is All You Need**
148
+ - Authors: Ashish Vaswani, Noam Shazeer, Niki Parmar
149
+ - Citations: 85234
150
+ - Year: 2017
151
+ - URL: https://papers.nips.cc/paper/7181-attention-is-all-you-need
152
+ - Abstract: The dominant sequence transduction models are based on complex recurrent or convolutional neural networks...
153
+ ```
154
+
155
+ **Limitations:**
156
+
157
+ - No direct PDF downloads (redirects to publisher websites)
158
+ - Rate limiting may apply for frequent requests
159
+ - Results may vary based on geographic location
160
+
111
161
  ## CryptoBib Bibliography Search
112
162
 
113
163
  ### search-cryptobib-papers
@@ -0,0 +1,215 @@
1
+ # Google Scholar Integration
2
+
3
+ This document describes the Google Scholar integration in the all-in-mcp server.
4
+
5
+ ## Overview
6
+
7
+ The Google Scholar integration provides academic paper searching capabilities through Google Scholar's web interface. Unlike other academic platforms, Google Scholar aggregates papers from multiple sources and provides citation counts and broader coverage of academic literature.
8
+
9
+ ## Features
10
+
11
+ - **Paper Search**: Search for academic papers across multiple disciplines
12
+ - **Citation Information**: Get citation counts for papers
13
+ - **Multiple Source Coverage**: Access papers from various publishers and repositories
14
+ - **Year-based Filtering**: Filter search results by publication year range
15
+
16
+ ## Available Tools
17
+
18
+ ### search-google-scholar-papers
19
+
20
+ Search for academic papers using Google Scholar.
21
+
22
+ **Parameters:**
23
+
24
+ - `query` (required): Search query string (e.g., "machine learning", "neural networks")
25
+ - `max_results` (optional): Maximum number of papers to return (default: 10, max: 100)
26
+ - `year_low` (optional): Minimum publication year for filtering results
27
+ - `year_high` (optional): Maximum publication year for filtering results
28
+
29
+ **Example Usage:**
30
+
31
+ ```json
32
+ {
33
+ "query": "deep learning transformers",
34
+ "max_results": 5,
35
+ "year_low": 2020,
36
+ "year_high": 2024
37
+ }
38
+ ```
39
+
40
+ **Returns:**
41
+
42
+ - Paper title
43
+ - Authors list
44
+ - Citation count (when available)
45
+ - Publication year (when available)
46
+ - Paper URL
47
+ - Abstract (truncated to 300 characters)
48
+
49
+ ## Limitations
50
+
51
+ ### No Direct PDF Access
52
+
53
+ Google Scholar doesn't provide direct PDF downloads. Users need to:
54
+
55
+ 1. Use the provided paper URL to access the publisher's website
56
+ 2. Check if the paper is available through institutional access
57
+ 3. Look for open access versions on author websites or repositories
58
+
59
+ ### Rate Limiting
60
+
61
+ Google Scholar implements rate limiting to prevent automated scraping:
62
+
63
+ - The implementation includes random delays between requests (1-3 seconds)
64
+ - Multiple rapid requests may result in temporary blocks
65
+ - Consider using other sources (IACR, arXiv) for bulk operations
66
+
67
+ ### Search Result Variability
68
+
69
+ - Results may vary based on geographic location and Google's algorithms
70
+ - Some papers may not be accessible due to publisher restrictions
71
+ - Citation counts may not be real-time accurate
72
+
73
+ ## Implementation Details
74
+
75
+ ### Web Scraping Approach
76
+
77
+ The implementation uses web scraping with:
78
+
79
+ - Random user agent rotation to avoid detection
80
+ - BeautifulSoup for HTML parsing
81
+ - Request session management for cookie handling
82
+ - Error handling for network issues and parsing failures
83
+
84
+ ### Paper Data Extraction
85
+
86
+ The parser extracts:
87
+
88
+ - **Title**: From `h3.gs_rt` elements, cleaned of PDF/HTML markers
89
+ - **Authors**: From `div.gs_a` elements, parsed from publication info
90
+ - **Abstract**: From `div.gs_rs` elements when available
91
+ - **Citations**: From citation links in `div.gs_fl` elements
92
+ - **Year**: Extracted from publication information using regex patterns
93
+ - **URL**: From title links to source papers
94
+
95
+ ### Error Handling
96
+
97
+ - Network timeouts (30 seconds)
98
+ - HTTP error responses (rate limiting, server errors)
99
+ - Parsing failures for malformed HTML
100
+ - Missing required paper elements
101
+
102
+ ## Best Practices
103
+
104
+ ### Responsible Usage
105
+
106
+ 1. **Respect Rate Limits**: Don't make too many requests in quick succession
107
+ 2. **Cache Results**: Store search results locally to avoid repeated queries
108
+ 3. **Use Appropriate Delays**: The implementation includes built-in delays
109
+ 4. **Monitor for Blocks**: Be prepared to handle temporary access restrictions
110
+
111
+ ### Query Optimization
112
+
113
+ 1. **Specific Terms**: Use specific academic terms for better results
114
+ 2. **Author Names**: Include author names when searching for specific papers
115
+ 3. **Publication Venues**: Include conference or journal names for focused searches
116
+ 4. **Year Ranges**: Use year filters to narrow down results
117
+
118
+ ### Integration with Other Sources
119
+
120
+ Google Scholar works best when combined with other academic sources:
121
+
122
+ - Use IACR for cryptography papers with PDF access
123
+ - Use arXiv for preprints with full-text access
124
+ - Use institutional repositories for open access papers
125
+
126
+ ## Example Responses
127
+
128
+ ### Successful Search
129
+
130
+ ```
131
+ Found 3 Google Scholar papers for query 'machine learning healthcare':
132
+
133
+ 1. **Machine Learning in Healthcare: A Review**
134
+ - Authors: John Smith, Jane Doe, Bob Johnson
135
+ - Citations: 245
136
+ - Year: 2023
137
+ - URL: https://example.com/paper1
138
+ - Abstract: This comprehensive review examines the applications of machine learning techniques in healthcare settings, covering diagnostic imaging, predictive analytics, and treatment optimization...
139
+
140
+ 2. **Deep Learning for Medical Diagnosis**
141
+ - Authors: Alice Brown, Charlie Wilson
142
+ - Citations: 156
143
+ - Year: 2022
144
+ - URL: https://example.com/paper2
145
+ - Abstract: We present a novel deep learning framework for automated medical diagnosis using convolutional neural networks...
146
+ ```
147
+
148
+ ### Empty Results
149
+
150
+ ```
151
+ No papers found for query: obscure search term in year range (2025-2030)
152
+ ```
153
+
154
+ ### Error Response
155
+
156
+ ```
157
+ Error searching Google Scholar: HTTP 429 - Rate limit exceeded. Please try again later.
158
+ ```
159
+
160
+ ## Troubleshooting
161
+
162
+ ### Common Issues
163
+
164
+ **No Results Found**
165
+
166
+ - Check query spelling and syntax
167
+ - Try broader search terms
168
+ - Remove year filters if too restrictive
169
+ - Verify network connectivity
170
+
171
+ **Rate Limiting Errors**
172
+
173
+ - Wait before making additional requests
174
+ - Reduce the frequency of searches
175
+ - Consider using other academic sources
176
+ - Check if IP address is temporarily blocked
177
+
178
+ **Parsing Errors**
179
+
180
+ - Usually indicates changes in Google Scholar's HTML structure
181
+ - Check logs for specific parsing failures
182
+ - May require updates to the parsing logic
183
+
184
+ ### Development and Testing
185
+
186
+ **Testing Considerations**
187
+
188
+ - Use mock responses for unit tests to avoid rate limiting
189
+ - Test with various query types and edge cases
190
+ - Include tests for error conditions and edge cases
191
+ - Verify handling of malformed or incomplete results
192
+
193
+ **Debugging Tips**
194
+
195
+ - Enable detailed logging to see request/response details
196
+ - Check network connectivity and DNS resolution
197
+ - Verify user agent and headers are being sent correctly
198
+ - Test individual parsing functions with real HTML samples
199
+
200
+ ## Future Enhancements
201
+
202
+ ### Potential Improvements
203
+
204
+ 1. **Enhanced Parsing**: Better extraction of publication venues and DOIs
205
+ 2. **Citation Tracking**: Track citation networks and related papers
206
+ 3. **Advanced Filtering**: Filter by publication type, author affiliation
207
+ 4. **Result Caching**: Implement intelligent caching to reduce API calls
208
+ 5. **Proxy Support**: Add proxy rotation for high-volume usage
209
+
210
+ ### Integration Opportunities
211
+
212
+ 1. **Cross-Reference Validation**: Verify results against other academic databases
213
+ 2. **Full-Text Integration**: Combine with repository APIs for full-text access
214
+ 3. **Citation Analysis**: Integrate with citation analysis tools
215
+ 4. **Recommendation System**: Suggest related papers based on search history
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "all-in-mcp"
3
- version = "0.2.3"
3
+ version = "0.2.6"
4
4
  description = "An MCP (Model Context Protocol) server providing daily-use utility functions and academic paper search capabilities"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -1,6 +1,7 @@
1
1
  # all_in_mcp/academic_platforms/__init__.py
2
2
  from .base import PaperSource
3
3
  from .cryptobib import CryptoBibSearcher
4
+ from .google_scholar import GoogleScholarSearcher
4
5
  from .iacr import IACRSearcher
5
6
 
6
- __all__ = ["CryptoBibSearcher", "IACRSearcher", "PaperSource"]
7
+ __all__ = ["CryptoBibSearcher", "GoogleScholarSearcher", "IACRSearcher", "PaperSource"]