# Configuration

Learn how to configure SousChef for your environment and customise its behaviour.

## Configuration Files

SousChef provides pre-configured setup files for different environments and MCP clients in the `config/` directory:

| File | Purpose |
|------|---------|
| `claude-desktop.json` | Production setup for Claude Desktop |
| `claude-desktop-dev.json` | Development setup pointing to local repository |
| `vscode-copilot.json` | VS Code with GitHub Copilot MCP extension |
| `vscode-copilot-dev.json` | VS Code development setup |

## MCP Server Configuration

The basic MCP server configuration structure:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "args": [],
      "env": {}
    }
  }
}
```

### Configuration Options

#### Command

The `command` field specifies how to launch the MCP server:

=== "PyPI Installation"

    ```json
    {
      "command": "souschef"
    }
    ```

=== "Poetry Development"

    ```json
    {
      "command": "poetry",
      "args": ["run", "souschef"]
    }
    ```

=== "Python Module"

    ```json
    {
      "command": "python3",
      "args": ["-m", "souschef.server"]
    }
    ```

#### Environment Variables

Configure behaviour through environment variables:

```json
{
  "env": {
    "LOG_LEVEL": "INFO",
    "SOUSCHEF_CONFIG_PATH": "/path/to/config"
  }
}
```

Available environment variables:

| Variable | Default | Description |
|----------|---------|-------------|
| `LOG_LEVEL` | `INFO` | Logging verbosity: `DEBUG`, `INFO`, `WARNING`, `ERROR` |
| `SOUSCHEF_CONFIG_PATH` | - | Custom configuration file path |
| `CHEF_REPO_PATH` | - | Default Chef repository path |
| `CHEF_SERVER_URL` | - | Chef Server URL for dynamic inventory queries (e.g., `https://chef.example.com`) |
| `CHEF_ORG` | `default` | Chef organisation name |
| `CHEF_CLIENT_NAME` | - | Chef client or user name for Chef Server authentication |
| `CHEF_CLIENT_KEY_PATH` | - | Path to the Chef client key file (PEM format) |
| `CHEF_CLIENT_KEY` | - | Inline Chef client key content (avoid when possible) |

## Model Provider Configuration

SousChef works with any MCP-compatible model provider. Configure your MCP client to use your preferred model.

### Claude (Anthropic)

Claude Desktop configuration is built-in. Simply add the souschef server configuration to `claude_desktop_config.json`.

### OpenAI (GPT-4, GPT-3.5)

Use an MCP client that supports OpenAI models:

```json
{
  "modelProvider": {
    "type": "openai",
    "apiKey": "${OPENAI_API_KEY}",
    "model": "gpt-4"
  },
  "mcpServers": {
    "souschef": {
      "command": "souschef"
    }
  }
}
```

### Local Models (Ollama)

For local model inference:

```json
{
  "modelProvider": {
    "type": "ollama",
    "endpoint": "http://localhost:11434",
    "model": "llama2"
  },
  "mcpServers": {
    "souschef": {
      "command": "souschef"
    }
  }
}
```

### Red Hat AI

Configure for Red Hat AI models:

```json
{
  "modelProvider": {
    "type": "redhat-ai",
    "endpoint": "https://ai.redhat.com/api",
    "apiKey": "${REDHAT_AI_API_KEY}"
  },
  "mcpServers": {
    "souschef": {
      "command": "souschef"
    }
  }
}
```

## Platform-Specific Configuration

### macOS

Configuration file location:
```
~/Library/Application Support/Claude/claude_desktop_config.json
```

Example setup:
```bash
# Install SousChef
pip3 install mcp-souschef

# Copy configuration
cp config/claude-desktop.json ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Restart Claude Desktop
```

### Linux

Configuration file location (varies by desktop environment):
```
~/.config/Claude/claude_desktop_config.json
```

Example setup:
```bash
# Install SousChef
pip3 install --user mcp-souschef

# Ensure pip bin is in PATH
export PATH="$PATH:$(python3 -m site --user-base)/bin"

# Copy configuration
mkdir -p ~/.config/Claude
cp config/claude-desktop.json ~/.config/Claude/claude_desktop_config.json
```

