@vespermcp/mcp-server 1.2.8 → 1.2.9
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.
|
Binary file
|
|
@@ -60,6 +60,46 @@ class AssetDownloader:
|
|
|
60
60
|
if asyncio.iscoroutine(maybe):
|
|
61
61
|
await maybe
|
|
62
62
|
|
|
63
|
+
@staticmethod
|
|
64
|
+
def _hydrate_kaggle_credentials() -> None:
|
|
65
|
+
username = os.getenv("KAGGLE_USERNAME")
|
|
66
|
+
key = os.getenv("KAGGLE_KEY")
|
|
67
|
+
|
|
68
|
+
if not username or not key:
|
|
69
|
+
try:
|
|
70
|
+
from config import get_all # type: ignore
|
|
71
|
+
keys = get_all() or {}
|
|
72
|
+
except Exception:
|
|
73
|
+
keys = {}
|
|
74
|
+
|
|
75
|
+
username = username or keys.get("kaggle_username")
|
|
76
|
+
key = key or keys.get("kaggle_key")
|
|
77
|
+
|
|
78
|
+
if username:
|
|
79
|
+
os.environ["KAGGLE_USERNAME"] = str(username)
|
|
80
|
+
if key:
|
|
81
|
+
os.environ["KAGGLE_KEY"] = str(key)
|
|
82
|
+
|
|
83
|
+
username = os.getenv("KAGGLE_USERNAME")
|
|
84
|
+
key = os.getenv("KAGGLE_KEY")
|
|
85
|
+
if not username or not key:
|
|
86
|
+
return
|
|
87
|
+
|
|
88
|
+
kaggle_dir = Path.home() / ".kaggle"
|
|
89
|
+
kaggle_file = kaggle_dir / "kaggle.json"
|
|
90
|
+
try:
|
|
91
|
+
kaggle_dir.mkdir(parents=True, exist_ok=True)
|
|
92
|
+
kaggle_file.write_text(
|
|
93
|
+
json.dumps({"username": username, "key": key}, ensure_ascii=False),
|
|
94
|
+
encoding="utf-8",
|
|
95
|
+
)
|
|
96
|
+
try:
|
|
97
|
+
os.chmod(kaggle_file, 0o600)
|
|
98
|
+
except Exception:
|
|
99
|
+
pass
|
|
100
|
+
except Exception:
|
|
101
|
+
pass
|
|
102
|
+
|
|
63
103
|
@staticmethod
|
|
64
104
|
def find_image_column(dataset: Any) -> Optional[str]:
|
|
65
105
|
features = getattr(dataset, "features", None)
|
|
@@ -240,8 +280,17 @@ class AssetDownloader:
|
|
|
240
280
|
|
|
241
281
|
await self._emit("start", {"source": "kaggle", "dataset": kaggle_ref})
|
|
242
282
|
|
|
283
|
+
self._hydrate_kaggle_credentials()
|
|
284
|
+
|
|
243
285
|
api = KaggleApi()
|
|
244
|
-
|
|
286
|
+
try:
|
|
287
|
+
api.authenticate()
|
|
288
|
+
except Exception as e:
|
|
289
|
+
raise RuntimeError(
|
|
290
|
+
"Kaggle authentication failed. Run 'configure_kaggle' or 'configure_keys' with "
|
|
291
|
+
"kaggle_username and kaggle_key, then retry. "
|
|
292
|
+
f"Details: {e}"
|
|
293
|
+
)
|
|
245
294
|
|
|
246
295
|
tmp_dir = Path(tempfile.mkdtemp(prefix="vesper_kaggle_assets_"))
|
|
247
296
|
downloaded = 0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vespermcp/mcp-server",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"description": "AI-powered dataset discovery, quality analysis, and preparation MCP server with multimodal support (text, image, audio, video)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -60,6 +60,46 @@ class AssetDownloader:
|
|
|
60
60
|
if asyncio.iscoroutine(maybe):
|
|
61
61
|
await maybe
|
|
62
62
|
|
|
63
|
+
@staticmethod
|
|
64
|
+
def _hydrate_kaggle_credentials() -> None:
|
|
65
|
+
username = os.getenv("KAGGLE_USERNAME")
|
|
66
|
+
key = os.getenv("KAGGLE_KEY")
|
|
67
|
+
|
|
68
|
+
if not username or not key:
|
|
69
|
+
try:
|
|
70
|
+
from config import get_all # type: ignore
|
|
71
|
+
keys = get_all() or {}
|
|
72
|
+
except Exception:
|
|
73
|
+
keys = {}
|
|
74
|
+
|
|
75
|
+
username = username or keys.get("kaggle_username")
|
|
76
|
+
key = key or keys.get("kaggle_key")
|
|
77
|
+
|
|
78
|
+
if username:
|
|
79
|
+
os.environ["KAGGLE_USERNAME"] = str(username)
|
|
80
|
+
if key:
|
|
81
|
+
os.environ["KAGGLE_KEY"] = str(key)
|
|
82
|
+
|
|
83
|
+
username = os.getenv("KAGGLE_USERNAME")
|
|
84
|
+
key = os.getenv("KAGGLE_KEY")
|
|
85
|
+
if not username or not key:
|
|
86
|
+
return
|
|
87
|
+
|
|
88
|
+
kaggle_dir = Path.home() / ".kaggle"
|
|
89
|
+
kaggle_file = kaggle_dir / "kaggle.json"
|
|
90
|
+
try:
|
|
91
|
+
kaggle_dir.mkdir(parents=True, exist_ok=True)
|
|
92
|
+
kaggle_file.write_text(
|
|
93
|
+
json.dumps({"username": username, "key": key}, ensure_ascii=False),
|
|
94
|
+
encoding="utf-8",
|
|
95
|
+
)
|
|
96
|
+
try:
|
|
97
|
+
os.chmod(kaggle_file, 0o600)
|
|
98
|
+
except Exception:
|
|
99
|
+
pass
|
|
100
|
+
except Exception:
|
|
101
|
+
pass
|
|
102
|
+
|
|
63
103
|
@staticmethod
|
|
64
104
|
def find_image_column(dataset: Any) -> Optional[str]:
|
|
65
105
|
features = getattr(dataset, "features", None)
|
|
@@ -240,8 +280,17 @@ class AssetDownloader:
|
|
|
240
280
|
|
|
241
281
|
await self._emit("start", {"source": "kaggle", "dataset": kaggle_ref})
|
|
242
282
|
|
|
283
|
+
self._hydrate_kaggle_credentials()
|
|
284
|
+
|
|
243
285
|
api = KaggleApi()
|
|
244
|
-
|
|
286
|
+
try:
|
|
287
|
+
api.authenticate()
|
|
288
|
+
except Exception as e:
|
|
289
|
+
raise RuntimeError(
|
|
290
|
+
"Kaggle authentication failed. Run 'configure_kaggle' or 'configure_keys' with "
|
|
291
|
+
"kaggle_username and kaggle_key, then retry. "
|
|
292
|
+
f"Details: {e}"
|
|
293
|
+
)
|
|
245
294
|
|
|
246
295
|
tmp_dir = Path(tempfile.mkdtemp(prefix="vesper_kaggle_assets_"))
|
|
247
296
|
downloaded = 0
|