egile-mcp-starter


Nameegile-mcp-starter JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/jpoullet2000/egile-mcp-starter
SummaryA comprehensive cookiecutter template for creating Model Context Protocol (MCP) servers using the FASTMCP framework
upload_time2025-07-28 19:47:54
maintainerNone
docs_urlNone
authorJean-Baptiste Poullet
requires_python>=3.10
licenseNone
keywords mcp model-context-protocol fastmcp cookiecutter template ai assistant
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # egile-mcp-starter

[![PyPI - Version](https://img.shields.io/pypi/v/egile-mcp-starter.svg)](https://pypi.org/project/egile-mcp-starter)
[![Tests](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml/badge.svg)](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml)
[![Python Versions](https://img.shields.io/pypi/pyversions/egile-mcp-starter.svg)](https://pypi.org/project/egile-mcp-starter)
[![License](https://img.shields.io/github/license/jpoullet2000/egile-mcp-starter.svg?v=2)](https://github.com/jpoullet2000/egile-mcp-starter/blob/main/LICENSE)
[![Docker](https://img.shields.io/docker/automated/jpoullet2000/egile-mcp-starter.svg)](https://hub.docker.com/r/jpoullet2000/egile-mcp-starter)
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![FastMCP](https://img.shields.io/badge/built%20with-FastMCP-green.svg)](https://github.com/jlowin/fastmcp)
[![MCP](https://img.shields.io/badge/protocol-MCP-orange.svg)](https://modelcontextprotocol.io/)

A comprehensive cookiecutter template for creating Model Context Protocol (MCP) servers using the FASTMCP framework.

## Features

- ๐Ÿš€ **Modern Python Setup**: Uses Poetry for dependency management and packaging
- ๐Ÿ—๏ธ **FASTMCP Framework**: Built on the efficient FASTMCP framework for MCP servers
- ๐Ÿ› ๏ธ **Flexible Server Types**: Choose from tools, resources, prompts, or full-featured servers
- ๐Ÿงช **Testing Ready**: Comprehensive test suite with pytest and coverage
- ๐Ÿ”ง **Development Tools**: Pre-configured with Black, Flake8, MyPy, and pre-commit hooks
- ๐Ÿณ **Docker Support**: Optional Docker configuration for easy deployment
- ๐Ÿ”„ **CI/CD Ready**: GitHub Actions workflows for automated testing and deployment
- ๐Ÿ“š **Rich Documentation**: Detailed README and code documentation
- ๐ŸŽ›๏ธ **Configurable**: YAML-based configuration with environment variable support

## Quick Start

### Installation

```bash
# Install with Poetry (recommended)
pip install egile-mcp-starter

# Or install from source
git clone https://github.com/jpoullet2000/egile-mcp-starter.git
cd egile-mcp-starter
poetry install
```

### Generate a New MCP Server

```bash
# Using the installed command
egile-mcp-starter

# Or if installed from source
poetry run egile-mcp-starter

# With options
egile-mcp-starter --output-dir ./my-projects --verbose
```

### Available Server Types

When generating a project, you can choose from:

- **tools**: Server with tool implementations for AI interactions
- **resources**: Server with resource management for data access  
- **prompts**: Server with prompt templates for AI guidance
- **full**: Complete server with all capabilities (tools, resources, and prompts)

## Generated Project Structure

The generated project will have this structure:

```
my-mcp-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ my_mcp_server/
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ server.py          # Main MCP server implementation
โ”‚   โ”‚   โ”œโ”€โ”€ config.py          # Configuration management
โ”‚   โ”‚   โ”œโ”€โ”€ tools/             # Tool implementations (if enabled)
โ”‚   โ”‚   โ”œโ”€โ”€ resources/         # Resource handlers (if enabled)
โ”‚   โ”‚   โ”œโ”€โ”€ prompts/           # Prompt templates (if enabled)
โ”‚   โ”‚   โ””โ”€โ”€ utils.py           # Utility functions
โ”‚   โ””โ”€โ”€ main.py                # Entry point
โ”œโ”€โ”€ tests/                     # Comprehensive test suite
โ”œโ”€โ”€ pyproject.toml            # Poetry configuration
โ”œโ”€โ”€ README.md                 # Project documentation
โ”œโ”€โ”€ Dockerfile               # Docker configuration (optional)
โ””โ”€โ”€ .github/workflows/       # CI/CD workflows (optional)
```

## Development

### Setting up Development Environment

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

# Install dependencies
poetry install --with dev

# Install pre-commit hooks
poetry run pre-commit install
```

### Running Tests

```bash
# Run all tests
poetry run pytest

# Run with coverage
poetry run pytest --cov=egile_mcp_starter --cov-report=html

# Run specific tests
poetry run pytest tests/test_generator.py -v
```

### Code Quality

```bash
# Format code
poetry run black .

# Check linting
poetry run flake8 egile_mcp_starter tests

# Type checking
poetry run mypy egile_mcp_starter

# Run all pre-commit checks
poetry run pre-commit run --all-files
```

## Configuration Options

The cookiecutter template supports these configuration options:

| Option | Description | Choices |
|--------|-------------|---------|
| `project_name` | Display name for your project | String |
| `project_slug` | Python package name | Auto-generated |
| `project_description` | Project description | String |
| `author_name` | Your name | String |
| `author_email` | Your email | String |
| `github_username` | Your GitHub username | String |
| `version` | Initial version | String (default: 0.1.0) |
| `python_version` | Python version | 3.10, 3.11, 3.12 |
| `use_docker` | Include Docker support | y/n |
| `use_github_actions` | Include CI/CD workflows | y/n |
| `use_pre_commit` | Include pre-commit hooks | y/n |
| `license` | Project license | MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, None |
| `include_examples` | Include example implementations | y/n |
| `server_type` | Type of MCP server | tools, resources, prompts, full |

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`poetry run pytest`)
5. Run code quality checks (`poetry run pre-commit run --all-files`)
6. Commit your changes (`git commit -m 'Add amazing feature'`)
7. Push to the branch (`git push origin feature/amazing-feature`)
8. Open a Pull Request

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

- ๐Ÿ“ง Email: jpoullet2000@gmail.com
- ๐Ÿ› Issues: [GitHub Issues](https://github.com/jpoullet2000/egile-mcp-starter/issues)
- ๐Ÿ“– MCP Documentation: [Model Context Protocol](https://modelcontextprotocol.io/)
- ๐Ÿš€ FASTMCP: [FASTMCP Framework](https://github.com/jlowin/fastmcp)

---

Built with โค๏ธ using [FASTMCP](https://github.com/jlowin/fastmcp) and the [Model Context Protocol](https://modelcontextprotocol.io/)

## Overview

The Model Context Protocol (MCP) is a standardized protocol for communication between AI systems and external tools/data sources. This template provides a complete foundation for building MCP servers with:

- ๐Ÿ› ๏ธ **Tool Support** - Implement custom tools that AI can call
- ๐Ÿ“š **Resource Support** - Provide data and information access
- ๐Ÿ’ฌ **Prompt Support** - Create reusable prompt templates
- ๐Ÿงช **Testing Framework** - Comprehensive test coverage
- ๐Ÿ”ง **Development Tools** - Linting, formatting, type checking
- ๐Ÿณ **Docker Support** - Container deployment ready
- ๐Ÿ”„ **CI/CD Pipeline** - GitHub Actions integration
- ๐Ÿ“‹ **Type Safety** - Full type annotations throughout

## Features

### ๐ŸŽฏ **Template Options**

- **Server Types**: Choose from tools, resources, prompts, or full MCP server
- **Python Versions**: Support for Python 3.10-3.12
- **Docker Integration**: Optional Docker and docker-compose setup
- **CI/CD Ready**: GitHub Actions workflow included
- **Development Tools**: Pre-commit hooks, linting, testing
- **Documentation**: Auto-generated README and examples

### ๐Ÿ› ๏ธ **Built-in Capabilities**

- **Configuration Management**: YAML-based config with environment variable override
- **Logging**: Structured logging with configurable levels
- **Error Handling**: Comprehensive error handling and validation
- **Type Safety**: Full type annotations with mypy checking
- **Testing**: pytest-based testing with coverage reporting
- **Security**: Built-in security scanning and best practices

## Quick Start

### Installation

```bash
# Install the package
pip install egile-mcp-starter

# Or install from source
git clone https://github.com/jpoullet2000/egile-mcp-starter.git
cd egile-mcp-starter
pip install -e .
```

### Generate a New MCP Server

```bash
# Use the CLI tool
egile-mcp-starter

# Or use cookiecutter directly
cookiecutter https://github.com/jpoullet2000/egile-mcp-starter.git
```

### Interactive Configuration

The template will prompt you for:

- **Project name and description**
- **Author information**
- **Server type** (tools, resources, prompts, or full)
- **Python version** (3.10-3.12)
- **Optional features** (Docker, GitHub Actions, pre-commit)
- **License choice** (MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, or None)

### Example Usage

```bash
$ egile-mcp-starter
project_name [My MCP Server]: Weather MCP Server
project_description [A Model Context Protocol server built with FASTMCP]: Weather data MCP server with forecast tools
author_name [Your Name]: John Doe
author_email [your.email@example.com]: john@example.com
server_type [full]: tools
python_version [3.11]: 3.11
use_docker [y]: y
use_github_actions [y]: y
include_examples [y]: y

โœ… MCP server project generated successfully at: ./weather_mcp_server
```

## Generated Project Structure

```
my_mcp_server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ my_mcp_server/
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ server.py          # Main MCP server
โ”‚   โ”‚   โ”œโ”€โ”€ config.py          # Configuration management
โ”‚   โ”‚   โ”œโ”€โ”€ tools/             # Tool implementations
โ”‚   โ”‚   โ”œโ”€โ”€ resources/         # Resource handlers
โ”‚   โ”‚   โ”œโ”€โ”€ prompts/           # Prompt templates
โ”‚   โ”‚   โ””โ”€โ”€ utils.py           # Utility functions
โ”‚   โ””โ”€โ”€ main.py                # Entry point
โ”œโ”€โ”€ tests/                     # Test suite
โ”œโ”€โ”€ Dockerfile                 # Docker configuration
โ”œโ”€โ”€ docker-compose.yml         # Docker Compose setup
โ”œโ”€โ”€ .github/workflows/ci.yml   # GitHub Actions CI/CD
โ”œโ”€โ”€ .pre-commit-config.yaml    # Pre-commit hooks
โ”œโ”€โ”€ pyproject.toml             # Project configuration
โ”œโ”€โ”€ poetry.lock                # Locked dependencies
โ””โ”€โ”€ README.md                  # Project documentation
```

## Development Workflow

### 1. Generate Your Project

```bash
egile-mcp-starter
cd your-project-name
```

### 2. Set Up Development Environment

```bash
# Install dependencies
pip install -e ".[dev]"

# Set up pre-commit hooks (if enabled)
pre-commit install
```

### 3. Customize Your Server

- **Add Tools**: Implement in `src/your_project/tools/`
- **Add Resources**: Implement in `src/your_project/resources/`
- **Add Prompts**: Implement in `src/your_project/prompts/`
- **Configure**: Edit `config.example.yaml`

### 4. Test and Deploy

```bash
# Run tests
pytest

# Run with Docker
docker-compose up

# Deploy
git push origin main  # Triggers CI/CD
```

## Example Server Types

### ๐Ÿ› ๏ธ Tools Server

```python
@server.tool("weather_forecast")
async def get_weather(location: str, days: int = 5) -> dict:
    """Get weather forecast for a location."""
    # Your implementation here
    return {"location": location, "forecast": [...]}
```

### ๐Ÿ“š Resources Server

```python
@server.resource("weather://current")
async def current_weather() -> str:
    """Provide current weather data."""
    # Your implementation here
    return json.dumps(weather_data)
```

### ๐Ÿ’ฌ Prompts Server

```python
@server.prompt("weather_analysis")
async def weather_analysis_prompt(data: str) -> str:
    """Generate weather analysis prompt."""
    return f"""Analyze this weather data and provide insights:
    
{data}

Please provide:
1. Current conditions summary
2. Notable weather patterns
3. Recommendations for activities
"""
```

## Configuration Options

The generated project includes extensive configuration options:

```yaml
# Server settings
host: localhost
port: 8000
log_level: INFO

# Feature toggles
enable_tools: true
enable_resources: true
enable_prompts: true

# Custom settings
custom_settings:
  debug_mode: false
  max_concurrent_requests: 10
  # Add your custom options here
```

## CLI Usage

```bash
# Generate with defaults
egile-mcp-starter --no-input

# Use custom config file
egile-mcp-starter --config-file my-config.yaml

# Specify output directory
egile-mcp-starter --output-dir ./projects/

# Verbose output
egile-mcp-starter --verbose
```

## Integration with Claude Desktop

Add your generated server to Claude Desktop configuration:

```json
{
  "mcpServers": {
    "your-server-name": {
      "command": "python",
      "args": ["/path/to/your-project/src/main.py"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
```

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`poetry run pytest`)
5. Run code quality checks (`poetry run black . && poetry run flake8 . && poetry run mypy egile_mcp_starter`)
6. Commit your changes (`git commit -m 'Add amazing feature'`)
7. Push to the branch (`git push origin feature/amazing-feature`)
8. Open a Pull Request

### Development Setup

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

# Install with Poetry
poetry install

# Install pre-commit hooks
poetry run pre-commit install

# Run tests
poetry run pytest

# Run all quality checks
poetry run black .
poetry run flake8 .
poetry run mypy egile_mcp_starter
poetry run pytest --cov=egile_mcp_starter
```

### CI/CD Pipeline

The project includes a comprehensive CI/CD pipeline with GitHub Actions that:

- **Testing**: Runs tests across Python 3.10, 3.11, and 3.12
- **Code Quality**: Checks formatting (Black), linting (Flake8), type hints (MyPy), and import sorting (isort)
- **Security**: Scans dependencies with Safety and code with Bandit
- **Template Testing**: Validates that generated projects work correctly
- **Docker**: Builds multi-platform Docker images
- **Publishing**: Automatically publishes to PyPI on releases

The pipeline runs on:
- Every push to `main` and `develop` branches
- Every pull request to `main`
- Every release

### Docker Support

Build and run the project in Docker:

```bash
# Build the image
docker build -t egile-mcp-starter .

# Run interactively
docker run -it --rm -v $(pwd)/output:/app/output egile-mcp-starter

# Generate a project
docker run -it --rm -v $(pwd)/output:/app/output egile-mcp-starter \
  --output-dir /app/output --no-input
```

## Roadmap

- [ ] Additional server templates (database, API gateway, etc.)
- [ ] Integration with more MCP client libraries
- [ ] Advanced monitoring and observability features
- [ ] Plugin system for extensibility
- [ ] GUI-based project generator

## Requirements

- Python 3.10+
- cookiecutter
- Git (for project initialization)

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

- ๐Ÿ“ง **Email**: jpoullet2000@gmail.com
- ๐Ÿ› **Issues**: [GitHub Issues](https://github.com/jpoullet2000/egile-mcp-starter/issues)
- ๐Ÿ“– **MCP Documentation**: [Model Context Protocol](https://modelcontextprotocol.io/)
- ๐Ÿš€ **FASTMCP**: [FASTMCP Framework](https://github.com/jlowin/fastmcp)

## Acknowledgments

- [FASTMCP](https://github.com/jlowin/fastmcp) - The amazing framework that powers the generated servers
- [Model Context Protocol](https://modelcontextprotocol.io/) - The protocol specification
- [Cookiecutter](https://cookiecutter.readthedocs.io/) - The templating engine

---

Built with โค๏ธ to accelerate MCP server development

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jpoullet2000/egile-mcp-starter",
    "name": "egile-mcp-starter",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "mcp, model-context-protocol, fastmcp, cookiecutter, template, ai, assistant",
    "author": "Jean-Baptiste Poullet",
    "author_email": "egile@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4e/83/b221cb25c1c42000f7eb0df7a459368c3a22bdb66d5adb7ed77ff2d38d68/egile_mcp_starter-0.1.0.tar.gz",
    "platform": null,
    "description": "# egile-mcp-starter\n\n[![PyPI - Version](https://img.shields.io/pypi/v/egile-mcp-starter.svg)](https://pypi.org/project/egile-mcp-starter)\n[![Tests](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml/badge.svg)](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml)\n[![Python Versions](https://img.shields.io/pypi/pyversions/egile-mcp-starter.svg)](https://pypi.org/project/egile-mcp-starter)\n[![License](https://img.shields.io/github/license/jpoullet2000/egile-mcp-starter.svg?v=2)](https://github.com/jpoullet2000/egile-mcp-starter/blob/main/LICENSE)\n[![Docker](https://img.shields.io/docker/automated/jpoullet2000/egile-mcp-starter.svg)](https://hub.docker.com/r/jpoullet2000/egile-mcp-starter)\n[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![FastMCP](https://img.shields.io/badge/built%20with-FastMCP-green.svg)](https://github.com/jlowin/fastmcp)\n[![MCP](https://img.shields.io/badge/protocol-MCP-orange.svg)](https://modelcontextprotocol.io/)\n\nA comprehensive cookiecutter template for creating Model Context Protocol (MCP) servers using the FASTMCP framework.\n\n## Features\n\n- \ud83d\ude80 **Modern Python Setup**: Uses Poetry for dependency management and packaging\n- \ud83c\udfd7\ufe0f **FASTMCP Framework**: Built on the efficient FASTMCP framework for MCP servers\n- \ud83d\udee0\ufe0f **Flexible Server Types**: Choose from tools, resources, prompts, or full-featured servers\n- \ud83e\uddea **Testing Ready**: Comprehensive test suite with pytest and coverage\n- \ud83d\udd27 **Development Tools**: Pre-configured with Black, Flake8, MyPy, and pre-commit hooks\n- \ud83d\udc33 **Docker Support**: Optional Docker configuration for easy deployment\n- \ud83d\udd04 **CI/CD Ready**: GitHub Actions workflows for automated testing and deployment\n- \ud83d\udcda **Rich Documentation**: Detailed README and code documentation\n- \ud83c\udf9b\ufe0f **Configurable**: YAML-based configuration with environment variable support\n\n## Quick Start\n\n### Installation\n\n```bash\n# Install with Poetry (recommended)\npip install egile-mcp-starter\n\n# Or install from source\ngit clone https://github.com/jpoullet2000/egile-mcp-starter.git\ncd egile-mcp-starter\npoetry install\n```\n\n### Generate a New MCP Server\n\n```bash\n# Using the installed command\negile-mcp-starter\n\n# Or if installed from source\npoetry run egile-mcp-starter\n\n# With options\negile-mcp-starter --output-dir ./my-projects --verbose\n```\n\n### Available Server Types\n\nWhen generating a project, you can choose from:\n\n- **tools**: Server with tool implementations for AI interactions\n- **resources**: Server with resource management for data access  \n- **prompts**: Server with prompt templates for AI guidance\n- **full**: Complete server with all capabilities (tools, resources, and prompts)\n\n## Generated Project Structure\n\nThe generated project will have this structure:\n\n```\nmy-mcp-server/\n\u251c\u2500\u2500 src/\n\u2502   \u251c\u2500\u2500 my_mcp_server/\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 server.py          # Main MCP server implementation\n\u2502   \u2502   \u251c\u2500\u2500 config.py          # Configuration management\n\u2502   \u2502   \u251c\u2500\u2500 tools/             # Tool implementations (if enabled)\n\u2502   \u2502   \u251c\u2500\u2500 resources/         # Resource handlers (if enabled)\n\u2502   \u2502   \u251c\u2500\u2500 prompts/           # Prompt templates (if enabled)\n\u2502   \u2502   \u2514\u2500\u2500 utils.py           # Utility functions\n\u2502   \u2514\u2500\u2500 main.py                # Entry point\n\u251c\u2500\u2500 tests/                     # Comprehensive test suite\n\u251c\u2500\u2500 pyproject.toml            # Poetry configuration\n\u251c\u2500\u2500 README.md                 # Project documentation\n\u251c\u2500\u2500 Dockerfile               # Docker configuration (optional)\n\u2514\u2500\u2500 .github/workflows/       # CI/CD workflows (optional)\n```\n\n## Development\n\n### Setting up Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/jpoullet2000/egile-mcp-starter.git\ncd egile-mcp-starter\n\n# Install dependencies\npoetry install --with dev\n\n# Install pre-commit hooks\npoetry run pre-commit install\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npoetry run pytest\n\n# Run with coverage\npoetry run pytest --cov=egile_mcp_starter --cov-report=html\n\n# Run specific tests\npoetry run pytest tests/test_generator.py -v\n```\n\n### Code Quality\n\n```bash\n# Format code\npoetry run black .\n\n# Check linting\npoetry run flake8 egile_mcp_starter tests\n\n# Type checking\npoetry run mypy egile_mcp_starter\n\n# Run all pre-commit checks\npoetry run pre-commit run --all-files\n```\n\n## Configuration Options\n\nThe cookiecutter template supports these configuration options:\n\n| Option | Description | Choices |\n|--------|-------------|---------|\n| `project_name` | Display name for your project | String |\n| `project_slug` | Python package name | Auto-generated |\n| `project_description` | Project description | String |\n| `author_name` | Your name | String |\n| `author_email` | Your email | String |\n| `github_username` | Your GitHub username | String |\n| `version` | Initial version | String (default: 0.1.0) |\n| `python_version` | Python version | 3.10, 3.11, 3.12 |\n| `use_docker` | Include Docker support | y/n |\n| `use_github_actions` | Include CI/CD workflows | y/n |\n| `use_pre_commit` | Include pre-commit hooks | y/n |\n| `license` | Project license | MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, None |\n| `include_examples` | Include example implementations | y/n |\n| `server_type` | Type of MCP server | tools, resources, prompts, full |\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Run tests (`poetry run pytest`)\n5. Run code quality checks (`poetry run pre-commit run --all-files`)\n6. Commit your changes (`git commit -m 'Add amazing feature'`)\n7. Push to the branch (`git push origin feature/amazing-feature`)\n8. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- \ud83d\udce7 Email: jpoullet2000@gmail.com\n- \ud83d\udc1b Issues: [GitHub Issues](https://github.com/jpoullet2000/egile-mcp-starter/issues)\n- \ud83d\udcd6 MCP Documentation: [Model Context Protocol](https://modelcontextprotocol.io/)\n- \ud83d\ude80 FASTMCP: [FASTMCP Framework](https://github.com/jlowin/fastmcp)\n\n---\n\nBuilt with \u2764\ufe0f using [FASTMCP](https://github.com/jlowin/fastmcp) and the [Model Context Protocol](https://modelcontextprotocol.io/)\n\n## Overview\n\nThe Model Context Protocol (MCP) is a standardized protocol for communication between AI systems and external tools/data sources. This template provides a complete foundation for building MCP servers with:\n\n- \ud83d\udee0\ufe0f **Tool Support** - Implement custom tools that AI can call\n- \ud83d\udcda **Resource Support** - Provide data and information access\n- \ud83d\udcac **Prompt Support** - Create reusable prompt templates\n- \ud83e\uddea **Testing Framework** - Comprehensive test coverage\n- \ud83d\udd27 **Development Tools** - Linting, formatting, type checking\n- \ud83d\udc33 **Docker Support** - Container deployment ready\n- \ud83d\udd04 **CI/CD Pipeline** - GitHub Actions integration\n- \ud83d\udccb **Type Safety** - Full type annotations throughout\n\n## Features\n\n### \ud83c\udfaf **Template Options**\n\n- **Server Types**: Choose from tools, resources, prompts, or full MCP server\n- **Python Versions**: Support for Python 3.10-3.12\n- **Docker Integration**: Optional Docker and docker-compose setup\n- **CI/CD Ready**: GitHub Actions workflow included\n- **Development Tools**: Pre-commit hooks, linting, testing\n- **Documentation**: Auto-generated README and examples\n\n### \ud83d\udee0\ufe0f **Built-in Capabilities**\n\n- **Configuration Management**: YAML-based config with environment variable override\n- **Logging**: Structured logging with configurable levels\n- **Error Handling**: Comprehensive error handling and validation\n- **Type Safety**: Full type annotations with mypy checking\n- **Testing**: pytest-based testing with coverage reporting\n- **Security**: Built-in security scanning and best practices\n\n## Quick Start\n\n### Installation\n\n```bash\n# Install the package\npip install egile-mcp-starter\n\n# Or install from source\ngit clone https://github.com/jpoullet2000/egile-mcp-starter.git\ncd egile-mcp-starter\npip install -e .\n```\n\n### Generate a New MCP Server\n\n```bash\n# Use the CLI tool\negile-mcp-starter\n\n# Or use cookiecutter directly\ncookiecutter https://github.com/jpoullet2000/egile-mcp-starter.git\n```\n\n### Interactive Configuration\n\nThe template will prompt you for:\n\n- **Project name and description**\n- **Author information**\n- **Server type** (tools, resources, prompts, or full)\n- **Python version** (3.10-3.12)\n- **Optional features** (Docker, GitHub Actions, pre-commit)\n- **License choice** (MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, or None)\n\n### Example Usage\n\n```bash\n$ egile-mcp-starter\nproject_name [My MCP Server]: Weather MCP Server\nproject_description [A Model Context Protocol server built with FASTMCP]: Weather data MCP server with forecast tools\nauthor_name [Your Name]: John Doe\nauthor_email [your.email@example.com]: john@example.com\nserver_type [full]: tools\npython_version [3.11]: 3.11\nuse_docker [y]: y\nuse_github_actions [y]: y\ninclude_examples [y]: y\n\n\u2705 MCP server project generated successfully at: ./weather_mcp_server\n```\n\n## Generated Project Structure\n\n```\nmy_mcp_server/\n\u251c\u2500\u2500 src/\n\u2502   \u251c\u2500\u2500 my_mcp_server/\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 server.py          # Main MCP server\n\u2502   \u2502   \u251c\u2500\u2500 config.py          # Configuration management\n\u2502   \u2502   \u251c\u2500\u2500 tools/             # Tool implementations\n\u2502   \u2502   \u251c\u2500\u2500 resources/         # Resource handlers\n\u2502   \u2502   \u251c\u2500\u2500 prompts/           # Prompt templates\n\u2502   \u2502   \u2514\u2500\u2500 utils.py           # Utility functions\n\u2502   \u2514\u2500\u2500 main.py                # Entry point\n\u251c\u2500\u2500 tests/                     # Test suite\n\u251c\u2500\u2500 Dockerfile                 # Docker configuration\n\u251c\u2500\u2500 docker-compose.yml         # Docker Compose setup\n\u251c\u2500\u2500 .github/workflows/ci.yml   # GitHub Actions CI/CD\n\u251c\u2500\u2500 .pre-commit-config.yaml    # Pre-commit hooks\n\u251c\u2500\u2500 pyproject.toml             # Project configuration\n\u251c\u2500\u2500 poetry.lock                # Locked dependencies\n\u2514\u2500\u2500 README.md                  # Project documentation\n```\n\n## Development Workflow\n\n### 1. Generate Your Project\n\n```bash\negile-mcp-starter\ncd your-project-name\n```\n\n### 2. Set Up Development Environment\n\n```bash\n# Install dependencies\npip install -e \".[dev]\"\n\n# Set up pre-commit hooks (if enabled)\npre-commit install\n```\n\n### 3. Customize Your Server\n\n- **Add Tools**: Implement in `src/your_project/tools/`\n- **Add Resources**: Implement in `src/your_project/resources/`\n- **Add Prompts**: Implement in `src/your_project/prompts/`\n- **Configure**: Edit `config.example.yaml`\n\n### 4. Test and Deploy\n\n```bash\n# Run tests\npytest\n\n# Run with Docker\ndocker-compose up\n\n# Deploy\ngit push origin main  # Triggers CI/CD\n```\n\n## Example Server Types\n\n### \ud83d\udee0\ufe0f Tools Server\n\n```python\n@server.tool(\"weather_forecast\")\nasync def get_weather(location: str, days: int = 5) -> dict:\n    \"\"\"Get weather forecast for a location.\"\"\"\n    # Your implementation here\n    return {\"location\": location, \"forecast\": [...]}\n```\n\n### \ud83d\udcda Resources Server\n\n```python\n@server.resource(\"weather://current\")\nasync def current_weather() -> str:\n    \"\"\"Provide current weather data.\"\"\"\n    # Your implementation here\n    return json.dumps(weather_data)\n```\n\n### \ud83d\udcac Prompts Server\n\n```python\n@server.prompt(\"weather_analysis\")\nasync def weather_analysis_prompt(data: str) -> str:\n    \"\"\"Generate weather analysis prompt.\"\"\"\n    return f\"\"\"Analyze this weather data and provide insights:\n    \n{data}\n\nPlease provide:\n1. Current conditions summary\n2. Notable weather patterns\n3. Recommendations for activities\n\"\"\"\n```\n\n## Configuration Options\n\nThe generated project includes extensive configuration options:\n\n```yaml\n# Server settings\nhost: localhost\nport: 8000\nlog_level: INFO\n\n# Feature toggles\nenable_tools: true\nenable_resources: true\nenable_prompts: true\n\n# Custom settings\ncustom_settings:\n  debug_mode: false\n  max_concurrent_requests: 10\n  # Add your custom options here\n```\n\n## CLI Usage\n\n```bash\n# Generate with defaults\negile-mcp-starter --no-input\n\n# Use custom config file\negile-mcp-starter --config-file my-config.yaml\n\n# Specify output directory\negile-mcp-starter --output-dir ./projects/\n\n# Verbose output\negile-mcp-starter --verbose\n```\n\n## Integration with Claude Desktop\n\nAdd your generated server to Claude Desktop configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"your-server-name\": {\n      \"command\": \"python\",\n      \"args\": [\"/path/to/your-project/src/main.py\"],\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Run tests (`poetry run pytest`)\n5. Run code quality checks (`poetry run black . && poetry run flake8 . && poetry run mypy egile_mcp_starter`)\n6. Commit your changes (`git commit -m 'Add amazing feature'`)\n7. Push to the branch (`git push origin feature/amazing-feature`)\n8. Open a Pull Request\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/jpoullet2000/egile-mcp-starter.git\ncd egile-mcp-starter\n\n# Install with Poetry\npoetry install\n\n# Install pre-commit hooks\npoetry run pre-commit install\n\n# Run tests\npoetry run pytest\n\n# Run all quality checks\npoetry run black .\npoetry run flake8 .\npoetry run mypy egile_mcp_starter\npoetry run pytest --cov=egile_mcp_starter\n```\n\n### CI/CD Pipeline\n\nThe project includes a comprehensive CI/CD pipeline with GitHub Actions that:\n\n- **Testing**: Runs tests across Python 3.10, 3.11, and 3.12\n- **Code Quality**: Checks formatting (Black), linting (Flake8), type hints (MyPy), and import sorting (isort)\n- **Security**: Scans dependencies with Safety and code with Bandit\n- **Template Testing**: Validates that generated projects work correctly\n- **Docker**: Builds multi-platform Docker images\n- **Publishing**: Automatically publishes to PyPI on releases\n\nThe pipeline runs on:\n- Every push to `main` and `develop` branches\n- Every pull request to `main`\n- Every release\n\n### Docker Support\n\nBuild and run the project in Docker:\n\n```bash\n# Build the image\ndocker build -t egile-mcp-starter .\n\n# Run interactively\ndocker run -it --rm -v $(pwd)/output:/app/output egile-mcp-starter\n\n# Generate a project\ndocker run -it --rm -v $(pwd)/output:/app/output egile-mcp-starter \\\n  --output-dir /app/output --no-input\n```\n\n## Roadmap\n\n- [ ] Additional server templates (database, API gateway, etc.)\n- [ ] Integration with more MCP client libraries\n- [ ] Advanced monitoring and observability features\n- [ ] Plugin system for extensibility\n- [ ] GUI-based project generator\n\n## Requirements\n\n- Python 3.10+\n- cookiecutter\n- Git (for project initialization)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- \ud83d\udce7 **Email**: jpoullet2000@gmail.com\n- \ud83d\udc1b **Issues**: [GitHub Issues](https://github.com/jpoullet2000/egile-mcp-starter/issues)\n- \ud83d\udcd6 **MCP Documentation**: [Model Context Protocol](https://modelcontextprotocol.io/)\n- \ud83d\ude80 **FASTMCP**: [FASTMCP Framework](https://github.com/jlowin/fastmcp)\n\n## Acknowledgments\n\n- [FASTMCP](https://github.com/jlowin/fastmcp) - The amazing framework that powers the generated servers\n- [Model Context Protocol](https://modelcontextprotocol.io/) - The protocol specification\n- [Cookiecutter](https://cookiecutter.readthedocs.io/) - The templating engine\n\n---\n\nBuilt with \u2764\ufe0f to accelerate MCP server development\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A comprehensive cookiecutter template for creating Model Context Protocol (MCP) servers using the FASTMCP framework",
    "version": "0.1.0",
    "project_urls": {
        "Documentation": "https://github.com/jpoullet2000/egile-mcp-starter",
        "Homepage": "https://github.com/jpoullet2000/egile-mcp-starter",
        "Repository": "https://github.com/jpoullet2000/egile-mcp-starter"
    },
    "split_keywords": [
        "mcp",
        " model-context-protocol",
        " fastmcp",
        " cookiecutter",
        " template",
        " ai",
        " assistant"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "09957347260e349c19161c1811293fae813c61e7f7a669780f62cc01e2bd4e9e",
                "md5": "ac21f08e2a9552f0f44905d4a9eb8b3b",
                "sha256": "11883cb6d1b9b7777d865d899304548b7d40030b4f11cc49428b47e7880be3c2"
            },
            "downloads": -1,
            "filename": "egile_mcp_starter-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ac21f08e2a9552f0f44905d4a9eb8b3b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 45256,
            "upload_time": "2025-07-28T19:47:53",
            "upload_time_iso_8601": "2025-07-28T19:47:53.416145Z",
            "url": "https://files.pythonhosted.org/packages/09/95/7347260e349c19161c1811293fae813c61e7f7a669780f62cc01e2bd4e9e/egile_mcp_starter-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e83b221cb25c1c42000f7eb0df7a459368c3a22bdb66d5adb7ed77ff2d38d68",
                "md5": "a93315a89f2215f3baf7e7444163606e",
                "sha256": "12f3ff14d5bdefcc1d24d99d7ba2b16b502a89ca3b367484504d5b9debd13099"
            },
            "downloads": -1,
            "filename": "egile_mcp_starter-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a93315a89f2215f3baf7e7444163606e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 35441,
            "upload_time": "2025-07-28T19:47:54",
            "upload_time_iso_8601": "2025-07-28T19:47:54.526879Z",
            "url": "https://files.pythonhosted.org/packages/4e/83/b221cb25c1c42000f7eb0df7a459368c3a22bdb66d5adb7ed77ff2d38d68/egile_mcp_starter-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-28 19:47:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jpoullet2000",
    "github_project": "egile-mcp-starter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "egile-mcp-starter"
}
        
Elapsed time: 2.27882s