@aaa-sentinel/mcp-server 0.6.0 → 0.7.0

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.
Files changed (3) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.js +26 -5
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -109,8 +109,9 @@ status as plain JSON.
109
109
  | `list_cost_anomalies` | `accountId?` | `reports:read` | Business |
110
110
  | `get_security_overview` | — | `security:read` | Pro + security add-on |
111
111
  | `get_security_score` | `accountId` | `security:read` | Pro + security add-on |
112
- | `list_security_findings` | `accountId`, `source?` | `security:read` | Pro + security add-on |
112
+ | `list_security_findings` | `accountId`, `source?`, `category?` | `security:read` | Pro + security add-on |
113
113
  | `get_security_critical_changes` | `accountId` | `security:read` | Pro + security add-on |
114
+ | `list_security_vulnerabilities` | `accountId` | `security:read` | Pro + security add-on |
114
115
  | `get_security_conformance` | `accountId` or `clientId` | `security:read` | Pro + security add-on |
115
116
  | `get_account` | `accountId` | `accounts:read` | Pro |
116
117
  | `get_account_monthly_costs` | `accountId` | `accounts:read` | Pro |
package/dist/cli.js CHANGED
@@ -5982,6 +5982,7 @@ function defineTool(def) {
5982
5982
  }
5983
5983
  var SAVINGS_TYPES = ["compute", "storage", "network", "database", "serverless", "governance"];
5984
5984
  var SECURITY_SOURCES = ["own", "corroborated", "securityhub", "guardduty", "defender", "scc"];
5985
+ var SECURITY_CATEGORIES = ["security_network", "security_exposure", "security_encryption", "security_iam", "security_logging", "security_secrets"];
5985
5986
  var AGENT_STATUSES = ["proposed", "pending_approval", "pending_second_approval", "approved", "executing", "completed", "failed", "cancelled", "expired"];
5986
5987
  var BillingPeriod = string2().regex(/^\d{4}-(0[1-9]|1[0-2])$/, "Use YYYY-MM");
5987
5988
  var ACCOUNT_ID = { type: "string", description: "Account identifier, as returned by list_accounts." };
@@ -6138,7 +6139,7 @@ var TOOLS = [
6138
6139
  }),
6139
6140
  defineTool({
6140
6141
  name: "list_security_findings",
6141
- description: "List the security findings of the latest security scan of one account (up to 500, most severe first), with attack chains and a diff against the previous scan. Requires the security:read scope, the Pro plan and the security add-on on that account.",
6142
+ description: 'List the security findings of the latest security scan of one account (up to 500, most severe first), with attack chains and a diff against the previous scan. Use category "security_iam" for the permissions view: effective administrators, unused identities, keys and service accounts, granted permissions that are not used, and assignments to deleted identities. Requires the security:read scope, the Pro plan and the security add-on on that account.',
6142
6143
  inputSchema: {
6143
6144
  type: "object",
6144
6145
  properties: {
@@ -6147,16 +6148,25 @@ var TOOLS = [
6147
6148
  type: "string",
6148
6149
  enum: [...SECURITY_SOURCES],
6149
6150
  description: "Filter by origin: own rules, corroborated, or a native tool (optional)."
6151
+ },
6152
+ category: {
6153
+ type: "string",
6154
+ enum: [...SECURITY_CATEGORIES],
6155
+ description: 'Filter by rule category (optional); "security_iam" is the permissions view.'
6150
6156
  }
6151
6157
  },
6152
6158
  required: ["accountId"]
6153
6159
  },
6154
- argsSchema: object({ accountId: string2().min(1), source: _enum(SECURITY_SOURCES).optional() }),
6155
- handler: async ({ accountId, source }, config2) => apiGet("/v1/security/findings", { accountId, source }, config2)
6160
+ argsSchema: object({
6161
+ accountId: string2().min(1),
6162
+ source: _enum(SECURITY_SOURCES).optional(),
6163
+ category: _enum(SECURITY_CATEGORIES).optional()
6164
+ }),
6165
+ handler: async ({ accountId, source, category }, config2) => apiGet("/v1/security/findings", { accountId, source, category }, config2)
6156
6166
  }),
