@vespermcp/mcp-server 1.2.7 → 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.
package/build/index.js
CHANGED
|
@@ -1585,7 +1585,7 @@ async function main() {
|
|
|
1585
1585
|
const isFuse = args.includes("fuse");
|
|
1586
1586
|
const isDiscover = args.includes("discover");
|
|
1587
1587
|
const isDownload = args.includes("download");
|
|
1588
|
-
const isConfig = args.includes("config");
|
|
1588
|
+
const isConfig = args.includes("config") || args.includes("configure");
|
|
1589
1589
|
const isSetup = args.includes("--setup") || args.includes("setup");
|
|
1590
1590
|
const isSilent = args.includes("--silent");
|
|
1591
1591
|
if (process.stdin.isTTY && !isSilent) {
|
|
@@ -1627,7 +1627,9 @@ async function runConfigCli(args) {
|
|
|
1627
1627
|
const isKaggle = args.includes("kaggle");
|
|
1628
1628
|
if (!(isKeys || isKaggle) || args.includes("--help")) {
|
|
1629
1629
|
console.log("Usage: vespermcp config keys");
|
|
1630
|
+
console.log(" vespermcp configure keys");
|
|
1630
1631
|
console.log(" vespermcp config kaggle --username <name> --key <api_key>");
|
|
1632
|
+
console.log(" vespermcp configure kaggle --username <name> --key <api_key>");
|
|
1631
1633
|
console.log("Core Vesper tools work with zero API keys.");
|
|
1632
1634
|
return;
|
|
1633
1635
|
}
|
|
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
|