Gitea MCP server expects: - GITEA_API_URL (not GITEA_URL) - must include /api/v1 - GITEA_API_TOKEN (not GITEA_TOKEN) NetBox MCP server expects: - NETBOX_API_URL (not NETBOX_URL) - must include /api - NETBOX_API_TOKEN (not NETBOX_TOKEN) Changes: - Update all setup commands to use correct variable names - Update docs/CONFIGURATION.md with correct variables and URL format - Update scripts/setup.sh templates - Update CLAUDE.md hybrid configuration reference - Remove GITEA_ORG from system-level config (it's project-level) - Fix API URL paths in curl commands (remove redundant /api/v1) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
548 lines
21 KiB
Markdown
548 lines
21 KiB
Markdown
# Configuration Guide
|
|
|
|
Centralized configuration documentation for all plugins and MCP servers in the Leo Claude Marketplace.
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
**After installing the marketplace and plugins via Claude Code:**
|
|
|
|
```
|
|
/initial-setup
|
|
```
|
|
|
|
The interactive wizard handles everything except manually adding your API tokens.
|
|
|
|
---
|
|
|
|
## Setup Flow Diagram
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
│ FIRST TIME SETUP │
|
|
│ (once per machine) │
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
/initial-setup
|
|
│
|
|
┌──────────────────────────────┼──────────────────────────────┐
|
|
▼ ▼ ▼
|
|
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ PHASE 1 │ │ PHASE 2 │ │ PHASE 3 │
|
|
│ Automated │───────────▶│ Automated │───────────▶│ Interactive │
|
|
│ │ │ │ │ │
|
|
│ • Check │ │ • Find MCP path │ │ • Ask Gitea URL │
|
|
│ Python │ │ • Create venv │ │ • Ask Org name │
|
|
│ version │ │ • Install deps │ │ • Create config │
|
|
└─────────────┘ └─────────────────┘ └─────────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ PHASE 4 │
|
|
│ USER ACTION │
|
|
│ │
|
|
│ Edit config file to add │
|
|
│ API token (for security) │
|
|
│ │
|
|
│ nano ~/.config/claude/ │
|
|
│ gitea.env │
|
|
└───────────────────────────┘
|
|
│
|
|
▼
|
|
┌──────────────────────────────┬──────────────────────────────┐
|
|
▼ ▼ ▼
|
|
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ PHASE 5 │ │ PHASE 6 │ │ PHASE 7 │
|
|
│ Interactive │ │ Automated │ │ Automated │
|
|
│ │ │ │ │ │
|
|
│ • Confirm │ │ • Create .env │ │ • Test API │
|
|
│ repo name │ │ • Check │ │ • Show summary │
|
|
│ from git │ │ .gitignore │ │ • Restart note │
|
|
└─────────────┘ └─────────────────┘ └─────────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ RESTART SESSION │
|
|
│ │
|
|
│ MCP tools available │
|
|
│ after restart │
|
|
└───────────────────────────┘
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
│ NEW PROJECT SETUP │
|
|
│ (once per project) │
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────────┴───────────────┐
|
|
▼ ▼
|
|
/project-init /initial-setup
|
|
(direct path) (smart detection)
|
|
│ │
|
|
│ ┌──────────┴──────────┐
|
|
│ ▼ ▼
|
|
│ "Quick setup" "Full setup"
|
|
│ (skips to (re-runs
|
|
│ project config) everything)
|
|
│ │ │
|
|
└────────────────────┴─────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────┐
|
|
│ PROJECT CONFIG │
|
|
│ │
|
|
│ • Detect repo from │
|
|
│ git remote │
|
|
│ • Confirm with user │
|
|
│ • Create .env │
|
|
│ • Check .gitignore │
|
|
└─────────────────────┘
|
|
│
|
|
▼
|
|
Done!
|
|
```
|
|
|
|
---
|
|
|
|
## What Runs Automatically vs User Interaction
|
|
|
|
### `/initial-setup` - Full Setup
|
|
|
|
| Phase | Type | What Happens |
|
|
|-------|------|--------------|
|
|
| **1. Environment Check** | Automated | Verifies Python 3.10+ is installed |
|
|
| **2. MCP Server Setup** | Automated | Finds plugin path, creates venv, installs dependencies |
|
|
| **3. System Config Creation** | Interactive | Asks for Gitea URL and organization name |
|
|
| **4. Token Entry** | **User Action** | User manually edits config file to add API token |
|
|
| **5. Project Detection** | Interactive | Shows detected repo name, asks for confirmation |
|
|
| **6. Project Config** | Automated | Creates `.env` file, checks `.gitignore` |
|
|
| **7. Validation** | Automated | Tests API connectivity, shows summary |
|
|
|
|
### `/project-init` - Quick Project Setup
|
|
|
|
| Phase | Type | What Happens |
|
|
|-------|------|--------------|
|
|
| **1. Pre-flight Check** | Automated | Verifies system config exists |
|
|
| **2. Project Detection** | Interactive | Shows detected repo name, asks for confirmation |
|
|
| **3. Project Config** | Automated | Creates/updates `.env` file |
|
|
| **4. Gitignore Check** | Interactive | Asks to add `.env` to `.gitignore` if missing |
|
|
|
|
---
|
|
|
|
## Three Commands for Different Scenarios
|
|
|
|
| Command | When to Use | What It Does |
|
|
|---------|-------------|--------------|
|
|
| `/initial-setup` | First time on a machine | Full setup: MCP server + system config + project config |
|
|
| `/project-init` | Starting a new project | Quick setup: project config only (assumes system is ready) |
|
|
| `/project-sync` | After repo move/rename | Updates .env to match current git remote |
|
|
|
|
**Typical workflow:**
|
|
1. Install plugin → run `/initial-setup` (once per machine)
|
|
2. Start new project → run `/project-init` (once per project)
|
|
3. Repository moved? → run `/project-sync` (updates config)
|
|
|
|
**Smart features:**
|
|
- `/initial-setup` detects existing system config and offers quick project setup
|
|
- All commands validate org/repo via Gitea API before saving (auto-fills if verified)
|
|
- SessionStart hook automatically detects git remote vs .env mismatches
|
|
|
|
---
|
|
|
|
## Configuration Architecture
|
|
|
|
This marketplace uses a **hybrid configuration** approach:
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ SYSTEM-LEVEL (once per machine) │
|
|
│ ~/.config/claude/ │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ gitea.env │ GITEA_API_URL, GITEA_API_TOKEN │
|
|
│ netbox.env │ NETBOX_API_URL, NETBOX_API_TOKEN │
|
|
│ git-flow.env │ GIT_WORKFLOW_STYLE, GIT_DEFAULT_BASE, etc. │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
│
|
|
│ Shared across all projects
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ PROJECT-LEVEL (once per project) │
|
|
│ <project-root>/.env │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ GITEA_ORG │ Organization for this project │
|
|
│ GITEA_REPO │ Repository name for this project │
|
|
│ GIT_WORKFLOW_STYLE │ (optional) Override system default │
|
|
│ PR_REVIEW_* │ (optional) PR review settings │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Benefits:**
|
|
- Single token per service (update once, use everywhere)
|
|
- Easy multi-project setup (just run `/project-init` in each project)
|
|
- Security (tokens never committed to git, never typed into AI chat)
|
|
- Project isolation (each project can override defaults)
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
Before running `/initial-setup`:
|
|
|
|
1. **Python 3.10+** installed
|
|
```bash
|
|
python3 --version # Should be 3.10.0 or higher
|
|
```
|
|
|
|
2. **Git repository** initialized (for project setup)
|
|
```bash
|
|
git status # Should show initialized repository
|
|
```
|
|
|
|
3. **Claude Code** installed and working with the marketplace
|
|
|
|
---
|
|
|
|
## Setup Methods
|
|
|
|
### Method 1: Interactive Wizard (Recommended)
|
|
|
|
Run the setup wizard in Claude Code:
|
|
|
|
```
|
|
/initial-setup
|
|
```
|
|
|
|
The wizard will guide you through each step interactively.
|
|
|
|
**Note:** After first-time setup, you'll need to restart your Claude Code session for MCP tools to become available.
|
|
|
|
### Method 2: Manual Setup
|
|
|
|
If you prefer to set up manually or need to troubleshoot:
|
|
|
|
#### Step 1: MCP Server Setup
|
|
|
|
```bash
|
|
# Navigate to marketplace directory
|
|
cd /path/to/leo-claude-mktplace
|
|
|
|
# Set up Gitea MCP server
|
|
cd mcp-servers/gitea
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
deactivate
|
|
|
|
# (Optional) Set up NetBox MCP server
|
|
cd ../netbox
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
deactivate
|
|
```
|
|
|
|
#### Step 2: System Configuration
|
|
|
|
```bash
|
|
mkdir -p ~/.config/claude
|
|
|
|
# Gitea configuration (credentials only)
|
|
cat > ~/.config/claude/gitea.env << 'EOF'
|
|
GITEA_API_URL=https://gitea.example.com
|
|
GITEA_API_TOKEN=your_token_here
|
|
EOF
|
|
chmod 600 ~/.config/claude/gitea.env
|
|
```
|
|
|
|
#### Step 3: Project Configuration
|
|
|
|
In each project root:
|
|
|
|
```bash
|
|
cat > .env << 'EOF'
|
|
GITEA_ORG=your-organization
|
|
GITEA_REPO=your-repo-name
|
|
EOF
|
|
```
|
|
|
|
Add `.env` to `.gitignore` if not already there.
|
|
|
|
### Method 3: Automation Script (CI/Scripting)
|
|
|
|
For automated setups or CI environments:
|
|
|
|
```bash
|
|
cd /path/to/leo-claude-mktplace
|
|
./scripts/setup.sh
|
|
```
|
|
|
|
This script is useful for CI/CD pipelines and bulk provisioning.
|
|
|
|
---
|
|
|
|
## Configuration Reference
|
|
|
|
### System-Level Files
|
|
|
|
Located in `~/.config/claude/`:
|
|
|
|
| File | Required By | Purpose |
|
|
|------|-------------|---------|
|
|
| `gitea.env` | projman, pr-review | Gitea API credentials |
|
|
| `netbox.env` | cmdb-assistant | NetBox API credentials |
|
|
| `git-flow.env` | git-flow | Default git workflow settings |
|
|
|
|
### Gitea Configuration
|
|
|
|
```bash
|
|
# ~/.config/claude/gitea.env
|
|
GITEA_API_URL=https://gitea.example.com/api/v1
|
|
GITEA_API_TOKEN=your_gitea_token_here
|
|
```
|
|
|
|
| Variable | Description | Example |
|
|
|----------|-------------|---------|
|
|
| `GITEA_API_URL` | Gitea API endpoint (with `/api/v1`) | `https://gitea.example.com/api/v1` |
|
|
| `GITEA_API_TOKEN` | Personal access token | `abc123...` |
|
|
|
|
**Note:** `GITEA_ORG` is configured at the project level (see below) since different projects may belong to different organizations.
|
|
|
|
**Generating a Gitea Token:**
|
|
1. Log into Gitea → **User Icon** → **Settings**
|
|
2. **Applications** tab → **Manage Access Tokens**
|
|
3. **Generate New Token** with permissions:
|
|
- `repo` (all sub-permissions)
|
|
- `read:org`
|
|
- `read:user`
|
|
- `write:repo` (for wiki access)
|
|
4. Copy token immediately (shown only once)
|
|
|
|
### NetBox Configuration
|
|
|
|
```bash
|
|
# ~/.config/claude/netbox.env
|
|
NETBOX_API_URL=https://netbox.example.com
|
|
NETBOX_API_TOKEN=your_netbox_token_here
|
|
```
|
|
|
|
| Variable | Description | Example |
|
|
|----------|-------------|---------|
|
|
| `NETBOX_API_URL` | NetBox base URL | `https://netbox.example.com` |
|
|
| `NETBOX_API_TOKEN` | API token | `abc123...` |
|
|
|
|
### Git-Flow Configuration
|
|
|
|
```bash
|
|
# ~/.config/claude/git-flow.env
|
|
GIT_WORKFLOW_STYLE=feature-branch
|
|
GIT_DEFAULT_BASE=development
|
|
GIT_AUTO_DELETE_MERGED=true
|
|
GIT_AUTO_PUSH=false
|
|
GIT_PROTECTED_BRANCHES=main,master,development,staging,production
|
|
GIT_COMMIT_STYLE=conventional
|
|
GIT_CO_AUTHOR=true
|
|
```
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `GIT_WORKFLOW_STYLE` | `feature-branch` | Branching strategy |
|
|
| `GIT_DEFAULT_BASE` | `development` | Default base branch |
|
|
| `GIT_AUTO_DELETE_MERGED` | `true` | Delete merged branches |
|
|
| `GIT_AUTO_PUSH` | `false` | Auto-push after commit |
|
|
| `GIT_PROTECTED_BRANCHES` | `main,master,...` | Protected branches |
|
|
| `GIT_COMMIT_STYLE` | `conventional` | Commit message style |
|
|
| `GIT_CO_AUTHOR` | `true` | Include Claude co-author |
|
|
|
|
---
|
|
|
|
## Project-Level Configuration
|
|
|
|
Create `.env` in each project root:
|
|
|
|
```bash
|
|
# Required for projman, pr-review
|
|
GITEA_ORG=your-organization
|
|
GITEA_REPO=your-repo-name
|
|
|
|
# Optional: Override git-flow defaults
|
|
GIT_WORKFLOW_STYLE=pr-required
|
|
GIT_DEFAULT_BASE=main
|
|
|
|
# Optional: PR review settings
|
|
PR_REVIEW_CONFIDENCE_THRESHOLD=0.5
|
|
PR_REVIEW_AUTO_SUBMIT=false
|
|
```
|
|
|
|
| Variable | Required | Description |
|
|
|----------|----------|-------------|
|
|
| `GITEA_ORG` | Yes | Gitea organization for this project |
|
|
| `GITEA_REPO` | Yes | Repository name (must match Gitea exactly) |
|
|
| `GIT_WORKFLOW_STYLE` | No | Override system default |
|
|
| `PR_REVIEW_*` | No | PR review settings |
|
|
|
|
---
|
|
|
|
## Plugin Configuration Summary
|
|
|
|
| Plugin | System Config | Project Config | Setup Commands |
|
|
|--------|---------------|----------------|----------------|
|
|
| **projman** | gitea.env | .env (GITEA_ORG, GITEA_REPO) | `/initial-setup`, `/project-init`, `/project-sync` |
|
|
| **pr-review** | gitea.env | .env (GITEA_ORG, GITEA_REPO) | `/initial-setup`, `/project-init`, `/project-sync` |
|
|
| **git-flow** | git-flow.env (optional) | .env (optional) | None needed |
|
|
| **clarity-assist** | None | None | None needed |
|
|
| **cmdb-assistant** | netbox.env | None | `/initial-setup` |
|
|
| **doc-guardian** | None | None | None needed |
|
|
| **code-sentinel** | None | None | None needed |
|
|
| **project-hygiene** | None | None | None needed |
|
|
| **claude-config-maintainer** | None | None | None needed |
|
|
|
|
---
|
|
|
|
## Multi-Project Workflow
|
|
|
|
Once system-level config is set up, adding new projects is simple:
|
|
|
|
**Option 1: Use `/project-init` (faster)**
|
|
```
|
|
cd ~/projects/new-project
|
|
/project-init
|
|
```
|
|
|
|
**Option 2: Use `/initial-setup` (auto-detects)**
|
|
```
|
|
cd ~/projects/new-project
|
|
/initial-setup
|
|
# → Detects system config exists
|
|
# → Offers "Quick project setup" option
|
|
```
|
|
|
|
Both approaches work. Use `/project-init` when you know the system is already configured.
|
|
|
|
---
|
|
|
|
## Automatic Validation Features
|
|
|
|
### API Validation
|
|
|
|
When running `/initial-setup`, `/project-init`, or `/project-sync`, the commands:
|
|
|
|
1. **Detect** organization and repository from git remote URL
|
|
2. **Validate** via Gitea API: `GET /api/v1/repos/{org}/{repo}`
|
|
3. **Auto-fill** if repository exists and is accessible (no confirmation needed)
|
|
4. **Ask for confirmation** only if validation fails (404 or permission error)
|
|
|
|
This catches typos and permission issues before saving configuration.
|
|
|
|
### Mismatch Detection (SessionStart Hook)
|
|
|
|
When you start a Claude Code session, a hook automatically:
|
|
|
|
1. Reads `GITEA_ORG` and `GITEA_REPO` from `.env`
|
|
2. Compares with current `git remote get-url origin`
|
|
3. **Warns** if mismatch detected: "Repository location mismatch. Run `/project-sync` to update."
|
|
|
|
This helps when you:
|
|
- Move a repository to a different organization
|
|
- Rename a repository
|
|
- Clone a repo but forget to update `.env`
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
### Test Gitea Connection
|
|
|
|
```bash
|
|
source ~/.config/claude/gitea.env
|
|
curl -H "Authorization: token $GITEA_API_TOKEN" "$GITEA_API_URL/user"
|
|
```
|
|
|
|
### Verify Project Setup
|
|
|
|
In Claude Code, after restarting your session:
|
|
```
|
|
/labels-sync
|
|
```
|
|
|
|
If this works, your setup is complete.
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### MCP tools not available
|
|
|
|
**Cause:** Session wasn't restarted after setup.
|
|
**Solution:** Exit Claude Code and start a new session.
|
|
|
|
### "Configuration not found" error
|
|
|
|
```bash
|
|
# Check system config exists
|
|
ls -la ~/.config/claude/gitea.env
|
|
|
|
# Check permissions (should be 600)
|
|
stat ~/.config/claude/gitea.env
|
|
```
|
|
|
|
### Authentication failed
|
|
|
|
```bash
|
|
# Test token directly
|
|
source ~/.config/claude/gitea.env
|
|
curl -H "Authorization: token $GITEA_API_TOKEN" "$GITEA_API_URL/user"
|
|
```
|
|
|
|
If you get 401, regenerate your token in Gitea.
|
|
|
|
### MCP server won't start
|
|
|
|
```bash
|
|
# Check venv exists
|
|
ls /path/to/mcp-servers/gitea/.venv
|
|
|
|
# Reinstall if missing
|
|
cd /path/to/mcp-servers/gitea
|
|
rm -rf .venv
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
deactivate
|
|
```
|
|
|
|
### Wrong repository
|
|
|
|
```bash
|
|
# Check project .env
|
|
cat .env
|
|
|
|
# Verify GITEA_REPO matches the Gitea repository name exactly
|
|
```
|
|
|
|
---
|
|
|
|
## Security Best Practices
|
|
|
|
1. **Never commit tokens**
|
|
- Keep credentials in `~/.config/claude/` only
|
|
- Add `.env` to `.gitignore`
|
|
|
|
2. **Secure configuration files**
|
|
```bash
|
|
chmod 600 ~/.config/claude/*.env
|
|
```
|
|
|
|
3. **Never type tokens into AI chat**
|
|
- Always edit config files directly in your editor
|
|
- The `/initial-setup` wizard respects this
|
|
|
|
4. **Rotate tokens periodically**
|
|
- Every 6-12 months
|
|
- Immediately if compromised
|
|
|
|
5. **Minimum permissions**
|
|
- Only grant required token permissions
|
|
- Use separate tokens for different environments
|