6157
6167
  defineTool({
6158
6168
  name: "get_security_critical_changes",
6159
- description: "List the critical configuration changes of the last 7 days in one AWS account, read from CloudTrail (up to 100, newest first): public bucket or snapshot, remote admin open to the internet, logging turned off, root use, admin granted. Each comes with who made it and, for rule-backed changes, whether a re-check confirmed the risk. Accounts outside AWS, or without the security add-on, return supported false and an empty list. Requires the security:read scope and the Pro plan or above.",
6169
+ description: "List the critical configuration changes of the last 7 days in one account (up to 100, newest first), read from CloudTrail in AWS, the activity log in Azure or the Admin Activity audit logs in GCP: public bucket, storage or snapshot, remote admin open to the internet, logging turned off, root use, admin granted. Each comes with who made it and, for rule-backed changes, whether a re-check confirmed the risk. Accounts without the security add-on return supported false and an empty list. Requires the security:read scope and the Pro plan or above.",
6160
6170
  inputSchema: {
6161
6171
  type: "object",
6162
6172
  properties: { accountId: { type: "string", description: "Account identifier, as returned by list_accounts." } },
@@ -6165,6 +6175,17 @@ var TOOLS = [
6165
6175
  argsSchema: object({ accountId: string2().min(1) }),
6166
6176
  handler: async ({ accountId }, config2) => apiGet("/v1/security/critical-changes", { accountId }, config2)
6167
6177
  }),
6178
+ defineTool({
6179
+ name: "list_security_vulnerabilities",
6180
+ description: "List the vulnerabilities (CVEs) that the cloud native scanner already found in one account (Amazon Inspector or ECR basic scanning, Microsoft Defender for Cloud, GCP Artifact Analysis and VM Manager), up to 200, highest priority first. Each one has the cloud severity and an effective severity that rises when the resource is exposed to the internet, has a known exploit or is unused according to a cost rule (low CPU is shown as context only). AAA Sentinel does not scan on its own: tools shows whether each scanner is active, absent or could not be read, truncated whether the cloud has more than the cap, and partial why the list may be incomplete (scanner missing in some regions or resource types listed in uncovered, failed reads, time budget, unreadable entries, expired rows). Amazon Inspector only sees image use on ECS and EKS: when the account has container Lambdas, App Runner services or images not in use there, uncovered.gaps says ecr_images_outside_ecs_eks and those images come last with imageInUse false. An account without the security add-on returns access teaser and an empty list, which does not mean it has no vulnerabilities. bySeverity counts the effective severity. Requires the security:read scope and the Pro plan or above.",
6181
+ inputSchema: {
6182
+ type: "object",
6183
+ properties: { accountId: { type: "string", description: "Account identifier, as returned by list_accounts." } },
6184
+ required: ["accountId"]
6185
+ },
6186
+ argsSchema: object({ accountId: string2().min(1) }),
6187
+ handler: async ({ accountId }, config2) => apiGet("/v1/security/vulnerabilities", { accountId }, config2)
6188
+ }),
6168
6189
  defineTool({
6169
6190
  name: "get_security_conformance",
6170
6191
  description: "Get CIS benchmark coverage for one account, or for every account of a managed client (clientId, Business plan). Pass exactly one of accountId or clientId. Requires the security:read scope, plus reports:read when using clientId.",
@@ -6516,7 +6537,7 @@ function findTool(name) {
6516
6537
 
6517
6538
  // src/protocol.ts
6518
6539
  var SERVER_NAME = "aaa-sentinel-mcp";
6519
- var SERVER_VERSION = "0.6.0";
6540
+ var SERVER_VERSION = "0.7.0";
6520
6541
  var SUPPORTED_PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
6521
6542
  var PARSE_ERROR = -32700;
6522
6543
  var INVALID_REQUEST = -32600;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aaa-sentinel/mcp-server",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Read-only MCP server for AAA Sentinel: query cloud costs, savings, security posture, AI spend, uptime monitoring, the remediation agent and managed clients from an AI assistant",
5
5
  "license": "MIT",
6
6
  "type": "module",