# egile-mcp-starter
[](https://pypi.org/project/egile-mcp-starter)
[](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml)
[](https://pypi.org/project/egile-mcp-starter)
[](https://github.com/jpoullet2000/egile-mcp-starter/blob/main/LICENSE)
[](https://hub.docker.com/r/jpoullet2000/egile-mcp-starter)
[](https://github.com/psf/black)
[](https://github.com/jlowin/fastmcp)
[](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[](https://pypi.org/project/egile-mcp-starter)\n[](https://github.com/jpoullet2000/egile-mcp-starter/actions/workflows/ci.yml)\n[](https://pypi.org/project/egile-mcp-starter)\n[](https://github.com/jpoullet2000/egile-mcp-starter/blob/main/LICENSE)\n[](https://hub.docker.com/r/jpoullet2000/egile-mcp-starter)\n[](https://github.com/psf/black)\n[](https://github.com/jlowin/fastmcp)\n[](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"
}