Skip to main content
Glama

Debugg AI MCP

Official
by debugg-ai
index.tsโ€ข6.87 kB
/** * Comprehensive type definitions for DebuggAI MCP Server */ import { z } from 'zod'; import { CallToolRequest, Tool } from '@modelcontextprotocol/sdk/types.js'; /** * Tool input validation schemas */ export const TestPageChangesInputSchema = z.object({ description: z.string().min(1, 'Description is required'), localPort: z.number().int().min(1).max(65535).optional(), filePath: z.string().optional(), repoName: z.string().optional(), branchName: z.string().optional(), repoPath: z.string().optional(), }); export type TestPageChangesInput = z.infer<typeof TestPageChangesInputSchema>; /** * E2E Suite Tool Schemas */ export const ListTestsInputSchema = z.object({ repoName: z.string().optional(), branchName: z.string().optional(), status: z.enum(['pending', 'running', 'completed', 'failed']).optional(), page: z.number().int().positive().optional().default(1), limit: z.number().int().min(1).max(100).optional().default(20), }); export const ListTestSuitesInputSchema = z.object({ repoName: z.string().optional(), branchName: z.string().optional(), status: z.enum(['pending', 'running', 'completed', 'failed']).optional(), page: z.number().int().positive().optional().default(1), limit: z.number().int().min(1).max(100).optional().default(20), }); export const CreateTestSuiteInputSchema = z.object({ description: z.string().min(1, 'Description is required'), repoName: z.string().optional(), branchName: z.string().optional(), repoPath: z.string().optional(), filePath: z.string().optional(), }); export const CreateCommitSuiteInputSchema = z.object({ description: z.string().min(1, 'Description is required'), repoName: z.string().optional(), branchName: z.string().optional(), repoPath: z.string().optional(), filePath: z.string().optional(), }); export const ListCommitSuitesInputSchema = z.object({ repoName: z.string().optional(), branchName: z.string().optional(), status: z.enum(['pending', 'running', 'completed', 'failed']).optional(), page: z.number().int().positive().optional().default(1), limit: z.number().int().min(1).max(100).optional().default(20), }); export const GetTestStatusInputSchema = z.object({ suiteUuid: z.string().uuid('Invalid suite UUID'), suiteType: z.enum(['test', 'commit']).optional().default('test'), }); /** * Live Session Tool Schemas */ export const StartLiveSessionInputSchema = z.object({ url: z.string().min(1, 'URL is required'), localPort: z.number().int().min(1).max(65535).optional(), sessionName: z.string().max(100).optional(), monitorConsole: z.boolean().optional().default(true), monitorNetwork: z.boolean().optional().default(true), takeScreenshots: z.boolean().optional().default(false), screenshotInterval: z.number().int().min(1).max(300).optional().default(10), }); export const StopLiveSessionInputSchema = z.object({ sessionId: z.string().optional(), }); export const GetLiveSessionStatusInputSchema = z.object({ sessionId: z.string().optional(), }); export const GetLiveSessionLogsInputSchema = z.object({ sessionId: z.string().optional(), logType: z.enum(['console', 'network', 'errors', 'all']).optional().default('all'), since: z.string().datetime().optional(), limit: z.number().int().min(1).max(1000).optional().default(100), }); export const GetLiveSessionScreenshotInputSchema = z.object({ sessionId: z.string().optional(), fullPage: z.boolean().optional().default(false), quality: z.number().int().min(1).max(100).optional().default(90), format: z.enum(['png', 'jpeg']).optional().default('png'), }); // Input type inferences export type ListTestsInput = z.infer<typeof ListTestsInputSchema>; export type ListTestSuitesInput = z.infer<typeof ListTestSuitesInputSchema>; export type CreateTestSuiteInput = z.infer<typeof CreateTestSuiteInputSchema>; export type CreateCommitSuiteInput = z.infer<typeof CreateCommitSuiteInputSchema>; export type ListCommitSuitesInput = z.infer<typeof ListCommitSuitesInputSchema>; export type GetTestStatusInput = z.infer<typeof GetTestStatusInputSchema>; export type StartLiveSessionInput = z.infer<typeof StartLiveSessionInputSchema>; export type StopLiveSessionInput = z.infer<typeof StopLiveSessionInputSchema>; export type GetLiveSessionStatusInput = z.infer<typeof GetLiveSessionStatusInputSchema>; export type GetLiveSessionLogsInput = z.infer<typeof GetLiveSessionLogsInputSchema>; export type GetLiveSessionScreenshotInput = z.infer<typeof GetLiveSessionScreenshotInputSchema>; /** * Tool execution context */ export interface ToolContext { progressToken?: string; requestId?: string; timestamp: Date; } /** * Enhanced tool request with typed arguments */ export interface TypedCallToolRequest<T = any> extends Omit<CallToolRequest, 'params'> { params: { name: string; arguments: T; _meta?: { progressToken?: string; }; }; } /** * Tool handler function type */ export type ToolHandler<TInput = any, TOutput = any> = ( input: TInput, context: ToolContext, progressCallback?: ProgressCallback ) => Promise<TOutput>; /** * Tool definition with validation */ export interface ValidatedTool { name: string; description?: string; inputSchema: z.ZodSchema; handler: ToolHandler; } /** * Progress notification types */ export interface ProgressUpdate { progress: number; total: number; message?: string; } export type ProgressCallback = (update: ProgressUpdate) => Promise<void>; /** * Error types */ export enum MCPErrorCode { INVALID_REQUEST = -32600, METHOD_NOT_FOUND = -32601, INVALID_PARAMS = -32602, INTERNAL_ERROR = -32603, PARSE_ERROR = -32700, // Custom error codes VALIDATION_ERROR = -32000, CONFIGURATION_ERROR = -32001, AUTHENTICATION_ERROR = -32002, EXTERNAL_SERVICE_ERROR = -32003, } export class MCPError extends Error { constructor( public code: MCPErrorCode, message: string, public data?: any ) { super(message); this.name = 'MCPError'; } } /** * Tool response types */ export interface ToolResponse { content: Array<{ type: 'text' | 'image'; text?: string; data?: string; mimeType?: string; }>; } /** * E2E Test related types */ export interface E2ETestResult { testOutcome?: string; testDetails?: string[]; finalScreenshot?: string; runGif?: string; conversations?: Array<{ messages: Array<{ jsonContent?: { currentState?: { nextGoal?: string; }; }; }>; }>; } /** * Server configuration types (re-exported from config) */ export type { Config } from '../config/index.js'; /** * Logging types */ export enum LogLevel { ERROR = 'error', WARN = 'warn', INFO = 'info', DEBUG = 'debug', } export interface LogContext { requestId?: string; toolName?: string; userId?: string; [key: string]: any; }

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/debugg-ai/debugg-ai-mcp'

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