scitex 2.14.0__py3-none-any.whl → 2.15.1__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.
- scitex/__init__.py +47 -0
- scitex/_env_loader.py +156 -0
- scitex/_mcp_resources/__init__.py +37 -0
- scitex/_mcp_resources/_cheatsheet.py +135 -0
- scitex/_mcp_resources/_figrecipe.py +138 -0
- scitex/_mcp_resources/_formats.py +102 -0
- scitex/_mcp_resources/_modules.py +337 -0
- scitex/_mcp_resources/_session.py +149 -0
- scitex/_mcp_tools/__init__.py +4 -0
- scitex/_mcp_tools/audio.py +66 -0
- scitex/_mcp_tools/diagram.py +11 -95
- scitex/_mcp_tools/introspect.py +191 -0
- scitex/_mcp_tools/plt.py +260 -305
- scitex/_mcp_tools/scholar.py +74 -0
- scitex/_mcp_tools/social.py +244 -0
- scitex/_mcp_tools/writer.py +21 -204
- scitex/ai/_gen_ai/_PARAMS.py +10 -7
- scitex/ai/classification/reporters/_SingleClassificationReporter.py +45 -1603
- scitex/ai/classification/reporters/_mixins/__init__.py +36 -0
- scitex/ai/classification/reporters/_mixins/_constants.py +67 -0
- scitex/ai/classification/reporters/_mixins/_cv_summary.py +387 -0
- scitex/ai/classification/reporters/_mixins/_feature_importance.py +119 -0
- scitex/ai/classification/reporters/_mixins/_metrics.py +275 -0
- scitex/ai/classification/reporters/_mixins/_plotting.py +179 -0
- scitex/ai/classification/reporters/_mixins/_reports.py +153 -0
- scitex/ai/classification/reporters/_mixins/_storage.py +160 -0
- scitex/audio/README.md +40 -36
- scitex/audio/__init__.py +127 -59
- scitex/audio/_branding.py +185 -0
- scitex/audio/_mcp/__init__.py +32 -0
- scitex/audio/_mcp/handlers.py +59 -6
- scitex/audio/_mcp/speak_handlers.py +238 -0
- scitex/audio/_relay.py +225 -0
- scitex/audio/engines/elevenlabs_engine.py +6 -1
- scitex/audio/mcp_server.py +228 -75
- scitex/canvas/README.md +1 -1
- scitex/canvas/editor/_dearpygui/__init__.py +25 -0
- scitex/canvas/editor/_dearpygui/_editor.py +147 -0
- scitex/canvas/editor/_dearpygui/_handlers.py +476 -0
- scitex/canvas/editor/_dearpygui/_panels/__init__.py +17 -0
- scitex/canvas/editor/_dearpygui/_panels/_control.py +119 -0
- scitex/canvas/editor/_dearpygui/_panels/_element_controls.py +190 -0
- scitex/canvas/editor/_dearpygui/_panels/_preview.py +43 -0
- scitex/canvas/editor/_dearpygui/_panels/_sections.py +390 -0
- scitex/canvas/editor/_dearpygui/_plotting.py +187 -0
- scitex/canvas/editor/_dearpygui/_rendering.py +504 -0
- scitex/canvas/editor/_dearpygui/_selection.py +295 -0
- scitex/canvas/editor/_dearpygui/_state.py +93 -0
- scitex/canvas/editor/_dearpygui/_utils.py +61 -0
- scitex/canvas/editor/flask_editor/templates/__init__.py +32 -70
- scitex/cli/__init__.py +38 -43
- scitex/cli/audio.py +76 -27
- scitex/cli/capture.py +13 -20
- scitex/cli/introspect.py +443 -0
- scitex/cli/main.py +198 -109
- scitex/cli/mcp.py +60 -34
- scitex/cli/scholar/__init__.py +8 -0
- scitex/cli/scholar/_crossref_scitex.py +296 -0
- scitex/cli/scholar/_fetch.py +25 -3
- scitex/cli/social.py +314 -0
- scitex/cli/writer.py +117 -0
- scitex/config/README.md +1 -1
- scitex/config/__init__.py +16 -2
- scitex/config/_env_registry.py +191 -0
- scitex/diagram/__init__.py +42 -19
- scitex/diagram/mcp_server.py +13 -125
- scitex/introspect/__init__.py +75 -0
- scitex/introspect/_call_graph.py +303 -0
- scitex/introspect/_class_hierarchy.py +163 -0
- scitex/introspect/_core.py +42 -0
- scitex/introspect/_docstring.py +131 -0
- scitex/introspect/_examples.py +113 -0
- scitex/introspect/_imports.py +271 -0
- scitex/introspect/_mcp/__init__.py +37 -0
- scitex/introspect/_mcp/handlers.py +208 -0
- scitex/introspect/_members.py +151 -0
- scitex/introspect/_resolve.py +89 -0
- scitex/introspect/_signature.py +131 -0
- scitex/introspect/_source.py +80 -0
- scitex/introspect/_type_hints.py +172 -0
- scitex/io/bundle/README.md +1 -1
- scitex/mcp_server.py +98 -5
- scitex/plt/__init__.py +248 -550
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +5 -10
- scitex/plt/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/plt/gallery/README.md +1 -1
- scitex/plt/utils/_hitmap/__init__.py +82 -0
- scitex/plt/utils/_hitmap/_artist_extraction.py +343 -0
- scitex/plt/utils/_hitmap/_color_application.py +346 -0
- scitex/plt/utils/_hitmap/_color_conversion.py +121 -0
- scitex/plt/utils/_hitmap/_constants.py +40 -0
- scitex/plt/utils/_hitmap/_hitmap_core.py +334 -0
- scitex/plt/utils/_hitmap/_path_extraction.py +357 -0
- scitex/plt/utils/_hitmap/_query.py +113 -0
- scitex/plt/utils/_hitmap.py +46 -1616
- scitex/plt/utils/_metadata/__init__.py +80 -0
- scitex/plt/utils/_metadata/_artists/__init__.py +25 -0
- scitex/plt/utils/_metadata/_artists/_base.py +195 -0
- scitex/plt/utils/_metadata/_artists/_collections.py +356 -0
- scitex/plt/utils/_metadata/_artists/_extract.py +57 -0
- scitex/plt/utils/_metadata/_artists/_images.py +80 -0
- scitex/plt/utils/_metadata/_artists/_lines.py +261 -0
- scitex/plt/utils/_metadata/_artists/_patches.py +247 -0
- scitex/plt/utils/_metadata/_artists/_text.py +106 -0
- scitex/plt/utils/_metadata/_csv.py +416 -0
- scitex/plt/utils/_metadata/_detect.py +225 -0
- scitex/plt/utils/_metadata/_legend.py +127 -0
- scitex/plt/utils/_metadata/_rounding.py +117 -0
- scitex/plt/utils/_metadata/_verification.py +202 -0
- scitex/schema/README.md +1 -1
- scitex/scholar/__init__.py +8 -0
- scitex/scholar/_mcp/crossref_handlers.py +265 -0
- scitex/scholar/core/Scholar.py +63 -1700
- scitex/scholar/core/_mixins/__init__.py +36 -0
- scitex/scholar/core/_mixins/_enrichers.py +270 -0
- scitex/scholar/core/_mixins/_library_handlers.py +100 -0
- scitex/scholar/core/_mixins/_loaders.py +103 -0
- scitex/scholar/core/_mixins/_pdf_download.py +375 -0
- scitex/scholar/core/_mixins/_pipeline.py +312 -0
- scitex/scholar/core/_mixins/_project_handlers.py +125 -0
- scitex/scholar/core/_mixins/_savers.py +69 -0
- scitex/scholar/core/_mixins/_search.py +103 -0
- scitex/scholar/core/_mixins/_services.py +88 -0
- scitex/scholar/core/_mixins/_url_finding.py +105 -0
- scitex/scholar/crossref_scitex.py +367 -0
- scitex/scholar/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/scholar/examples/00_run_all.sh +120 -0
- scitex/scholar/jobs/_executors.py +27 -3
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +38 -416
- scitex/scholar/pdf_download/_cli.py +154 -0
- scitex/scholar/pdf_download/strategies/__init__.py +11 -8
- scitex/scholar/pdf_download/strategies/manual_download_fallback.py +80 -3
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +73 -121
- scitex/scholar/pipelines/ScholarPipelineParallel.py +80 -138
- scitex/scholar/pipelines/ScholarPipelineSingle.py +43 -63
- scitex/scholar/pipelines/_single_steps.py +71 -36
- scitex/scholar/storage/_LibraryManager.py +97 -1695
- scitex/scholar/storage/_mixins/__init__.py +30 -0
- scitex/scholar/storage/_mixins/_bibtex_handlers.py +128 -0
- scitex/scholar/storage/_mixins/_library_operations.py +218 -0
- scitex/scholar/storage/_mixins/_metadata_conversion.py +226 -0
- scitex/scholar/storage/_mixins/_paper_saving.py +456 -0
- scitex/scholar/storage/_mixins/_resolution.py +376 -0
- scitex/scholar/storage/_mixins/_storage_helpers.py +121 -0
- scitex/scholar/storage/_mixins/_symlink_handlers.py +226 -0
- scitex/scholar/url_finder/.tmp/open_url/KNOWN_RESOLVERS.py +462 -0
- scitex/scholar/url_finder/.tmp/open_url/README.md +223 -0
- scitex/scholar/url_finder/.tmp/open_url/_DOIToURLResolver.py +694 -0
- scitex/scholar/url_finder/.tmp/open_url/_OpenURLResolver.py +1160 -0
- scitex/scholar/url_finder/.tmp/open_url/_ResolverLinkFinder.py +344 -0
- scitex/scholar/url_finder/.tmp/open_url/__init__.py +24 -0
- scitex/security/README.md +3 -3
- scitex/session/README.md +1 -1
- scitex/sh/README.md +1 -1
- scitex/social/__init__.py +153 -0
- scitex/social/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/template/README.md +1 -1
- scitex/template/clone_writer_directory.py +5 -5
- scitex/writer/README.md +1 -1
- scitex/writer/_mcp/handlers.py +11 -744
- scitex/writer/_mcp/tool_schemas.py +5 -335
- scitex-2.15.1.dist-info/METADATA +648 -0
- {scitex-2.14.0.dist-info → scitex-2.15.1.dist-info}/RECORD +166 -111
- scitex/canvas/editor/flask_editor/templates/_scripts.py +0 -4933
- scitex/canvas/editor/flask_editor/templates/_styles.py +0 -1658
- scitex/dev/plt/data/mpl/PLOTTING_FUNCTIONS.yaml +0 -90
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES.yaml +0 -1571
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES_DETAILED.yaml +0 -6262
- scitex/dev/plt/data/mpl/SIGNATURES_FLATTENED.yaml +0 -1274
- scitex/dev/plt/data/mpl/dir_ax.txt +0 -459
- scitex/diagram/_compile.py +0 -312
- scitex/diagram/_diagram.py +0 -355
- scitex/diagram/_mcp/__init__.py +0 -4
- scitex/diagram/_mcp/handlers.py +0 -400
- scitex/diagram/_mcp/tool_schemas.py +0 -157
- scitex/diagram/_presets.py +0 -173
- scitex/diagram/_schema.py +0 -182
- scitex/diagram/_split.py +0 -278
- scitex/plt/_mcp/__init__.py +0 -4
- scitex/plt/_mcp/_handlers_annotation.py +0 -102
- scitex/plt/_mcp/_handlers_figure.py +0 -195
- scitex/plt/_mcp/_handlers_plot.py +0 -252
- scitex/plt/_mcp/_handlers_style.py +0 -219
- scitex/plt/_mcp/handlers.py +0 -74
- scitex/plt/_mcp/tool_schemas.py +0 -497
- scitex/plt/mcp_server.py +0 -231
- scitex/scholar/data/.gitkeep +0 -0
- scitex/scholar/data/README.md +0 -44
- scitex/scholar/data/bib_files/bibliography.bib +0 -1952
- scitex/scholar/data/bib_files/neurovista.bib +0 -277
- scitex/scholar/data/bib_files/neurovista_enriched.bib +0 -441
- scitex/scholar/data/bib_files/neurovista_enriched_enriched.bib +0 -441
- scitex/scholar/data/bib_files/neurovista_processed.bib +0 -338
- scitex/scholar/data/bib_files/openaccess.bib +0 -89
- scitex/scholar/data/bib_files/pac-seizure_prediction_enriched.bib +0 -2178
- scitex/scholar/data/bib_files/pac.bib +0 -698
- scitex/scholar/data/bib_files/pac_enriched.bib +0 -1061
- scitex/scholar/data/bib_files/pac_processed.bib +0 -0
- scitex/scholar/data/bib_files/pac_titles.txt +0 -75
- scitex/scholar/data/bib_files/paywalled.bib +0 -98
- scitex/scholar/data/bib_files/related-papers-by-coauthors.bib +0 -58
- scitex/scholar/data/bib_files/related-papers-by-coauthors_enriched.bib +0 -87
- scitex/scholar/data/bib_files/seizure_prediction.bib +0 -694
- scitex/scholar/data/bib_files/seizure_prediction_processed.bib +0 -0
- scitex/scholar/data/bib_files/test_complete_enriched.bib +0 -437
- scitex/scholar/data/bib_files/test_final_enriched.bib +0 -437
- scitex/scholar/data/bib_files/test_seizure.bib +0 -46
- scitex/scholar/data/impact_factor/JCR_IF_2022.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.db +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024_v01.db +0 -0
- scitex/scholar/data/impact_factor.db +0 -0
- scitex/scholar/examples/SUGGESTIONS.md +0 -865
- scitex/scholar/examples/dev.py +0 -38
- scitex-2.14.0.dist-info/METADATA +0 -1238
- {scitex-2.14.0.dist-info → scitex-2.15.1.dist-info}/WHEEL +0 -0
- {scitex-2.14.0.dist-info → scitex-2.15.1.dist-info}/entry_points.txt +0 -0
- {scitex-2.14.0.dist-info → scitex-2.15.1.dist-info}/licenses/LICENSE +0 -0
scitex/plt/mcp_server.py
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# Timestamp: 2026-01-08
|
|
3
|
-
# File: src/scitex/plt/mcp_server.py
|
|
4
|
-
# ----------------------------------------
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
MCP Server for SciTeX plt - Publication-quality plotting.
|
|
8
|
-
|
|
9
|
-
Provides tools for:
|
|
10
|
-
- Style configuration (get/set publication styles)
|
|
11
|
-
- Style presets (journal-specific configurations)
|
|
12
|
-
- Figure cropping (auto-crop whitespace)
|
|
13
|
-
- DPI management
|
|
14
|
-
- Color palette access
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
from __future__ import annotations
|
|
18
|
-
|
|
19
|
-
import asyncio
|
|
20
|
-
|
|
21
|
-
# Graceful MCP dependency handling
|
|
22
|
-
try:
|
|
23
|
-
import mcp.types as types
|
|
24
|
-
from mcp.server import NotificationOptions, Server
|
|
25
|
-
from mcp.server.models import InitializationOptions
|
|
26
|
-
from mcp.server.stdio import stdio_server
|
|
27
|
-
|
|
28
|
-
MCP_AVAILABLE = True
|
|
29
|
-
except ImportError:
|
|
30
|
-
MCP_AVAILABLE = False
|
|
31
|
-
types = None # type: ignore
|
|
32
|
-
Server = None # type: ignore
|
|
33
|
-
NotificationOptions = None # type: ignore
|
|
34
|
-
InitializationOptions = None # type: ignore
|
|
35
|
-
stdio_server = None # type: ignore
|
|
36
|
-
|
|
37
|
-
__all__ = ["PltServer", "main", "MCP_AVAILABLE"]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class PltServer:
|
|
41
|
-
"""MCP Server for Publication-quality Plotting."""
|
|
42
|
-
|
|
43
|
-
def __init__(self):
|
|
44
|
-
self.server = Server("scitex-plt")
|
|
45
|
-
self.setup_handlers()
|
|
46
|
-
|
|
47
|
-
def setup_handlers(self):
|
|
48
|
-
"""Set up MCP server handlers."""
|
|
49
|
-
from ._mcp.handlers import (
|
|
50
|
-
add_panel_label_handler,
|
|
51
|
-
add_significance_handler,
|
|
52
|
-
close_figure_handler,
|
|
53
|
-
create_figure_handler,
|
|
54
|
-
crop_figure_handler,
|
|
55
|
-
get_color_palette_handler,
|
|
56
|
-
get_dpi_settings_handler,
|
|
57
|
-
get_style_handler,
|
|
58
|
-
list_presets_handler,
|
|
59
|
-
plot_bar_handler,
|
|
60
|
-
plot_box_handler,
|
|
61
|
-
plot_line_handler,
|
|
62
|
-
plot_scatter_handler,
|
|
63
|
-
plot_violin_handler,
|
|
64
|
-
save_figure_handler,
|
|
65
|
-
set_style_handler,
|
|
66
|
-
)
|
|
67
|
-
from ._mcp.tool_schemas import get_tool_schemas
|
|
68
|
-
|
|
69
|
-
@self.server.list_tools()
|
|
70
|
-
async def handle_list_tools():
|
|
71
|
-
return get_tool_schemas()
|
|
72
|
-
|
|
73
|
-
@self.server.call_tool()
|
|
74
|
-
async def handle_call_tool(name: str, arguments: dict):
|
|
75
|
-
# Style tools
|
|
76
|
-
if name == "get_style":
|
|
77
|
-
return await self._wrap_result(get_style_handler())
|
|
78
|
-
elif name == "set_style":
|
|
79
|
-
return await self._wrap_result(set_style_handler(**arguments))
|
|
80
|
-
elif name == "list_presets":
|
|
81
|
-
return await self._wrap_result(list_presets_handler())
|
|
82
|
-
elif name == "crop_figure":
|
|
83
|
-
return await self._wrap_result(crop_figure_handler(**arguments))
|
|
84
|
-
elif name == "get_dpi_settings":
|
|
85
|
-
return await self._wrap_result(get_dpi_settings_handler())
|
|
86
|
-
elif name == "get_color_palette":
|
|
87
|
-
return await self._wrap_result(get_color_palette_handler(**arguments))
|
|
88
|
-
# Plotting tools
|
|
89
|
-
elif name == "create_figure":
|
|
90
|
-
return await self._wrap_result(create_figure_handler(**arguments))
|
|
91
|
-
elif name == "plot_bar":
|
|
92
|
-
return await self._wrap_result(plot_bar_handler(**arguments))
|
|
93
|
-
elif name == "plot_scatter":
|
|
94
|
-
return await self._wrap_result(plot_scatter_handler(**arguments))
|
|
95
|
-
elif name == "plot_line":
|
|
96
|
-
return await self._wrap_result(plot_line_handler(**arguments))
|
|
97
|
-
elif name == "plot_box":
|
|
98
|
-
return await self._wrap_result(plot_box_handler(**arguments))
|
|
99
|
-
elif name == "plot_violin":
|
|
100
|
-
return await self._wrap_result(plot_violin_handler(**arguments))
|
|
101
|
-
elif name == "add_significance":
|
|
102
|
-
return await self._wrap_result(add_significance_handler(**arguments))
|
|
103
|
-
elif name == "add_panel_label":
|
|
104
|
-
return await self._wrap_result(add_panel_label_handler(**arguments))
|
|
105
|
-
elif name == "save_figure":
|
|
106
|
-
return await self._wrap_result(save_figure_handler(**arguments))
|
|
107
|
-
elif name == "close_figure":
|
|
108
|
-
return await self._wrap_result(close_figure_handler(**arguments))
|
|
109
|
-
else:
|
|
110
|
-
raise ValueError(f"Unknown tool: {name}")
|
|
111
|
-
|
|
112
|
-
@self.server.list_resources()
|
|
113
|
-
async def handle_list_resources():
|
|
114
|
-
"""List available plt resources."""
|
|
115
|
-
resources = [
|
|
116
|
-
types.Resource(
|
|
117
|
-
uri="plt://style/current",
|
|
118
|
-
name="Current Style",
|
|
119
|
-
description="Current publication style configuration",
|
|
120
|
-
mimeType="application/json",
|
|
121
|
-
),
|
|
122
|
-
types.Resource(
|
|
123
|
-
uri="plt://presets",
|
|
124
|
-
name="Style Presets",
|
|
125
|
-
description="Available journal style presets",
|
|
126
|
-
mimeType="application/json",
|
|
127
|
-
),
|
|
128
|
-
types.Resource(
|
|
129
|
-
uri="plt://colors",
|
|
130
|
-
name="Color Palette",
|
|
131
|
-
description="SciTeX color palette",
|
|
132
|
-
mimeType="application/json",
|
|
133
|
-
),
|
|
134
|
-
]
|
|
135
|
-
return resources
|
|
136
|
-
|
|
137
|
-
@self.server.read_resource()
|
|
138
|
-
async def handle_read_resource(uri: str):
|
|
139
|
-
"""Read a plt resource."""
|
|
140
|
-
import json
|
|
141
|
-
|
|
142
|
-
if uri == "plt://style/current":
|
|
143
|
-
result = await get_style_handler()
|
|
144
|
-
return types.TextResourceContents(
|
|
145
|
-
uri=uri,
|
|
146
|
-
mimeType="application/json",
|
|
147
|
-
text=json.dumps(result, indent=2),
|
|
148
|
-
)
|
|
149
|
-
|
|
150
|
-
elif uri == "plt://presets":
|
|
151
|
-
result = await list_presets_handler()
|
|
152
|
-
return types.TextResourceContents(
|
|
153
|
-
uri=uri,
|
|
154
|
-
mimeType="application/json",
|
|
155
|
-
text=json.dumps(result, indent=2),
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
elif uri == "plt://colors":
|
|
159
|
-
result = await get_color_palette_handler()
|
|
160
|
-
return types.TextResourceContents(
|
|
161
|
-
uri=uri,
|
|
162
|
-
mimeType="application/json",
|
|
163
|
-
text=json.dumps(result, indent=2),
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
else:
|
|
167
|
-
raise ValueError(f"Unknown resource URI: {uri}")
|
|
168
|
-
|
|
169
|
-
async def _wrap_result(self, coro):
|
|
170
|
-
"""Wrap handler result as MCP TextContent."""
|
|
171
|
-
import json
|
|
172
|
-
|
|
173
|
-
try:
|
|
174
|
-
result = await coro
|
|
175
|
-
return [
|
|
176
|
-
types.TextContent(
|
|
177
|
-
type="text",
|
|
178
|
-
text=json.dumps(result, indent=2, default=str),
|
|
179
|
-
)
|
|
180
|
-
]
|
|
181
|
-
except Exception as e:
|
|
182
|
-
return [
|
|
183
|
-
types.TextContent(
|
|
184
|
-
type="text",
|
|
185
|
-
text=json.dumps({"success": False, "error": str(e)}, indent=2),
|
|
186
|
-
)
|
|
187
|
-
]
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
async def _run_server():
|
|
191
|
-
"""Run the MCP server (internal)."""
|
|
192
|
-
server = PltServer()
|
|
193
|
-
async with stdio_server() as (read_stream, write_stream):
|
|
194
|
-
await server.server.run(
|
|
195
|
-
read_stream,
|
|
196
|
-
write_stream,
|
|
197
|
-
InitializationOptions(
|
|
198
|
-
server_name="scitex-plt",
|
|
199
|
-
server_version="0.1.0",
|
|
200
|
-
capabilities=server.server.get_capabilities(
|
|
201
|
-
notification_options=NotificationOptions(),
|
|
202
|
-
experimental_capabilities={},
|
|
203
|
-
),
|
|
204
|
-
),
|
|
205
|
-
)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
def main():
|
|
209
|
-
"""Main entry point for the MCP server."""
|
|
210
|
-
if not MCP_AVAILABLE:
|
|
211
|
-
import sys
|
|
212
|
-
|
|
213
|
-
print("=" * 60)
|
|
214
|
-
print("MCP Server 'scitex-plt' requires the 'mcp' package.")
|
|
215
|
-
print()
|
|
216
|
-
print("Install with:")
|
|
217
|
-
print(" pip install mcp")
|
|
218
|
-
print()
|
|
219
|
-
print("Or install scitex with MCP support:")
|
|
220
|
-
print(" pip install scitex[mcp]")
|
|
221
|
-
print("=" * 60)
|
|
222
|
-
sys.exit(1)
|
|
223
|
-
|
|
224
|
-
asyncio.run(_run_server())
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if __name__ == "__main__":
|
|
228
|
-
main()
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
# EOF
|
scitex/scholar/data/.gitkeep
DELETED
|
File without changes
|
scitex/scholar/data/README.md
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Scholar Data Directory
|
|
2
|
-
|
|
3
|
-
User-provided data files. This directory is gitignored.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
data/
|
|
9
|
-
└── impact_factor/
|
|
10
|
-
├── JCR_IF_2024.xlsx # JCR Excel file (user-provided)
|
|
11
|
-
├── JCR_IF_2024.db # SQLite database (generated)
|
|
12
|
-
└── impact_factor.db -> JCR_IF_2024.db (symlink to active DB)
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Important
|
|
16
|
-
|
|
17
|
-
- **Data NOT included in git**: This directory is gitignored
|
|
18
|
-
- **User responsibility**: Users must provide their own JCR data
|
|
19
|
-
- **Licensing**: Users must ensure proper licensing for any data
|
|
20
|
-
|
|
21
|
-
## Adding JCR Data
|
|
22
|
-
|
|
23
|
-
1. Obtain JCR Excel file from Clarivate or authorized source
|
|
24
|
-
2. Place in `src/scitex/scholar/data/impact_factor/JCR_IF_YYYY.xlsx`
|
|
25
|
-
3. Build database (optional - will auto-build if needed):
|
|
26
|
-
```python
|
|
27
|
-
from scitex.scholar.impact_factor.jcr import build_database
|
|
28
|
-
build_database("JCR_IF_2024.xlsx")
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## File Naming Convention
|
|
32
|
-
|
|
33
|
-
- Excel: `JCR_IF_YYYY.xlsx` (e.g., JCR_IF_2024.xlsx)
|
|
34
|
-
- Database: `JCR_IF_YYYY.db` (e.g., JCR_IF_2024.db)
|
|
35
|
-
- Symlink: `impact_factor.db` → points to current year DB
|
|
36
|
-
|
|
37
|
-
## Legal Notice
|
|
38
|
-
|
|
39
|
-
JCR data is proprietary (Clarivate Analytics). Users are responsible for:
|
|
40
|
-
- Obtaining data through authorized channels
|
|
41
|
-
- Compliance with licensing terms
|
|
42
|
-
- Not distributing data files
|
|
43
|
-
|
|
44
|
-
We provide only the code to use the data, not the data itself.
|