GroupeZ Docs

Installation

Ce guide vous accompagne dans l'ajout de Sarah à votre projet et sa configuration correcte.

Dépendances

Gradle

Ajoutez le dépôt GroupeZ et la dépendance Sarah à votre build.gradle :

repositories {
    mavenCentral()
    maven { url 'https://repo.groupez.dev/releases' }
}

dependencies {
    implementation 'fr.maxlego08.sarah:sarah:1.26'
}

Maven

Ajoutez le dépôt et la dépendance à votre pom.xml :

<repositories>
    <repository>
        <id>groupez</id>
        <url>https://repo.groupez.dev/releases</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>fr.maxlego08.sarah</groupId>
        <artifactId>sarah</artifactId>
        <version>1.26</version>
    </dependency>
</dependencies>

Relocation (Important !)

Pour éviter les conflits avec d'autres plugins utilisant Sarah, vous devriez relocaliser la dépendance.

Gradle avec le Plugin Shadow

plugins {
    id 'com.github.johnrengelman.shadow' version '8.1.1'
}

shadowJar {
    relocate 'fr.maxlego08.sarah', 'your.package.sarah'
}

Maven avec le Plugin Shade

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <relocations>
                    <relocation>
                        <pattern>fr.maxlego08.sarah</pattern>
                        <shadedPattern>your.package.sarah</shadedPattern>
                    </relocation>
                </relocations>
            </configuration>
        </execution>
    </executions>
</plugin>

Exemple de Configuration Basique

Voici un exemple complet de configuration de Sarah dans un plugin Minecraft :

public class MyPlugin extends JavaPlugin {

    private DatabaseConnection databaseConnection;
    private RequestHelper requestHelper;

    @Override
    public void onEnable() {
        // Charger la configuration
        saveDefaultConfig();

        // Configurer la base de données
        setupDatabase();

        // Exécuter les migrations
        runMigrations();
    }

    private void setupDatabase() {
        String type = getConfig().getString("database.type", "sqlite");

        if (type.equalsIgnoreCase("mysql")) {
            DatabaseConfiguration config = DatabaseConfiguration.create(
                getConfig().getString("database.user"),
                getConfig().getString("database.password"),
                getConfig().getInt("database.port", 3306),
                getConfig().getString("database.host"),
                getConfig().getString("database.database")
            );
            this.databaseConnection = new MySqlConnection(config);
        } else {
            DatabaseConfiguration config = DatabaseConfiguration.sqlite(
                getConfig().getBoolean("database.debug", false)
            );
            this.databaseConnection = new SqliteConnection(config, getDataFolder());
        }

        // Se connecter à la base de données
        try {
            this.databaseConnection.connect();
        } catch (SQLException e) {
            getLogger().severe("Échec de la connexion à la base de données !");
            e.printStackTrace();
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        // Créer le request helper
        this.requestHelper = new RequestHelper(databaseConnection, getLogger());
    }

    private void runMigrations() {
        MigrationManager.setMigrationTableName("my_plugin_migrations");
        MigrationManager.registerMigration(new CreatePlayersTable());
        MigrationManager.registerMigration(new CreateStatsTable());

        try {
            MigrationManager.execute(databaseConnection, getLogger());
        } catch (SQLException e) {
            getLogger().severe("Échec de l'exécution des migrations !");
            e.printStackTrace();
        }
    }

    @Override
    public void onDisable() {
        if (databaseConnection != null) {
            databaseConnection.disconnect();
        }
    }

    public RequestHelper getRequestHelper() {
        return requestHelper;
    }
}

Exemple de Fichier de Configuration

Voici un exemple de config.yml pour votre plugin :

database:
  # Type : mysql, mariadb ou sqlite
  type: sqlite

  # Paramètres MySQL/MariaDB (ignorés pour SQLite)
  host: localhost
  port: 3306
  database: my_plugin
  user: root
  password: secret

  # Activer la journalisation des requêtes SQL
  debug: false

Prochaines Étapes

Maintenant que Sarah est installé, apprenez à :

Sur cette page

GroupeZ MCP

La documentation dans ton IA

Le MCP permet à ton IA de chercher dans la documentation GroupeZ et de lire les exemples à jour pour t’aider à configurer tes plugins.

Lecture seule · Sans clé API côté documentation

1. Copie l’adresse du serveur

Transport : HTTP (Streamable HTTP). Authentification : aucune. Ton outil utilise son propre modèle et ses propres limites d’abonnement.

  1. Ouvre Plugins dans ChatGPT sur le web, puis + → Ajouter un serveur MCP personnalisé.
  2. Nomme-le « GroupeZ Documentation », colle l’URL ci-dessus et choisis « Aucune authentification ». Crée puis installe le plugin.
  3. Dans une conversation, tape @ et sélectionne ce plugin avant d’envoyer ta question. Si nécessaire, active search, get_page et list_pages dans ses paramètres.
Guide officiel de cet outil

3. Pose une question

Utilise le MCP GroupeZ pour m’aider à créer un inventaire zMenu. Recherche les pages pertinentes, lis les exemples et cite tes sources.
Autres clients et dépannage

Pour les clients utilisant mcpServers, adapte cet exemple à leur format :

{
  "mcpServers": {
    "groupez-docs": {
      "url": ""
    }
  }
}

Les outils disponibles sont search, get_page et list_pages. Après une mise à jour, actualise les outils du connecteur. Si ton IA n’y accède pas, vérifie que le connecteur est activé dans la conversation et que ton compte autorise les MCP personnalisés. Ouvrir l’URL dans un navigateur n’est pas un test MCP.