qualys-mcp 2.1.5__tar.gz → 2.1.7__tar.gz

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.5
3
+ Version: 2.1.7
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "qualys-mcp"
7
- version = "2.1.5"
7
+ version = "2.1.7"
8
8
  description = "MCP server for Qualys security APIs - natural language interaction with vulnerability, asset, and cloud security data"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -32,10 +32,10 @@ def get_bearer_token():
32
32
  if BEARER_TOKEN:
33
33
  return BEARER_TOKEN
34
34
  try:
35
- req = Request(f"{GATEWAY_URL}/auth", method='POST')
36
- req.add_header('Authorization', f'Basic {BASIC_AUTH}')
35
+ auth_data = urlencode({'username': USERNAME, 'password': PASSWORD, 'token': 'true'}).encode()
36
+ req = Request(f"{GATEWAY_URL}/auth", data=auth_data, method='POST')
37
37
  req.add_header('Content-Type', 'application/x-www-form-urlencoded')
38
- with urlopen(req, data=b'', timeout=30) as resp:
38
+ with urlopen(req, timeout=30) as resp:
39
39
  BEARER_TOKEN = resp.read().decode().strip()
40
40
  return BEARER_TOKEN
41
41
  except:
@@ -411,14 +411,14 @@ def get_security_posture() -> dict:
411
411
  result['errors'].append('containers')
412
412
 
413
413
  try:
414
- for p in ['aws']:
415
- conns = get_connectors(p, 10)
416
- result['cloud']['accounts'] += len(conns)
414
+ for p in ['aws', 'azure', 'gcp']:
415
+ conns = get_connectors(p, 5)
417
416
  if conns:
417
+ result['cloud']['accounts'] += len(conns)
418
418
  acc = conns[0].get('awsAccountId') or conns[0].get('azureSubscriptionId') or conns[0].get('gcpProjectId')
419
419
  if acc:
420
- result['cloud']['failedControls'] += len([e for e in get_evaluations(acc, p, 100) if e.get('result') in ['FAIL', 'FAILED']])
421
- break
420
+ evals = get_evaluations(acc, p, 100)
421
+ result['cloud']['failedControls'] += len([e for e in evals if e.get('result') in ['FAIL', 'FAILED']])
422
422
  except:
423
423
  result['errors'].append('cloud')
424
424
 
File without changes
File without changes
File without changes