cyberark-mcp 1.0.0 → 1.0.2
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/README.md +33 -10
- package/dist/api.d.ts +69 -6
- package/dist/api.js +731 -71
- package/dist/license.d.ts +8 -0
- package/dist/license.js +79 -0
- package/dist/server.js +209 -20
- package/package.json +9 -8
package/README.md
CHANGED
|
@@ -1,19 +1,42 @@
|
|
|
1
1
|
# cyberark-mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Password breach checks and identity security audits - no API key.
|
|
4
|
+
|
|
5
|
+
## Tools
|
|
6
|
+
|
|
7
|
+
- `check_password` — Check a password against known data breaches using k-anonymity, so only five characters of its SHA-1 hash are sent and the password itself never leaves your machine. No API key needed.
|
|
8
|
+
- `check_passwords` — Check up to 10 passwords for known breaches in one call and report how many have already been leaked.
|
|
9
|
+
- `password_strength` — Score a password offline: entropy, character classes, common-word, keyboard and sequence patterns, plus an estimated offline crack time and a clear verdict.
|
|
10
|
+
- `generate_password` — Generate a random password from a cryptographically secure source, with control over length and character classes, and report its estimated crack time.
|
|
11
|
+
- `breach_catalog` — List breaches from the Have I Been Pwned catalogue, largest first, filtered by company domain or year, with the number of accounts and the kinds of data exposed.
|
|
12
|
+
- `breach_detail` — Look up one breach by name and get its date, exposed account count, verification status and the classes of data leaked.
|
|
13
|
+
- `domain_email_security` — Audit a domain's anti-spoofing setup: SPF, DMARC, DKIM selectors, MX records and CAA, graded A to F with the exact gaps to fix.
|
|
14
|
+
- `identify_hash` — Identify the likely algorithm behind a hash string — bcrypt, Argon2, crypt formats, MD5, SHA-1, SHA-256, SHA-512 and more — entirely offline.
|
|
15
|
+
- `hash_text` — Compute MD5, SHA-1, SHA-256 or SHA-512 digests of a string locally, for checksum and fingerprint checks.
|
|
16
|
+
- `breach_timeline` — Year-by-year view of known breaches from Have I Been Pwned: how many sites were breached and how many accounts were exposed.
|
|
17
|
+
- `subdomain_inventory` — Resolve common subdomains of a domain and show what each points to, flagging third-party CNAME targets that no longer resolve.
|
|
4
18
|
|
|
5
19
|
## Setup
|
|
6
20
|
|
|
7
|
-
|
|
8
|
-
export CYBERARK_BASE_URL=...
|
|
9
|
-
```
|
|
21
|
+
No setup. Breach lookups use the public k-anonymity API and the rest runs locally.
|
|
10
22
|
|
|
11
|
-
|
|
23
|
+
Part of [awesome-mcps](https://github.com/mrfentmen/awesome-mcps).
|
|
12
24
|
|
|
13
|
-
|
|
25
|
+
<!-- paywall -->
|
|
26
|
+
## Premium tools
|
|
14
27
|
|
|
15
|
-
|
|
16
|
-
- `list_accounts` — CyberArk accounts, optionally filtered by safe.
|
|
17
|
-
- `get_account` — One CyberArk account by id (metadata, not the password value).
|
|
28
|
+
These tools need a license key:
|
|
18
29
|
|
|
19
|
-
|
|
30
|
+
* `password_variation_audit`
|
|
31
|
+
* `dns_record_inventory`
|
|
32
|
+
|
|
33
|
+
Buy a key at https://mcp-marketplace.io/server/io-github-mrfentmen-cyberark-mcp and set it in your MCP client config:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
"env": { "MCP_LICENSE_KEY": "mcp_live_..." }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The key is checked against MCP Marketplace, cached for 24 hours, and keeps
|
|
40
|
+
working offline once one check has succeeded. Every other tool on this server
|
|
41
|
+
stays free.
|
|
42
|
+
<!-- /paywall -->
|
package/dist/api.d.ts
CHANGED
|
@@ -1,7 +1,70 @@
|
|
|
1
|
-
export declare class CyberarkError extends Error {
|
|
2
|
-
constructor(message: string);
|
|
3
|
-
}
|
|
4
1
|
export declare function errorMessage(e: unknown): string;
|
|
5
|
-
export declare function
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
export declare function checkPassword(args: {
|
|
3
|
+
password: string;
|
|
4
|
+
}): Promise<string>;
|
|
5
|
+
export declare function checkPasswords(args: {
|
|
6
|
+
passwords: string[];
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
export interface StrengthResult {
|
|
9
|
+
length: number;
|
|
10
|
+
classes: number;
|
|
11
|
+
entropyBits: number;
|
|
12
|
+
crackSeconds: number;
|
|
13
|
+
findings: string[];
|
|
14
|
+
verdict: string;
|
|
15
|
+
}
|
|
16
|
+
/** Scores a password locally. Nothing is transmitted. */
|
|
17
|
+
export declare function analyzeStrength(password: string): StrengthResult;
|
|
18
|
+
export declare function passwordStrength(args: {
|
|
19
|
+
password: string;
|
|
20
|
+
}): Promise<string>;
|
|
21
|
+
export declare function generatePassword(args: {
|
|
22
|
+
length?: number;
|
|
23
|
+
symbols?: boolean;
|
|
24
|
+
digits?: boolean;
|
|
25
|
+
upperCase?: boolean;
|
|
26
|
+
}): Promise<string>;
|
|
27
|
+
export declare function breachCatalog(args: {
|
|
28
|
+
domain?: string;
|
|
29
|
+
year?: number;
|
|
30
|
+
limit?: number;
|
|
31
|
+
}): Promise<string>;
|
|
32
|
+
export declare function breachDetail(args: {
|
|
33
|
+
name: string;
|
|
34
|
+
}): Promise<string>;
|
|
35
|
+
export declare function domainEmailSecurity(args: {
|
|
36
|
+
domain: string;
|
|
37
|
+
}): Promise<string>;
|
|
38
|
+
export declare function identifyHash(args: {
|
|
39
|
+
hash: string;
|
|
40
|
+
}): Promise<string>;
|
|
41
|
+
export declare function hashText(args: {
|
|
42
|
+
text: string;
|
|
43
|
+
algorithm?: string;
|
|
44
|
+
}): Promise<string>;
|
|
45
|
+
export declare function breachTimeline(args: {
|
|
46
|
+
from?: number;
|
|
47
|
+
to?: number;
|
|
48
|
+
}): Promise<string>;
|
|
49
|
+
export declare function subdomainInventory(args: {
|
|
50
|
+
domain: string;
|
|
51
|
+
names?: string;
|
|
52
|
+
limit?: number;
|
|
53
|
+
}): Promise<string>;
|
|
54
|
+
export interface DnsInventoryArgs {
|
|
55
|
+
domain: string;
|
|
56
|
+
}
|
|
57
|
+
/** The full public DNS picture for a domain: delegation, mail, policy and zone authority in one pass. */
|
|
58
|
+
export declare function dnsRecordInventory(args: DnsInventoryArgs): Promise<string>;
|
|
59
|
+
export interface DnssecArgs {
|
|
60
|
+
domain: string;
|
|
61
|
+
}
|
|
62
|
+
/** Whether a domain is actually DNSSEC-signed and validated, following the chain from DS to DNSKEY to RRSIG. */
|
|
63
|
+
export declare function dnssecStatus(args: DnssecArgs): Promise<string>;
|
|
64
|
+
export interface VariationAuditArgs {
|
|
65
|
+
base: string;
|
|
66
|
+
year?: number;
|
|
67
|
+
limit?: number;
|
|
68
|
+
}
|
|
69
|
+
/** Builds the mutation dictionary a credential-stuffing attack would use from one base word and reports which variants are already breached. */
|
|
70
|
+
export declare function passwordVariationAudit(args: VariationAuditArgs): Promise<string>;
|