@vespermcp/mcp-server 1.2.9 → 1.2.10
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/python/__pycache__/config.cpython-312.pyc +0 -0
- package/build/python/config.py +14 -12
- package/build/python/kaggle_engine.py +6 -7
- package/build/python/vesper/core/asset_downloader.py +11 -15
- package/package.json +1 -1
- package/src/python/config.py +14 -12
- package/src/python/kaggle_engine.py +6 -7
- package/src/python/vesper/core/asset_downloader.py +11 -15
|
Binary file
|
package/build/python/config.py
CHANGED
|
@@ -155,12 +155,7 @@ def _get_from_env(name: str) -> Optional[str]:
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
def get_key(name: str) -> Optional[str]:
|
|
158
|
-
# 1)
|
|
159
|
-
env_val = _get_from_env(name)
|
|
160
|
-
if env_val:
|
|
161
|
-
return env_val
|
|
162
|
-
|
|
163
|
-
# 2) keyring (secure)
|
|
158
|
+
# 1) keyring (secure)
|
|
164
159
|
if HAS_KEYRING:
|
|
165
160
|
try:
|
|
166
161
|
val = keyring.get_password(SERVICE_NAME, name)
|
|
@@ -169,14 +164,21 @@ def get_key(name: str) -> Optional[str]:
|
|
|
169
164
|
except Exception:
|
|
170
165
|
pass
|
|
171
166
|
|
|
172
|
-
#
|
|
167
|
+
# 2) encrypted fallback config.toml
|
|
173
168
|
fallback = _read_fallback_toml()
|
|
174
169
|
enc = fallback.get(name)
|
|
175
|
-
if
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
170
|
+
if enc:
|
|
171
|
+
secret = _get_or_create_local_secret()
|
|
172
|
+
method = fallback.get("__method__", "fernet" if HAS_FERNET else "xor")
|
|
173
|
+
dec = _decrypt_value(enc, method, secret)
|
|
174
|
+
if dec:
|
|
175
|
+
return dec
|
|
176
|
+
|
|
177
|
+
# 3) env vars (fallback only)
|
|
178
|
+
env_val = _get_from_env(name)
|
|
179
|
+
if env_val:
|
|
180
|
+
return env_val
|
|
181
|
+
return None
|
|
180
182
|
|
|
181
183
|
|
|
182
184
|
def set_key(name: str, value: str) -> Dict[str, str]:
|
|
@@ -20,14 +20,13 @@ def _ensure_auth() -> Dict[str, Any]:
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
# Priority:
|
|
23
|
-
# 1)
|
|
24
|
-
# 2)
|
|
23
|
+
# 1) secure local store (keyring or ~/.vesper/config.toml)
|
|
24
|
+
# 2) existing env vars
|
|
25
25
|
# 3) ~/.kaggle/kaggle.json handled by KaggleApi.authenticate()
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
os.environ["KAGGLE_KEY"] = keys["kaggle_key"]
|
|
26
|
+
keys = get_all()
|
|
27
|
+
if keys.get("kaggle_username") and keys.get("kaggle_key"):
|
|
28
|
+
os.environ["KAGGLE_USERNAME"] = keys["kaggle_username"]
|
|
29
|
+
os.environ["KAGGLE_KEY"] = keys["kaggle_key"]
|
|
31
30
|
|
|
32
31
|
api = KaggleApi()
|
|
33
32
|
try:
|
|
@@ -62,23 +62,19 @@ class AssetDownloader:
|
|
|
62
62
|
|
|
63
63
|
@staticmethod
|
|
64
64
|
def _hydrate_kaggle_credentials() -> None:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
from config import get_all # type: ignore
|
|
71
|
-
keys = get_all() or {}
|
|
72
|
-
except Exception:
|
|
73
|
-
keys = {}
|
|
65
|
+
try:
|
|
66
|
+
from config import get_all # type: ignore
|
|
67
|
+
keys = get_all() or {}
|
|
68
|
+
except Exception:
|
|
69
|
+
keys = {}
|
|
74
70
|
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
username = keys.get("kaggle_username") or os.getenv("KAGGLE_USERNAME")
|
|
72
|
+
key = keys.get("kaggle_key") or os.getenv("KAGGLE_KEY")
|
|
77
73
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
if username:
|
|
75
|
+
os.environ["KAGGLE_USERNAME"] = str(username)
|
|
76
|
+
if key:
|
|
77
|
+
os.environ["KAGGLE_KEY"] = str(key)
|
|
82
78
|
|
|
83
79
|
username = os.getenv("KAGGLE_USERNAME")
|
|
84
80
|
key = os.getenv("KAGGLE_KEY")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vespermcp/mcp-server",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
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",
|
package/src/python/config.py
CHANGED
|
@@ -155,12 +155,7 @@ def _get_from_env(name: str) -> Optional[str]:
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
def get_key(name: str) -> Optional[str]:
|
|
158
|
-
# 1)
|
|
159
|
-
env_val = _get_from_env(name)
|
|
160
|
-
if env_val:
|
|
161
|
-
return env_val
|
|
162
|
-
|
|
163
|
-
# 2) keyring (secure)
|
|
158
|
+
# 1) keyring (secure)
|
|
164
159
|
if HAS_KEYRING:
|
|
165
160
|
try:
|
|
166
161
|
val = keyring.get_password(SERVICE_NAME, name)
|
|
@@ -169,14 +164,21 @@ def get_key(name: str) -> Optional[str]:
|
|
|
169
164
|
except Exception:
|
|
170
165
|
pass
|
|
171
166
|
|
|
172
|
-
#
|
|
167
|
+
# 2) encrypted fallback config.toml
|
|
173
168
|
fallback = _read_fallback_toml()
|
|
174
169
|
enc = fallback.get(name)
|
|
175
|
-
if
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
170
|
+
if enc:
|
|
171
|
+
secret = _get_or_create_local_secret()
|
|
172
|
+
method = fallback.get("__method__", "fernet" if HAS_FERNET else "xor")
|
|
173
|
+
dec = _decrypt_value(enc, method, secret)
|
|
174
|
+
if dec:
|
|
175
|
+
return dec
|
|
176
|
+
|
|
177
|
+
# 3) env vars (fallback only)
|
|
178
|
+
env_val = _get_from_env(name)
|
|
179
|
+
if env_val:
|
|
180
|
+
return env_val
|
|
181
|
+
return None
|
|
180
182
|
|
|
181
183
|
|
|
182
184
|
def set_key(name: str, value: str) -> Dict[str, str]:
|
|
@@ -20,14 +20,13 @@ def _ensure_auth() -> Dict[str, Any]:
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
# Priority:
|
|
23
|
-
# 1)
|
|
24
|
-
# 2)
|
|
23
|
+
# 1) secure local store (keyring or ~/.vesper/config.toml)
|
|
24
|
+
# 2) existing env vars
|
|
25
25
|
# 3) ~/.kaggle/kaggle.json handled by KaggleApi.authenticate()
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
os.environ["KAGGLE_KEY"] = keys["kaggle_key"]
|
|
26
|
+
keys = get_all()
|
|
27
|
+
if keys.get("kaggle_username") and keys.get("kaggle_key"):
|
|
28
|
+
os.environ["KAGGLE_USERNAME"] = keys["kaggle_username"]
|
|
29
|
+
os.environ["KAGGLE_KEY"] = keys["kaggle_key"]
|
|
31
30
|
|
|
32
31
|
api = KaggleApi()
|
|
33
32
|
try:
|
|
@@ -62,23 +62,19 @@ class AssetDownloader:
|
|
|
62
62
|
|
|
63
63
|
@staticmethod
|
|
64
64
|
def _hydrate_kaggle_credentials() -> None:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
from config import get_all # type: ignore
|
|
71
|
-
keys = get_all() or {}
|
|
72
|
-
except Exception:
|
|
73
|
-
keys = {}
|
|
65
|
+
try:
|
|
66
|
+
from config import get_all # type: ignore
|
|
67
|
+
keys = get_all() or {}
|
|
68
|
+
except Exception:
|
|
69
|
+
keys = {}
|
|
74
70
|
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
username = keys.get("kaggle_username") or os.getenv("KAGGLE_USERNAME")
|
|
72
|
+
key = keys.get("kaggle_key") or os.getenv("KAGGLE_KEY")
|
|
77
73
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
if username:
|
|
75
|
+
os.environ["KAGGLE_USERNAME"] = str(username)
|
|
76
|
+
if key:
|
|
77
|
+
os.environ["KAGGLE_KEY"] = str(key)
|
|
82
78
|
|
|
83
79
|
username = os.getenv("KAGGLE_USERNAME")
|
|
84
80
|
key = os.getenv("KAGGLE_KEY")
|