academia-mcp 1.9.1__py3-none-any.whl → 1.9.2__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.
academia_mcp/server.py CHANGED
@@ -38,6 +38,7 @@ from academia_mcp.tools.bitflip import (
38
38
  score_research_proposals,
39
39
  )
40
40
  from academia_mcp.tools.review import review_pdf_paper, download_pdf_paper
41
+ from academia_mcp.tools.show_image import show_image
41
42
 
42
43
 
43
44
  def configure_uvicorn_style_logging(level: int = logging.INFO) -> None:
@@ -87,6 +88,7 @@ def run(
87
88
  server.add_tool(get_latex_template)
88
89
  server.add_tool(get_latex_templates_list)
89
90
  server.add_tool(visit_webpage)
91
+ server.add_tool(show_image)
90
92
 
91
93
  if settings.WORKSPACE_DIR:
92
94
  server.add_tool(compile_latex)
@@ -14,6 +14,7 @@ from .web_search import web_search, tavily_web_search, exa_web_search, brave_web
14
14
  from .visit_webpage import visit_webpage
15
15
  from .bitflip import extract_bitflip_info, generate_research_proposals, score_research_proposals
16
16
  from .review import review_pdf_paper, download_pdf_paper, review_pdf_paper_by_url
17
+ from .show_image import show_image
17
18
 
18
19
  __all__ = [
19
20
  "arxiv_search",
@@ -40,4 +41,5 @@ __all__ = [
40
41
  "review_pdf_paper_by_url",
41
42
  "download_pdf_paper",
42
43
  "read_pdf",
44
+ "show_image",
43
45
  ]
@@ -0,0 +1,41 @@
1
+ import base64
2
+ from pathlib import Path
3
+ from io import BytesIO
4
+ from typing import Dict
5
+
6
+ import httpx
7
+ from PIL import Image
8
+
9
+ from academia_mcp.files import get_workspace_dir
10
+ from academia_mcp.settings import settings
11
+
12
+
13
+ def show_image(path: str) -> Dict[str, str]:
14
+ """
15
+ Reads an image from the specified URL or from the current work directory.
16
+ Always call this function at the end of the code block.
17
+ For instance:
18
+ ```python
19
+ show_image("https://example.com/image.png")
20
+ ```
21
+ Do not print it ever, just return as the last expression.
22
+
23
+ Returns an dictionary with a single "image" key.
24
+ Args:
25
+ url: Path to file inside current work directory or web URL
26
+ """
27
+ if path.startswith("http"):
28
+ response = httpx.get(path, timeout=10)
29
+ response.raise_for_status()
30
+ image = Image.open(BytesIO(response.content))
31
+ else:
32
+ assert settings.WORKSPACE_DIR is not None, "WORKSPACE_DIR is not set"
33
+ full_path = Path(path)
34
+ if not full_path.exists():
35
+ full_path = Path(get_workspace_dir()) / path
36
+ assert full_path.exists(), f"Image file {path} does not exist"
37
+ image = Image.open(str(full_path))
38
+ buffer_io = BytesIO()
39
+ image.save(buffer_io, format="PNG")
40
+ img_bytes = buffer_io.getvalue()
41
+ return {"image_base64": base64.b64encode(img_bytes).decode("utf-8")}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: academia-mcp
3
- Version: 1.9.1
3
+ Version: 1.9.2
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
@@ -4,12 +4,12 @@ academia_mcp/files.py,sha256=ynIt0XbU1Z7EPWkv_hVX0pGKsLlmjYv-MVJLOfi6yzs,817
4
4
  academia_mcp/llm.py,sha256=zpGkuJFf58Ofgys_fi28-47_wJ1a7sIs_yZvI1Si6z0,993
5
5
  academia_mcp/pdf.py,sha256=9PlXzHGhb6ay3ldbTdxCcTWvH4TkET3bnb64mgoh9i0,1273
6
6
  academia_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- academia_mcp/server.py,sha256=qg2Q7sIddx3HH83nks-dIkrHykVEtFxN5UAAVlj5OSI,4331
7
+ academia_mcp/server.py,sha256=k6o-hxkeowHAgKGXUTWhZ6EI4u1RcSIfA-EFyoRmWZ8,4416
8
8
  academia_mcp/settings.py,sha256=vkhCrglL_OI1W0Me_1vS0WoQwDhpzj_XTfcuOylweYA,907
9
9
  academia_mcp/utils.py,sha256=P9U3RjYzcztE0KxXvJSy5wSBaUg2CM9tpByljYrsrl4,4607
10
10
  academia_mcp/latex_templates/agents4science_2025/agents4science_2025.sty,sha256=hGcEPCYBJS4vdhWvN_yEaJC4GvT_yDroI94CfY2Oguk,12268
11
11
  academia_mcp/latex_templates/agents4science_2025/agents4science_2025.tex,sha256=Tl1QkHXHRopw9VEfWrD3Layr5JP_0gIzVQjL4KXIWqc,15814
12
- academia_mcp/tools/__init__.py,sha256=zaEPj0kUo9ng40wkJcrEijbvu2OoBQ0392OhqF6Q0Uo,1337
12
+ academia_mcp/tools/__init__.py,sha256=ns0n9MC-TarV-nbkFGCkGptI2Jg-dmb4FU_7l-T_ET8,1390
13
13
  academia_mcp/tools/anthology_search.py,sha256=rhFpJZqGLABgr0raDuH0CARBiAJNJtEI4dlMrKNHfDQ,7669
14
14
  academia_mcp/tools/arxiv_download.py,sha256=gBY0_Kz0yGtVkLMwn6GrAyfBjovZVgcSMuyy67p65Cw,10474
15
15
  academia_mcp/tools/arxiv_search.py,sha256=pzM18qrF3QL03A53w003kE7hQi3s3QKtjgw0m7K88UY,8355
@@ -20,11 +20,12 @@ academia_mcp/tools/latex.py,sha256=B1Leqt1FHY6H3DlUgeYse4LMFpf4-K1FQViXl5MKk8A,6
20
20
  academia_mcp/tools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  academia_mcp/tools/review.py,sha256=Va0lFJJKuk-NvWhKS3UZ-Dnuk7CyuDQ4S1nd70D-ffE,11117
22
22
  academia_mcp/tools/s2.py,sha256=QX7-pbetab3Xt_1tvVPU6o5D_NAe9y6jcTGRBK1vwtY,6200
23
+ academia_mcp/tools/show_image.py,sha256=mbzWpgaZrGjSgUqnfiiPoWLbyAjUS27F04mjOUqb_S8,1371
23
24
  academia_mcp/tools/visit_webpage.py,sha256=uEqZIkMqscZG58Rx2wd6L_OQkGxo5SrzCkoUB55HhC0,2018
24
25
  academia_mcp/tools/web_search.py,sha256=kj3BrPdTVfyTjZ_9Jl2n3YUGzcRZk8diQs6cVSVmPrQ,6293
25
- academia_mcp-1.9.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
26
- academia_mcp-1.9.1.dist-info/METADATA,sha256=_FtfoLH4Nnv7D5oLT33HKW6UzMtUxQk3IR4Wp4O1jWw,6310
27
- academia_mcp-1.9.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- academia_mcp-1.9.1.dist-info/entry_points.txt,sha256=gxkiKJ74w2FwJpSECpjA3XtCfI5ZfrM6N8cqnwsq4yY,51
29
- academia_mcp-1.9.1.dist-info/top_level.txt,sha256=CzGpRFsRRJRqWEb1e3SUlcfGqRzOxevZGaJWrtGF8W0,13
30
- academia_mcp-1.9.1.dist-info/RECORD,,
26
+ academia_mcp-1.9.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
27
+ academia_mcp-1.9.2.dist-info/METADATA,sha256=c4NsjDhKqpgL-RKN58OXWdEzAj7Ip1RDAvOJovT0wmI,6310
28
+ academia_mcp-1.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ academia_mcp-1.9.2.dist-info/entry_points.txt,sha256=gxkiKJ74w2FwJpSECpjA3XtCfI5ZfrM6N8cqnwsq4yY,51
30
+ academia_mcp-1.9.2.dist-info/top_level.txt,sha256=CzGpRFsRRJRqWEb1e3SUlcfGqRzOxevZGaJWrtGF8W0,13
31
+ academia_mcp-1.9.2.dist-info/RECORD,,