### Windows

Configuration file location:
```
%APPDATA%\Claude\claude_desktop_config.json
```

Example setup (PowerShell):
```powershell
# Install SousChef
pip install mcp-souschef

# Copy configuration
New-Item -Path "$env:APPDATA\Claude" -ItemType Directory -Force
Copy-Item config\claude-desktop.json "$env:APPDATA\Claude\claude_desktop_config.json"
```

## Development Configuration

For development and testing:

### Local Repository Setup

Point to your local development repository:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "poetry",
      "args": ["run", "souschef"],
      "cwd": "/path/to/souschef/repository",
      "env": {
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}
```

### Testing Configuration

For automated testing:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "python3",
      "args": ["-m", "souschef.server"],
      "env": {
        "LOG_LEVEL": "DEBUG",
        "TESTING": "true"
      }
    }
  }
}
```

## Advanced Configuration

### Custom Tool Filtering

Limit which tools are available:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "env": {
        "SOUSCHEF_TOOLS_INCLUDE": "parse_recipe,generate_playbook_from_recipe",
        "SOUSCHEF_TOOLS_EXCLUDE": "assess_chef_migration_complexity"
      }
    }
  }
}
```

### Performance Tuning

Configure for large-scale migrations:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "env": {
        "SOUSCHEF_MAX_FILE_SIZE": "10485760",
        "SOUSCHEF_CACHE_ENABLED": "true",
        "SOUSCHEF_PARALLEL_PROCESSING": "true"
      }
    }
  }
}
```

## Troubleshooting Configuration

### Verify Configuration

Check that your configuration is valid:

```bash
# Test MCP server launch
souschef --version

# Check if tools are accessible
souschef list-tools
```

### Common Issues

#### Command Not Found

```bash
# Check if souschef is in PATH
which souschef

# If not, add pip's bin directory to PATH
export PATH="$PATH:$(python3 -m site --user-base)/bin"
```

#### Permission Errors

```bash
# Ensure executable permissions
chmod +x $(which souschef)

# Or install with --user flag
pip3 install --user mcp-souschef
```

#### Configuration Not Loading

1. Verify configuration file location is correct for your platform
2. Check JSON syntax is valid
3. Ensure the MCP client has read permissions
4. Restart the MCP client completely

### Debug Mode

Enable debug logging to troubleshoot issues:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "env": {
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}
```

Check logs:

=== "macOS"
    ```bash
    tail -f ~/Library/Logs/Claude/mcp*.log
    ```

=== "Linux"
    ```bash
    tail -f ~/.local/share/Claude/logs/mcp*.log
    ```

=== "Windows"
    ```powershell
    Get-Content "$env:APPDATA\Claude\logs\mcp*.log" -Wait
    ```

## Configuration Examples

### Complete Claude Desktop Config

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "args": [],
      "env": {
        "LOG_LEVEL": "INFO",
        "CHEF_REPO_PATH": "/opt/chef/cookbooks"
      }
    }
  }
}
```

### VS Code with GitHub Copilot

```json
{
  "mcp.servers": {
    "souschef": {
      "command": "souschef",
      "args": [],
      "env": {}
    }
  }
}
```

### Multi-Server Setup

Run multiple MCP servers together:

```json
{
  "mcpServers": {
    "souschef": {
      "command": "souschef",
      "env": {
        "LOG_LEVEL": "INFO"
      }
    },
    "other-mcp-server": {
      "command": "other-server",
      "env": {}
    }
  }
}
```

## Next Steps

- [Start using SousChef](quick-start.md) with your configuration
- [Explore MCP tools](../user-guide/mcp-tools.md) available
- [Review CLI usage](../user-guide/cli-usage.md) for automation

For detailed configuration reference and troubleshooting, see [`config/CONFIGURATION.md`](https://github.com/kpeacocke/souschef/blob/main/config/CONFIGURATION.md) in the repository.
