Guido

quotentiroler/Guido

3.2

If you are the rightful owner of Guido and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Model Context Protocol (MCP) server is designed to facilitate the integration of AI assistants with configuration management tools like Guido, enabling programmatic management of configuration templates.

Guido - Configuration Template Manager

A visual configuration management tool for creating, editing, and validating application settings with intelligent rule-based automation.

Live DemoQuick StartFeaturesDocumentation


What is Guido?

Guido is a web-based GUI application that simplifies the management of complex configuration files. Instead of manually editing JSON, YAML, or other config formats, Guido provides:

  • Visual editing of configuration fields with validation
  • Intelligent rules that automatically enable/disable settings based on conditions
  • Template system with reusable configuration schemas
  • Multi-format support for JSON, YAML, CSV, .env, .properties, and .txt files

Quick Start

Use the Hosted App

Visit quotentiroler.github.io/Guido to use Guido directly in your browser.

Run Locally

# Clone the repository
git clone https://github.com/quotentiroler/Guido.git
cd Guido

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:5173 in your browser.

Features

🎛️ Visual Configuration Editor

Edit configuration fields through an intuitive UI with:

  • Field metadata (descriptions, examples, documentation links)
  • Real-time validation (integers, booleans, URLs, regex patterns, enums)
  • Checkbox-based field selection for export

🔗 Rule Engine

Define conditional logic that automatically manages field dependencies:

If "Repository" is set to "MongoDb"
Then "MongoDbOptions.ConnectionString" must be set

Rule States:

StateDescription
setField must be enabled and have a value
set_to_valueField must equal a specific value
containsField value must contain a substring/item

🤖 MCP Server (AI Integration)

The included MCP (Model Context Protocol) server enables AI assistants like Claude to manage Guido templates programmatically.

Documentation

Template Structure

A .guido.json template consists of:

{
  "name": "My App Settings",
  "fileName": "appsettings.json",
  "version": "1.0.0",
  "description": "Configuration template for My App",
  "owner": "MyOrganization",
  "application": "My App",
  "docs": "https://docs.example.com",
  "command": "docker run myapp:latest",
  "fields": [...],
  "ruleSets": [...]
}

Field Definition

Each field describes a configuration option:

{
  "name": "Database.ConnectionString",
  "value": "Server=localhost;Database=mydb",
  "info": "Connection string for the primary database",
  "example": "Server=localhost;Database=mydb;User=admin",
  "range": "string",
  "link": "https://docs.example.com/connection-strings",
  "checked": true
}

Field Properties:

PropertyTypeDescription
namestringField identifier (use dots for nesting:Section.Subsection.Key)
valuestring| number | boolean | string[]Default value
infostringDescription shown in tooltip
examplestringExample value
rangestringValidation rule (see below)
linkstring?URL to documentation
checkedboolean?Whether field is enabled for export

Range Types:

RangeDescription
stringAny string value (unbounded)
booleanMust be true or false
integerMust be a whole number
integer(min..max)Integer within range (e.g., integer(1..65535))
string(min..max)String with length limits (e.g., string(0..255))
urlMust be a valid URL
string[]Array of strings
integer[]Array of integers
string[min..max]Array with size limits (e.g., string[1..10])
opt1||opt2||opt3Must match one of the options
^regex$Must match the regex pattern

Rule Definition

Rules define conditional relationships between fields:

{
  "description": "MongoDB requires connection string",
  "conditions": [
    { "name": "Repository", "state": "set_to_value", "value": "MongoDb" }
  ],
  "targets": [
    { "name": "MongoDbOptions.ConnectionString", "state": "set" }
  ]
}

Logic: If ALL conditions are true, then ALL targets are enforced

RuleDomain Properties:

PropertyTypeDescription
namestringField name to evaluate/affect
stateset | set_to_value | containsCondition type
valuestring?Value for set_to_value or contains
notboolean?Negate the condition/target

Known Limitations

Dynamic Arrays of Complex Objects

Guido cannot describe configuration structures with dynamic arrays of complex objects where users need to add/remove items at runtime. The dot notation flattening (e.g., Plugins.0.Name, Plugins.1.Name) works for fixed-size arrays but not for unbounded collections.

PatternExampleSupported
Nested objectsDatabase.Connection.Host
Simple arraysAllowedOrigins with range: "string[]"
Fixed-size object arraysServers.0.Host, Servers.1.Host
Dynamic object arraysUnlimited plugin definitions

CLI Tools

Validate Templates

npm run validate "path/to/template.guido.json"

Checks for:

  • Rule contradictions
  • Circular dependencies
  • Invalid rule structures
  • Field validation issues

Convert JSON Schema to Guido

npm run schema-to-guido "schema.json" -o "output.guido.json" \
  --name "My Template" \
  --version "1.0.0" \
  --owner "MyOrg" \
  --application "My App" \
  --docs "https://docs.example.com"

Convert Guido to JSON Schema

npm run guido-to-schema "template.guido.json" -o "output.schema.json"

Available Scripts

ScriptDescription
npm run devStart development server
npm run buildBuild for production
npm run previewPreview production build
npm run testRun tests
npm run test:watchRun tests in watch mode
npm run lintRun ESLint
npm run deployDeploy to GitHub Pages

Technology Stack

  • Frontend: React 19, TypeScript, Tailwind CSS
  • Build: Vite, npm workspaces (monorepo)
  • Testing: Vitest
  • Deployment: GitHub Pages

Contributing

We welcome contributions! Please see our for details.

Before contributing, please read our .

Quick Start for Contributors

# Fork and clone the repo
git clone https://github.com/YOUR_USERNAME/Guido.git
cd Guido

# Install dependencies
npm install

# Run tests
npm test

# Start development server
npm run dev

License

This project is licensed under the Apache License 2.0 - see the file for details.

Copyright 2024-2025 Maximilian Nussbaumer

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0