all-in-mcp 0.2.6__py3-none-any.whl → 0.2.7__py3-none-any.whl
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.
- all_in_mcp/academic_platforms/iacr.py +13 -2
- all_in_mcp/server.py +30 -3
- {all_in_mcp-0.2.6.dist-info → all_in_mcp-0.2.7.dist-info}/METADATA +2 -2
- {all_in_mcp-0.2.6.dist-info → all_in_mcp-0.2.7.dist-info}/RECORD +7 -7
- {all_in_mcp-0.2.6.dist-info → all_in_mcp-0.2.7.dist-info}/WHEEL +0 -0
- {all_in_mcp-0.2.6.dist-info → all_in_mcp-0.2.7.dist-info}/entry_points.txt +0 -0
- {all_in_mcp-0.2.6.dist-info → all_in_mcp-0.2.7.dist-info}/licenses/LICENSE +0 -0
@@ -141,7 +141,12 @@ class IACRSearcher(PaperSource):
|
|
141
141
|
return None
|
142
142
|
|
143
143
|
def search(
|
144
|
-
self,
|
144
|
+
self,
|
145
|
+
query: str,
|
146
|
+
max_results: int = 10,
|
147
|
+
fetch_details: bool = True,
|
148
|
+
year_min: int | None = None,
|
149
|
+
year_max: int | None = None,
|
145
150
|
) -> list[Paper]:
|
146
151
|
"""
|
147
152
|
Search IACR ePrint Archive
|
@@ -150,6 +155,8 @@ class IACRSearcher(PaperSource):
|
|
150
155
|
query: Search query string
|
151
156
|
max_results: Maximum number of results to return
|
152
157
|
fetch_details: Whether to fetch detailed information for each paper (slower but more complete)
|
158
|
+
year_min: Minimum publication year (revised after)
|
159
|
+
year_max: Maximum publication year (revised before)
|
153
160
|
|
154
161
|
Returns:
|
155
162
|
List[Paper]: List of paper objects
|
@@ -158,7 +165,11 @@ class IACRSearcher(PaperSource):
|
|
158
165
|
|
159
166
|
try:
|
160
167
|
# Construct search parameters
|
161
|
-
params = {"q": query}
|
168
|
+
params: dict[str, str | int] = {"q": query}
|
169
|
+
if year_min:
|
170
|
+
params["revisedafter"] = year_min
|
171
|
+
if year_max:
|
172
|
+
params["revisedbefore"] = year_max
|
162
173
|
|
163
174
|
# Make request
|
164
175
|
response = self.session.get(self.IACR_SEARCH_URL, params=params)
|
all_in_mcp/server.py
CHANGED
@@ -47,6 +47,14 @@ async def handle_list_tools() -> list[types.Tool]:
|
|
47
47
|
"description": "Whether to fetch detailed information for each paper (default: True)",
|
48
48
|
"default": True,
|
49
49
|
},
|
50
|
+
"year_min": {
|
51
|
+
"type": "integer",
|
52
|
+
"description": "Minimum publication year (revised after)",
|
53
|
+
},
|
54
|
+
"year_max": {
|
55
|
+
"type": "integer",
|
56
|
+
"description": "Maximum publication year (revised before)",
|
57
|
+
},
|
50
58
|
},
|
51
59
|
"required": ["query"],
|
52
60
|
},
|
@@ -217,6 +225,8 @@ async def handle_call_tool(
|
|
217
225
|
query = arguments.get("query", "")
|
218
226
|
max_results = arguments.get("max_results", 10)
|
219
227
|
fetch_details = arguments.get("fetch_details", True)
|
228
|
+
year_min = arguments.get("year_min")
|
229
|
+
year_max = arguments.get("year_max")
|
220
230
|
|
221
231
|
if not query:
|
222
232
|
return [
|
@@ -225,17 +235,34 @@ async def handle_call_tool(
|
|
225
235
|
)
|
226
236
|
]
|
227
237
|
|
228
|
-
papers = iacr_searcher.search(
|
238
|
+
papers = iacr_searcher.search(
|
239
|
+
query,
|
240
|
+
max_results=max_results,
|
241
|
+
fetch_details=fetch_details,
|
242
|
+
year_min=year_min,
|
243
|
+
year_max=year_max,
|
244
|
+
)
|
229
245
|
|
230
246
|
if not papers:
|
247
|
+
year_filter_msg = ""
|
248
|
+
if year_min or year_max:
|
249
|
+
year_range = f" ({year_min or 'earliest'}-{year_max or 'latest'})"
|
250
|
+
year_filter_msg = f" in year range{year_range}"
|
231
251
|
return [
|
232
252
|
types.TextContent(
|
233
|
-
type="text",
|
253
|
+
type="text",
|
254
|
+
text=f"No papers found for query: {query}{year_filter_msg}",
|
234
255
|
)
|
235
256
|
]
|
236
257
|
|
237
258
|
# Format the results
|
238
|
-
|
259
|
+
year_filter_msg = ""
|
260
|
+
if year_min or year_max:
|
261
|
+
year_range = f" ({year_min or 'earliest'}-{year_max or 'latest'})"
|
262
|
+
year_filter_msg = f" in year range{year_range}"
|
263
|
+
result_text = (
|
264
|
+
f"Found {len(papers)} IACR papers for query '{query}'{year_filter_msg}:\n\n"
|
265
|
+
)
|
239
266
|
for i, paper in enumerate(papers, 1):
|
240
267
|
result_text += f"{i}. **{paper.title}**\n"
|
241
268
|
result_text += f" - Paper ID: {paper.paper_id}\n"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: all-in-mcp
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.7
|
4
4
|
Summary: An MCP (Model Context Protocol) server providing daily-use utility functions and academic paper search capabilities
|
5
5
|
Project-URL: Homepage, https://github.com/jiahaoxiang2000/all-in-mcp
|
6
6
|
Project-URL: Repository, https://github.com/jiahaoxiang2000/all-in-mcp
|
@@ -78,7 +78,7 @@ All tools are implemented as async MCP endpoints with proper validation and erro
|
|
78
78
|
|
79
79
|
### Prerequisites
|
80
80
|
|
81
|
-
- Python 3.
|
81
|
+
- Python 3.10 or higher
|
82
82
|
- UV package manager
|
83
83
|
|
84
84
|
### Installation
|
@@ -1,14 +1,14 @@
|
|
1
1
|
all_in_mcp/__init__.py,sha256=REDwcbifpuUnsFAhNowIKCZ-8g6irIzUFTI_f8Aunxk,215
|
2
2
|
all_in_mcp/paper.py,sha256=vSJyC_ehfZX5-ASYG048z8gaD1LKafFdJvR13iQcJRw,7104
|
3
|
-
all_in_mcp/server.py,sha256=
|
3
|
+
all_in_mcp/server.py,sha256=NQ-AEARpZXafLs_yTUKmSC2I32tLQUVL_KLYdefWdm0,25585
|
4
4
|
all_in_mcp/academic_platforms/__init__.py,sha256=IpI29DMS4_mSmTEa8VkQEiJCl7OyFbswSx7mWSp08P4,285
|
5
5
|
all_in_mcp/academic_platforms/base.py,sha256=VYMp8_tnp7YzXKAXLfr7uUxgvJBNKRyC_NT1uVhBOwY,673
|
6
6
|
all_in_mcp/academic_platforms/crossref.py,sha256=D-wvSwnOocP16m9fA3xJ6VGEpmRPtMmGoFm5MlyPdXE,8707
|
7
7
|
all_in_mcp/academic_platforms/cryptobib.py,sha256=F9N23eojfyAIjnFDPrJAYOpZ_Vi9iHOqNHGtKC6O16c,17360
|
8
8
|
all_in_mcp/academic_platforms/google_scholar.py,sha256=_KLFfIOZeFCGxFOt-nwzm1fgZKMlXOf3HvIjXAYE5cI,8737
|
9
|
-
all_in_mcp/academic_platforms/iacr.py,sha256=
|
10
|
-
all_in_mcp-0.2.
|
11
|
-
all_in_mcp-0.2.
|
12
|
-
all_in_mcp-0.2.
|
13
|
-
all_in_mcp-0.2.
|
14
|
-
all_in_mcp-0.2.
|
9
|
+
all_in_mcp/academic_platforms/iacr.py,sha256=CMv3kVvF7NiZJdtvXc8xoGOP-gMNnAkhIETTbYTP75o,15849
|
10
|
+
all_in_mcp-0.2.7.dist-info/METADATA,sha256=r2v5qsm0TwWdfUZwFGuaFxVSeyh9PYlarJym8Kt6pFM,4242
|
11
|
+
all_in_mcp-0.2.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
12
|
+
all_in_mcp-0.2.7.dist-info/entry_points.txt,sha256=FbQOtUQzOIfkMNp4qQV1NTU9K4J7C0XGH9wKKhfK1VM,47
|
13
|
+
all_in_mcp-0.2.7.dist-info/licenses/LICENSE,sha256=idExTHItK7AC5FVo4H9HKnr6h51Z8BKCEztZPyP8nK8,1062
|
14
|
+
all_in_mcp-0.2.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|