Refactor devcontainer setup with MCP servers and dynamic config

Ajout d'une configuration DevContainer complète avec MCP Servers (LSP multi-langages, GitHub/Gitea), scripts de setup automatisés (crazycoder-setup.sh, setup-devcontainer.sh), et optimisation de l’image Docker (rustup/cargo-binstall, nettoyage des artefacts). Mise à jour du README avec documentation MCP et gestion dynamique des variables d’environnement (.env généré automatiquement selon la forge détectée). Simplification des entrypoints et postStartCommand pour une initialisation plus fiable.
This commit is contained in:
2026-03-11 22:18:02 +01:00
parent d6fb4e33e5
commit 6556c84e29
9 changed files with 405 additions and 184 deletions

View File

@@ -25,11 +25,58 @@ Environnement de développement conteneurisé avec assistance IA intégrée —
- `sqlite3`, `cmake`, `make`, `git`
- `aichat` (client LLM CLI)
### MCP Servers installés
Le conteneur inclut plusieurs MCP servers pour l'intégration avec les outils de développement :
| MCP Server | Utilisation |
|---|---|
| `mcp-language-server` | LSP pour Go (gopls), Python (pyright-langserver), Rust (rust-analyzer), TypeScript |
| `github-mcp-server` | Intégration GitHub (repos, issues, PR) via `GITHUB_TOKEN` |
| `gitea-mcp` | Intégration Gitea/Forgejo via `GITEA_URL` et `GITEA_TOKEN` |
| `mcp-server-commands` | Exécution de commandes shell depuis l'assistant IA |
### Assistants IA
- **Claude Code** (installé au `postCreateCommand`)
- **opencode** (configuré via l'entrypoint)
- **aichat** (configuré via l'entrypoint, connecté au LLM local)
### Configuration MCP dans les assistants
Les MCP servers sont automatiquement configurés dans opencode et Claude Code via `crazycoder-setup.sh` (exécuté en `postStartCommand`) :
**opencode** (`~/.config/opencode/opencode.json`) :
- LSP pour Go, Python, Rust, TypeScript via `mcp-language-server`
- Commandes shell via `mcp-server-commands`
- GitHub MCP (si `GITHUB_TOKEN` défini)
- Gitea MCP (si `GITEA_URL` et `GITEA_TOKEN` définis)
**Claude Code** (`~/.claude/.claude.json`) :
- Même configuration MCP qu'opencode
Les configurations sont générées dynamiquement au démarrage du conteneur avec les variables d'environnement disponibles.
## Variables d'environnement (.env)
Le fichier `.env` (non versionné, ignoré par git) contient les credentials pour les services externes :
| Variable | Description | Exemple |
|---|---|---|
| `GITHUB_TOKEN` | Personal Access Token GitHub pour l'accès API | `ghp_xxxxxxxxxxxxxxxxxxxx` |
| `GITEA_URL` | URL de votre serveur Gitea/Forgejo | `https://gitea.example.com` |
| `GITEA_TOKEN` | Token d'accès API Gitea | `xxxxxxxxxxxxxxxxxxxx` |
Copiez `.devcontainer/.env.example` vers `.env` et renseignez vos tokens :
```bash
cp .devcontainer/.env.example .env
# Éditer .env avec vos credentials
```
Ces variables sont utilisées par :
- Le MCP Server GitHub (pour les opérations repo/issues/PR)
- Le MCP Server Gitea (intégration avec votre instance)
## Utilisation rapide
### Ajouter l'environnement à un projet existant
@@ -89,6 +136,22 @@ pip install --user monpaquet
R -e 'install.packages("tidyverse")'
```
## Configuration MCP détaillée
### opencode
Le fichier `~/.config/opencode/opencode.json` est généré à chaque démarrage avec :
- **LSP servers** : gopls, pyright-langserver, rust-analyzer, typescript-language-server
- **Shell commands** : `mcp-server-commands`
- **GitHub MCP** : activé si `GITHUB_TOKEN` est défini
- **Gitea MCP** : activé si `GITEA_URL` et `GITEA_TOKEN` sont définis
- **Provider LM Studio** : endpoint local configurable
### Claude Code
Le fichier `~/.claude/.claude.json` est mis à jour avec la section `mcpServers` contenant les mêmes serveurs que opencode.
## LLM local
L'entrypoint configure automatiquement opencode et aichat pour pointer sur `LOCAL_LLM_API`