API Reference
This section provides detailed API documentation for the egile-mcp-starter codebase.
Command Line Interface
CLI interface for egile-mcp-starter.
Generator Module
Project generator for MCP servers using cookiecutter.
- class egile_mcp_starter.generator.MCPProjectGenerator(output_dir: str = '.', no_input: bool = False, config_file: str | None = None, default_config: bool = False, verbose: bool = False, template: str = 'mcp', project_name: str | None = None)[source]
Bases:
objectGenerator for MCP server projects using the FASTMCP framework.
- __init__(output_dir: str = '.', no_input: bool = False, config_file: str | None = None, default_config: bool = False, verbose: bool = False, template: str = 'mcp', project_name: str | None = None)[source]
Initialize the MCP project generator.
- Parameters:
output_dir – Directory where the project will be created
no_input – Skip interactive prompts and use defaults
config_file – Path to cookiecutter config file
default_config – Use default configuration values
verbose – Enable verbose output
template – Name of the template to use (default: “mcp”)
project_name – Override the project name
- generate() Path[source]
Generate a new MCP server project.
- Returns:
Path to the generated project directory
- Raises:
Exception – If project generation fails
CLI Functions
main()
The main entry point for the egile-mcp-starter command line interface.
Usage:
egile-mcp-starter [OPTIONS]
Options:
--output-dir TEXT: Output directory for the generated project--config-file TEXT: Configuration file path--no-input: Don’t prompt for input, use defaults--verbose: Enable verbose output--version: Show version and exit--help: Show help message and exit
Examples:
# Interactive mode
egile-mcp-starter
# With configuration file
egile-mcp-starter --config-file my-config.yaml --no-input
# Specify output directory
egile-mcp-starter --output-dir ./my-projects
Generator Functions
generate_mcp_server()
Generates a new MCP server project using the cookiecutter template.
Parameters:
output_dir(str, optional): Output directory pathconfig_file(str, optional): Configuration file pathno_input(bool): Skip interactive promptsextra_context(dict, optional): Additional template context
Returns:
str: Path to the generated project
Raises:
ProjectGenerationError: If project generation failsTemplateError: If template processing fails
Example:
from egile_mcp_starter.generator import generate_mcp_server
# Generate with defaults
project_path = generate_mcp_server()
# Generate with custom options
project_path = generate_mcp_server(
output_dir="./projects",
no_input=True,
extra_context={
"project_name": "My Server",
"server_type": "tools"
}
)
Template Context Variables
The following variables are available in the cookiecutter template:
Project Configuration
cookiecutter.project_name: Display name for the projectcookiecutter.project_slug: Python package namecookiecutter.project_description: Project descriptioncookiecutter.version: Initial project version
Technical Configuration
cookiecutter.python_version: Target Python versioncookiecutter.server_type: MCP server type (tools/resources/prompts/full)
Feature Flags
cookiecutter.use_docker: Include Docker support (y/n)cookiecutter.use_github_actions: Include GitHub Actions (y/n)cookiecutter.use_pre_commit: Include pre-commit hooks (y/n)cookiecutter.include_examples: Include example implementations (y/n)
License
cookiecutter.license: Project license type
Exception Classes
ProjectGenerationError
Raised when project generation fails.
Attributes:
message: Error descriptioncontext: Additional error context
Example:
try:
generate_mcp_server()
except ProjectGenerationError as e:
print(f"Generation failed: {e.message}")
print(f"Context: {e.context}")
TemplateError
Raised when template processing encounters an error.
Attributes:
template_path: Path to the problematic templateerror_details: Detailed error information
Configuration Schema
YAML Configuration File Format
default_context:
# Project information
project_name: "My MCP Server"
project_slug: "my_mcp_server" # Optional, auto-generated
project_description: "A comprehensive MCP server"
version: "0.1.0"
# Author information
author_name: "Your Name"
author_email: "your@email.com"
github_username: "yourusername"
# Technical configuration
python_version: "3.11" # 3.8, 3.9, 3.10, 3.11, 3.12
server_type: "full" # tools, resources, prompts, full
# Features
use_docker: "y" # y or n
use_github_actions: "y" # y or n
use_pre_commit: "y" # y or n
include_examples: "y" # y or n
# License
license: "MIT" # MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, None
Environment Variables
The following environment variables can override configuration:
COOKIECUTTER_PROJECT_NAME: Override project nameCOOKIECUTTER_AUTHOR_NAME: Override author nameCOOKIECUTTER_AUTHOR_EMAIL: Override author emailCOOKIECUTTER_GITHUB_USERNAME: Override GitHub usernameCOOKIECUTTER_SERVER_TYPE: Override server typeCOOKIECUTTER_PYTHON_VERSION: Override Python versionCOOKIECUTTER_USE_DOCKER: Override Docker usageCOOKIECUTTER_USE_GITHUB_ACTIONS: Override GitHub Actions usageCOOKIECUTTER_LICENSE: Override license choice
Template Hooks
The template includes pre and post generation hooks:
Pre-generation Hook
Validates configuration and prepares the environment:
Validates Python version compatibility
Checks required dependencies
Prepares template context
Post-generation Hook
Performs cleanup and initialization:
Initializes Git repository
Sets up pre-commit hooks (if enabled)
Creates initial commit
Displays success message
Return Values
Success
When generation succeeds, functions return the path to the generated project:
"/path/to/output/my_mcp_server"
Error Handling
All functions use proper exception handling:
try:
project_path = generate_mcp_server()
print(f"✅ Project created at: {project_path}")
except ProjectGenerationError as e:
print(f"❌ Generation failed: {e}")
except Exception as e:
print(f"❌ Unexpected error: {e}")
Logging
The package uses Python’s logging module:
import logging
# Enable debug logging
logging.basicConfig(level=logging.DEBUG)
# Generate project with debug output
generate_mcp_server(verbose=True)
Log levels:
DEBUG: Detailed debugging informationINFO: General information about operationsWARNING: Warning messages for potential issuesERROR: Error messages for failures
Version Information
Access version information programmatically:
from egile_mcp_starter import __version__
print(f"egile-mcp-starter version: {__version__}")
Compatibility
Python Versions
Minimum: Python 3.10
Tested: Python 3.10, 3.11, 3.12
Recommended: Python 3.11
Dependencies
cookiecutter >= 2.1.1jinja2 >= 3.0.0click >= 8.0.0pyyaml >= 6.0