Skip to main content
Glama

Kibana MCP Server

by TocharianOU
types.ts3.56 kB
import { z } from "zod"; // Base schema types export const BaseSearchSchema = z.object({ search: z.string().optional(), page: z.number().optional().default(1), per_page: z.number().optional().default(20) }); export const BaseIdSchema = z.object({ id: z.string() }); export const BaseNameSchema = z.object({ name: z.string() }); export const BaseDescriptionSchema = z.object({ description: z.string().optional() }); // Configuration schema export const KibanaConfigSchema = z.object({ url: z.string().trim().min(1, "Kibana URL cannot be empty").url("Invalid Kibana URL format"), username: z.string().optional(), password: z.string().optional(), cookies: z.string().optional(), caCert: z.string().optional(), timeout: z.number().optional().default(30000), maxRetries: z.number().optional().default(3), defaultSpace: z.string().optional().default('default'), }); export type KibanaConfig = z.infer<typeof KibanaConfigSchema>; // Tool response types export interface ToolResponse { content: Array<{ type: "text"; text: string; }>; isError?: boolean; } // Resource response export interface ResourceResponse { contents: Array<{ uri: string; mimeType: string; text?: string; binary?: Uint8Array; size?: number; }>; } // Prompt response export interface PromptResponse { description?: string; messages: Array<{ role: "user" | "assistant" | "system"; content: { type: "text"; text: string; }; }>; } // Kibana client interface export interface KibanaClient { get: (url: string, options?: { params?: any; headers?: any; space?: string }) => Promise<any>; post: (url: string, data?: any, options?: { headers?: any; space?: string }) => Promise<any>; put: (url: string, data?: any, options?: { headers?: any; space?: string }) => Promise<any>; delete: (url: string, options?: { headers?: any; space?: string }) => Promise<any>; patch?: (url: string, data?: any, options?: { headers?: any; space?: string }) => Promise<any>; } // Server base interface for tools, prompts, and resources registration export interface ServerBase { tool: { (name: string, cb: (extra: RequestHandlerExtra) => Promise<ToolResponse> | ToolResponse): void; (name: string, description: string, schema: any, handler: (args: any, extra: RequestHandlerExtra) => Promise<ToolResponse> | ToolResponse): void; }; prompt: { (name: string, schema: any, handler: (args: any, extra?: RequestHandlerExtra) => Promise<PromptResponse> | PromptResponse): void; }; resource: { (name: string, uri: string, handler: (uri: URL, params: Record<string, string>, extra?: RequestHandlerExtra) => Promise<ResourceResponse> | ResourceResponse): void; (name: string, template: any, handler: (uri: URL, params: Record<string, string>, extra?: RequestHandlerExtra) => Promise<ResourceResponse> | ResourceResponse): void; }; } // Request handler extra information export interface RequestHandlerExtra { [key: string]: unknown; signal: AbortSignal; } // Error types export class KibanaError extends Error { constructor( message: string, public statusCode?: number, public details?: any ) { super(message); this.name = "KibanaError"; } } // Tool registration result export interface ToolRegistrationResult { name: string; success: boolean; error?: string; } // Server creation options export interface ServerCreationOptions { name: string; version: string; transport?: any; config: KibanaConfig; description?: string; }

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/TocharianOU/mcp-server-kibana'

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