Skip to main content
Glama

HomeAssistant MCP

validation-demo.tool.ts2.86 kB
/** * Example Tool: Validation Demo * * This tool demonstrates how to implement validation using Zod schemas * in MCP tools. It provides examples of different validation rules and * how they can be applied to tool parameters. */ import { z } from 'zod'; import { BaseTool } from '../../mcp/BaseTool.js'; // Define a complex schema with various validation rules const validationDemoSchema = z.object({ // String validations email: z.string().email() .describe('An email address to validate'), url: z.string().url().optional() .describe('Optional URL to validate'), // Number validations age: z.number().int().min(18).max(120) .describe('Age (must be between 18-120)'), score: z.number().min(0).max(100).default(50) .describe('Score from 0-100'), // Array validations tags: z.array(z.string().min(2).max(20)) .min(1).max(5) .describe('Between 1-5 tags, each 2-20 characters'), // Enum validations role: z.enum(['admin', 'user', 'guest']) .describe('User role (admin, user, or guest)'), // Object validations preferences: z.object({ theme: z.enum(['light', 'dark', 'system']).default('system') .describe('UI theme preference'), notifications: z.boolean().default(true) .describe('Whether to enable notifications'), language: z.string().default('en') .describe('Preferred language code') }).optional() .describe('Optional user preferences') }); // Define types based on the schema type ValidationDemoParams = z.infer<typeof validationDemoSchema>; type ValidationDemoResult = { valid: boolean; message: string; validatedData: ValidationDemoParams; metadata: { fieldsValidated: string[]; timestamp: string; }; }; /** * A tool that demonstrates parameter validation using Zod schemas */ export class ValidationDemoTool extends BaseTool<ValidationDemoParams, ValidationDemoResult> { constructor() { super({ name: 'validation_demo', description: 'Demonstrates parameter validation using Zod schemas', version: '1.0.0', parameters: validationDemoSchema, }); } /** * Execute the validation demo tool */ async execute(params: ValidationDemoParams): Promise<ValidationDemoResult> { // Get all field names that were validated const fieldsValidated = Object.keys(params); // Process the validated data (in a real tool, this would do something useful) return { valid: true, message: 'All parameters successfully validated', validatedData: params, metadata: { fieldsValidated, timestamp: new Date().toISOString() } }; } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jango-blockchained/advanced-homeassistant-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server