qualys-mcp 2.1.7__py3-none-any.whl → 2.1.9__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qualys-mcp
3
- Version: 2.1.7
3
+ Version: 2.1.9
4
4
  Summary: MCP server for Qualys security APIs - natural language interaction with vulnerability, asset, and cloud security data
5
5
  Project-URL: Homepage, https://github.com/nelssec/qualys-mcp
6
6
  Project-URL: Repository, https://github.com/nelssec/qualys-mcp
@@ -0,0 +1,6 @@
1
+ qualys_mcp.py,sha256=02_b4cTUleP_mRED8Lqt-VjNXySeS1bFvLSxDW-p4Gk,32657
2
+ qualys_mcp-2.1.9.dist-info/METADATA,sha256=UwrWyZQDlNSWulDE5X-OZUHa5sr-v8XA_SoHNwbJ0SA,3295
3
+ qualys_mcp-2.1.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
4
+ qualys_mcp-2.1.9.dist-info/entry_points.txt,sha256=Dc8X0AhJDjGaZOJ0SNpWDWjEX4sYzrYa9FZEbggX0Rs,47
5
+ qualys_mcp-2.1.9.dist-info/licenses/LICENSE,sha256=dW3nC4AX_VbxPAgneSDR-miZPiHgAYw5JhPtdbUEt_E,1091
6
+ qualys_mcp-2.1.9.dist-info/RECORD,,
qualys_mcp.py CHANGED
@@ -27,8 +27,10 @@ BASIC_AUTH = base64.b64encode(f"{USERNAME}:{PASSWORD}".encode()).decode()
27
27
  BEARER_TOKEN = None
28
28
 
29
29
 
30
+ AUTH_ERROR = None
31
+
30
32
  def get_bearer_token():
31
- global BEARER_TOKEN
33
+ global BEARER_TOKEN, AUTH_ERROR
32
34
  if BEARER_TOKEN:
33
35
  return BEARER_TOKEN
34
36
  try:
@@ -37,8 +39,10 @@ def get_bearer_token():
37
39
  req.add_header('Content-Type', 'application/x-www-form-urlencoded')
38
40
  with urlopen(req, timeout=30) as resp:
39
41
  BEARER_TOKEN = resp.read().decode().strip()
42
+ AUTH_ERROR = None
40
43
  return BEARER_TOKEN
41
- except:
44
+ except Exception as e:
45
+ AUTH_ERROR = str(e)
42
46
  return None
43
47
 
44
48
 
@@ -816,9 +820,13 @@ def debug_api(endpoint: str = "eol") -> dict:
816
820
  result = {'endpoint': endpoint, 'gateway_url': GATEWAY_URL, 'base_url': BASE_URL}
817
821
 
818
822
  if endpoint == 'auth':
823
+ result['username_set'] = bool(USERNAME)
824
+ result['password_set'] = bool(PASSWORD)
825
+ result['auth_url'] = f"{GATEWAY_URL}/auth"
819
826
  token = get_bearer_token()
820
827
  result['token_obtained'] = bool(token)
821
828
  result['token_preview'] = token[:20] + '...' if token else None
829
+ result['auth_error'] = AUTH_ERROR
822
830
  return result
823
831
 
824
832
  if endpoint == 'assets':
@@ -854,7 +862,10 @@ def debug_api(endpoint: str = "eol") -> dict:
854
862
  result['has_assetListData'] = 'assetListData' in data
855
863
  result['asset_count'] = len(data.get('assetListData', {}).get('asset', []))
856
864
  if result['asset_count'] > 0:
857
- result['sample_asset'] = data['assetListData']['asset'][0]
865
+ result['sample_asset_raw'] = data['assetListData']['asset'][0]
866
+ parsed = get_eol_assets("EOL,EOL/EOS,EOS", 5)
867
+ result['parsed_count'] = len(parsed)
868
+ result['sample_asset_parsed'] = parsed[0] if parsed else None
858
869
  except Exception as e:
859
870
  result['error'] = str(e)
860
871
 
@@ -1,6 +0,0 @@
1
- qualys_mcp.py,sha256=RWb5GEmxOPPcdRZgQsYpSgGdsGwUiicUs8SGV4hktDQ,32155
2
- qualys_mcp-2.1.7.dist-info/METADATA,sha256=6yxOEr-Nd-O7FFiz6Qh26IK0bOEEuc4RqjIWxYW9_lk,3295
3
- qualys_mcp-2.1.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
4
- qualys_mcp-2.1.7.dist-info/entry_points.txt,sha256=Dc8X0AhJDjGaZOJ0SNpWDWjEX4sYzrYa9FZEbggX0Rs,47
5
- qualys_mcp-2.1.7.dist-info/licenses/LICENSE,sha256=dW3nC4AX_VbxPAgneSDR-miZPiHgAYw5JhPtdbUEt_E,1091
6
- qualys_mcp-2.1.7.dist-info/RECORD,,