generate_password
Create secure random passwords with customizable length, character types, and multiple generation options for enhanced security.
Instructions
Generate a secure random password with configurable options.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | Password length (4-256, default: 16) | |
| uppercase | No | Include uppercase letters (default: true) | |
| lowercase | No | Include lowercase letters (default: true) | |
| numbers | No | Include numbers (default: true) | |
| symbols | No | Include symbols (default: true) | |
| count | No | Number of passwords to generate (1-50) |
Implementation Reference
- src/tools/generators.ts:57-122 (handler)The generate_password tool registration and handler implementation. It uses `server.tool` to define the schema and the async handler logic, including password generation based on character constraints.
server.tool( "generate_password", "Generate a secure random password with configurable options.", { length: z .number() .int() .min(4) .max(256) .default(16) .describe("Password length (4-256, default: 16)"), uppercase: z .boolean() .default(true) .describe("Include uppercase letters (default: true)"), lowercase: z .boolean() .default(true) .describe("Include lowercase letters (default: true)"), numbers: z .boolean() .default(true) .describe("Include numbers (default: true)"), symbols: z .boolean() .default(true) .describe("Include symbols (default: true)"), count: z .number() .int() .min(1) .max(50) .default(1) .describe("Number of passwords to generate (1-50)"), }, async ({ length, uppercase, lowercase, numbers, symbols, count }) => { let charset = ""; if (uppercase) charset += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if (lowercase) charset += "abcdefghijklmnopqrstuvwxyz"; if (numbers) charset += "0123456789"; if (symbols) charset += "!@#$%^&*()_+-=[]{}|;:,.<>?"; if (charset.length === 0) { return { content: [ { type: "text" as const, text: "Error: At least one character type must be enabled", }, ], isError: true, }; } const passwords = Array.from({ length: count }, () => { const bytes = randomBytes(length); return Array.from(bytes) .map((b) => charset[b % charset.length]) .join(""); }); return { content: [{ type: "text" as const, text: passwords.join("\n") }], }; } );