Skip to main content
Glama
config.schema.ts4.85 kB
/** * Configuration Schema * Strongly-typed configuration validation using Zod * * This schema defines all environment variables and configuration options * used by the Lokalise MCP server, sourced from: * - manifest.json (DXT package configuration) * - .env and .env.example files * - smithery.yaml (Smithery configuration) * - Runtime environment variables */ import { z } from "zod"; /** * Transport mode for the MCP server */ export const TransportModeSchema = z.enum(["stdio", "http"]).default("stdio"); /** * Node environment */ export const NodeEnvSchema = z .enum(["development", "test", "production"]) .optional(); /** * HTTP Query Configuration Schema * Configuration that can be passed via HTTP query parameters (Smithery) */ export const HttpQueryConfigSchema = z .object({ LOKALISE_API_KEY: z.string().optional(), LOKALISE_API_HOSTNAME: z.string().url().optional(), debug_mode: z.boolean().optional(), }) .passthrough(); // Allow additional fields for future expansion /** * Smithery Configuration Schema * Configuration passed via base64-encoded config parameter from Smithery */ export const SmitheryConfigSchema = z.object({ LOKALISE_API_KEY: z.string(), LOKALISE_API_HOSTNAME: z .string() .url() .default("https://api.lokalise.com/api2/"), debug_mode: z.boolean().default(false), }); /** * MCP Initialization Configuration Schema * Configuration passed during MCP client initialization */ export const McpInitConfigSchema = z .object({ LOKALISE_API_KEY: z.string().optional(), LOKALISE_API_HOSTNAME: z.string().url().optional(), DEBUG: z.union([z.boolean(), z.string()]).optional(), debug_mode: z.boolean().optional(), }) .passthrough(); /** * Main Runtime Configuration Schema * Complete configuration for the Lokalise MCP server */ export const RuntimeConfigSchema = z.object({ // Core Lokalise Configuration (Required) LOKALISE_API_KEY: z .string() .min(1, "LOKALISE_API_KEY is required") .describe("Your Lokalise API token"), // Lokalise API Configuration (Optional) LOKALISE_API_HOSTNAME: z .string() .url() .default("https://api.lokalise.com/api2/") .describe("Custom Lokalise API endpoint for enterprise deployments"), // Server Configuration TRANSPORT_MODE: TransportModeSchema.describe( "Transport mode for MCP server: stdio or http", ), PORT: z .number() .int() .min(1) .max(65535) .default(3000) .describe("HTTP server port (only used in http transport mode)"), // Debug and Development DEBUG: z .union([ z.boolean(), z.string(), // Can be a pattern like "mcp:*" or "controllers/*" ]) .default(false) .describe("Debug mode or debug pattern for selective logging"), debug_mode: z .boolean() .default(false) .describe("Alternative debug flag (from manifest.json)"), // Environment and Runtime NODE_ENV: NodeEnvSchema.describe( "Node environment (development, test, production)", ), MCP_SERVER_MODE: z .boolean() .default(false) .describe("Indicates if running as MCP server (vs CLI mode)"), }); /** * Partial configuration for updates */ export const PartialRuntimeConfigSchema = RuntimeConfigSchema.partial(); /** * TypeScript types derived from schemas */ export type TransportMode = z.infer<typeof TransportModeSchema>; export type NodeEnv = z.infer<typeof NodeEnvSchema>; export type HttpQueryConfig = z.infer<typeof HttpQueryConfigSchema>; export type SmitheryConfig = z.infer<typeof SmitheryConfigSchema>; export type McpInitConfig = z.infer<typeof McpInitConfigSchema>; export type RuntimeConfig = z.infer<typeof RuntimeConfigSchema>; export type PartialRuntimeConfig = z.infer<typeof PartialRuntimeConfigSchema>; /** * Configuration validation functions */ /** * Validate and parse runtime configuration */ export function validateRuntimeConfig(config: unknown): RuntimeConfig { return RuntimeConfigSchema.parse(config); } /** * Safely parse runtime configuration (returns result object) */ export function safeValidateRuntimeConfig(config: unknown) { return RuntimeConfigSchema.safeParse(config); } /** * Validate HTTP query configuration */ export function validateHttpQueryConfig(config: unknown): HttpQueryConfig { return HttpQueryConfigSchema.parse(config); } /** * Validate Smithery configuration */ export function validateSmitheryConfig(config: unknown): SmitheryConfig { return SmitheryConfigSchema.parse(config); } /** * Validate MCP initialization configuration */ export function validateMcpInitConfig(config: unknown): McpInitConfig { return McpInitConfigSchema.parse(config); } /** * Default configuration values */ export const DEFAULT_CONFIG: Partial<RuntimeConfig> = { LOKALISE_API_HOSTNAME: "https://api.lokalise.com/api2/", TRANSPORT_MODE: "stdio", PORT: 3000, DEBUG: false, debug_mode: false, MCP_SERVER_MODE: false, };

Latest Blog Posts

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/AbdallahAHO/lokalise-mcp'

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