Configuration Options

This page describes all the configuration options available when generating a new MCP server project.

Configuration Methods

Interactive Prompts

When you run egile-mcp-starter without options, you’ll be prompted for each configuration value:

egile-mcp-starter

Configuration File

Create a YAML configuration file to automate project generation:

default_context:
  project_name: "My MCP Server"
  project_slug: "my_mcp_server"
  project_description: "A comprehensive MCP server"
  author_name: "Your Name"
  author_email: "your@email.com"
  github_username: "yourusername"
  version: "0.1.0"
  python_version: "3.11"
  server_type: "full"
  use_docker: "y"
  use_github_actions: "y"
  use_pre_commit: "y"
  license: "MIT"
  include_examples: "y"

Use it with:

egile-mcp-starter --config-file my-config.yaml --no-input

CLI Option Overrides

You can override specific configuration values using command-line options, even when using a configuration file:

# Override project name via CLI
egile-mcp-starter --config-file my-config.yaml --project-name "custom_server_name" --no-input

# Quick generation with minimal CLI options
egile-mcp-starter --project-name "my_api_server" --template mcp --no-input

# Override output directory
egile-mcp-starter --project-name "test_server" --output-dir ./build --no-input

Available CLI Overrides:

  • --project-name: Override the project name (affects directory and package names)

  • --template: Choose the template (mcp, rag)

  • --output-dir: Specify output directory

  • --verbose: Enable detailed output

The CLI overrides take precedence over configuration file values.


## Configuration Options

### Project Information

#### `project_name`
- **Description**: Display name for your project
- **Type**: String
- **Default**: "My MCP Server"
- **Example**: "Weather Forecast Server"

#### `project_slug`
- **Description**: Python package name (auto-generated from project_name)
- **Type**: String (lowercase, underscores)
- **Default**: Auto-generated
- **Example**: "weather_forecast_server"

#### `project_description`
- **Description**: Brief description of your project
- **Type**: String
- **Default**: "A Model Context Protocol server built with FASTMCP"
- **Example**: "Provides weather data and forecasting tools for AI assistants"

### Author Information

#### `author_name`
- **Description**: Your full name
- **Type**: String
- **Default**: "Your Name"
- **Example**: "John Doe"

#### `author_email`
- **Description**: Your email address
- **Type**: String (email format)
- **Default**: "your.email@example.com"
- **Example**: "john.doe@example.com"

#### `github_username`
- **Description**: Your GitHub username
- **Type**: String
- **Default**: "yourusername"
- **Example**: "johndoe"

### Version Information

#### `version`
- **Description**: Initial version of your project
- **Type**: String (semantic version)
- **Default**: "0.1.0"
- **Example**: "1.0.0"

#### `python_version`
- **Description**: Python version to target
- **Type**: Choice
- **Choices**: "3.8", "3.9", "3.10", "3.11", "3.12"
- **Default**: "3.11"

### Server Configuration

#### `server_type`
- **Description**: Type of MCP server to generate
- **Type**: Choice
- **Choices**: 
  - `"tools"`: Server with tool implementations only
  - `"resources"`: Server with resource management only
  - `"prompts"`: Server with prompt templates only
  - `"full"`: Complete server with all capabilities
- **Default**: "full"

### Feature Toggles

#### `use_docker`
- **Description**: Include Docker support
- **Type**: Choice ("y" or "n")
- **Default**: "y"
- **Includes**: Dockerfile, docker-compose.yml, .dockerignore

#### `use_github_actions`
- **Description**: Include GitHub Actions CI/CD workflows
- **Type**: Choice ("y" or "n")
- **Default**: "y"
- **Includes**: .github/workflows/ci.yml

#### `use_pre_commit`
- **Description**: Include pre-commit hooks configuration
- **Type**: Choice ("y" or "n")
- **Default**: "y"
- **Includes**: .pre-commit-config.yaml

#### `include_examples`
- **Description**: Include example implementations
- **Type**: Choice ("y" or "n")
- **Default**: "y"
- **Includes**: Example tools, resources, and prompts

### License Options

#### `license`
- **Description**: License for your project
- **Type**: Choice
- **Choices**:
  - `"MIT"`: MIT License (most permissive)
  - `"Apache-2.0"`: Apache License 2.0
  - `"GPL-3.0"`: GNU General Public License v3.0
  - `"BSD-3-Clause"`: BSD 3-Clause License
  - `"None"`: No license file
- **Default**: "MIT"

## Server Types Explained

### Tools Server (`server_type: "tools"`)

Creates a server focused on providing tools that AI systems can call:

- Includes tool implementation structure
- Example tool implementations (if `include_examples: "y"`)
- Optimized for function calling and AI interactions
- No resource or prompt capabilities

**Use cases**: API integrations, data processing, calculations, external service calls

### Resources Server (`server_type: "resources"`)

Creates a server focused on providing data resources:

- Includes resource handler structure  
- Example resource implementations (if `include_examples: "y"`)
- Optimized for data access and information retrieval
- No tool or prompt capabilities

**Use cases**: Database access, file systems, data feeds, content management

### Prompts Server (`server_type: "prompts"`)

Creates a server focused on providing prompt templates:

- Includes prompt template structure
- Example prompt implementations (if `include_examples: "y"`)
- Optimized for AI guidance and instruction
- No tool or resource capabilities

**Use cases**: Prompt libraries, conversation templates, AI instruction sets

### Full Server (`server_type: "full"`)

Creates a comprehensive server with all capabilities:

- Includes tools, resources, and prompts
- Complete example implementations (if `include_examples: "y"`)
- Maximum flexibility and functionality
- All MCP capabilities enabled

**Use cases**: Complex AI assistants, comprehensive integrations, multi-purpose servers

## Advanced Configuration

### Environment Variables

You can override any configuration option using environment variables:

```bash
export COOKIECUTTER_PROJECT_NAME="My Server"
export COOKIECUTTER_AUTHOR_NAME="John Doe"
egile-mcp-starter --no-input

Template Customization

For advanced users, you can modify the template itself:

# Clone the repository
git clone https://github.com/jpoullet2000/egile-mcp-starter.git
cd egile-mcp-starter

# Modify templates in egile_mcp_starter/template/
# Then use locally
cookiecutter ./egile_mcp_starter/template/

Configuration Examples

Minimal Tool Server

default_context:
  project_name: "Simple Calculator"
  project_description: "Basic math operations for AI"
  author_name: "Developer"
  author_email: "dev@example.com"
  server_type: "tools"
  use_docker: "n"
  use_github_actions: "n"
  use_pre_commit: "n"
  include_examples: "y"

Production-Ready Full Server

default_context:
  project_name: "Enterprise Data Server"
  project_description: "Comprehensive data access and processing server"
  author_name: "Enterprise Team"
  author_email: "team@company.com"
  github_username: "enterprise-team"
  version: "1.0.0"
  python_version: "3.11"
  server_type: "full"
  use_docker: "y"
  use_github_actions: "y"
  use_pre_commit: "y"
  license: "Apache-2.0"
  include_examples: "y"

Development/Learning Server

default_context:
  project_name: "Learning MCP Server"
  project_description: "Educational MCP server for learning"
  author_name: "Student"
  author_email: "student@university.edu"
  server_type: "full"
  python_version: "3.12"
  use_docker: "y"
  use_github_actions: "n"
  use_pre_commit: "y"
  license: "MIT"
  include_examples: "y"