academia-mcp 1.6.5__tar.gz → 1.6.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.
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/PKG-INFO +1 -1
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/bitflip.py +4 -1
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/PKG-INFO +1 -1
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/pyproject.toml +1 -1
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_bitflip.py +16 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/LICENSE +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/README.md +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/__init__.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/__main__.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/files.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/latex_templates/agents4science_2025/agents4science_2025.sty +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/latex_templates/agents4science_2025/agents4science_2025.tex +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/llm.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/pdf.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/py.typed +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/server.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/__init__.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/anthology_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/arxiv_download.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/arxiv_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/document_qa.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/hf_datasets_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/latex.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/py.typed +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/review.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/s2_citations.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/visit_webpage.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/tools/web_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp/utils.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/SOURCES.txt +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/dependency_links.txt +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/entry_points.txt +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/requires.txt +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/academia_mcp.egg-info/top_level.txt +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/setup.cfg +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_anthology_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_arxiv_download.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_arxiv_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_document_qa.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_extract_json.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_hf_dataset_search.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_latex.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_review.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_s2_citations.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_visit_webpage.py +0 -0
- {academia_mcp-1.6.5 → academia_mcp-1.6.6}/tests/test_web_search.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: academia-mcp
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.6
|
4
4
|
Summary: MCP server that provides different tools to search for scientific publications
|
5
5
|
Author-email: Ilya Gusev <phoenixilya@gmail.com>
|
6
6
|
Project-URL: Homepage, https://github.com/IlyaGusev/academia_mcp
|
@@ -249,7 +249,7 @@ async def generate_research_proposal(bit: str, additional_context: str = "") ->
|
|
249
249
|
return str(proposal.model_dump_json())
|
250
250
|
|
251
251
|
|
252
|
-
async def score_research_proposals(proposals: List[str | Dict[str, Any] | Any]) -> str:
|
252
|
+
async def score_research_proposals(proposals: str | List[str | Dict[str, Any] | Any]) -> str:
|
253
253
|
"""
|
254
254
|
Scores a list of research proposals.
|
255
255
|
Use proposals obtained with the `generate_research_proposal` tool.
|
@@ -276,6 +276,9 @@ async def score_research_proposals(proposals: List[str | Dict[str, Any] | Any])
|
|
276
276
|
proposals: A list of JSON strings with research proposals.
|
277
277
|
"""
|
278
278
|
model_name = os.getenv("BITFLIP_MODEL_NAME", "deepseek/deepseek-chat-v3-0324")
|
279
|
+
if isinstance(proposals, str):
|
280
|
+
proposals = json.loads(proposals)
|
281
|
+
assert isinstance(proposals, list), "Proposals should be a list of JSON strings"
|
279
282
|
prompt = encode_prompt(SCORE_PROMPT, proposals=[str(p) for p in proposals])
|
280
283
|
content = await llm_acall(
|
281
284
|
model_name=model_name, messages=[ChatMessage(role="user", content=prompt)]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: academia-mcp
|
3
|
-
Version: 1.6.
|
3
|
+
Version: 1.6.6
|
4
4
|
Summary: MCP server that provides different tools to search for scientific publications
|
5
5
|
Author-email: Ilya Gusev <phoenixilya@gmail.com>
|
6
6
|
Project-URL: Homepage, https://github.com/IlyaGusev/academia_mcp
|
@@ -36,3 +36,19 @@ async def test_bitflip_score_research_proposals() -> None:
|
|
36
36
|
assert scores[1]["strengths"] is not None
|
37
37
|
assert scores[0]["weaknesses"] is not None
|
38
38
|
assert scores[1]["weaknesses"] is not None
|
39
|
+
|
40
|
+
|
41
|
+
async def test_bitflip_score_research_proposals_str() -> None:
|
42
|
+
arxiv_id = "2503.07826"
|
43
|
+
bit = json.loads(await extract_bitflip_info(arxiv_id))["bit"]
|
44
|
+
proposal1 = await generate_research_proposal(bit=bit)
|
45
|
+
proposal2 = await generate_research_proposal(bit=bit)
|
46
|
+
scores = json.loads(await score_research_proposals(json.dumps([proposal1, proposal2])))
|
47
|
+
assert scores
|
48
|
+
assert len(scores) == 2
|
49
|
+
assert scores[0]["spark"] is not None
|
50
|
+
assert scores[1]["spark"] is not None
|
51
|
+
assert scores[0]["strengths"] is not None
|
52
|
+
assert scores[1]["strengths"] is not None
|
53
|
+
assert scores[0]["weaknesses"] is not None
|
54
|
+
assert scores[1]["weaknesses"] is not None
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|