Skip to main content
Glama
nykznykz
by nykznykz

MCP Server with FastMCP v2.0

A Model Control Protocol (MCP) server implementation using FastMCP v2.0, featuring Docker containerization, comprehensive testing, and CI/CD automation.

Features

  • πŸš€ Built with FastMCP v2.0

  • 🐳 Docker containerization with multi-stage builds

  • πŸ“¦ Modern Python packaging with uv

  • πŸ§ͺ Comprehensive test suite with pytest

  • πŸ”„ GitHub Actions CI/CD pipeline

  • πŸ›‘οΈ Security scanning and dependency management

  • πŸ“Š Code coverage reporting

  • πŸ”§ Automated code formatting and linting

Related MCP server: FastMCP Boilerplate

Quick Start

Prerequisites

  • Python 3.10+

  • uv for dependency management

  • Docker (optional, for containerization)

Installation

  1. Clone the repository:

git clone <repository-url> cd nikolas-mcp
  1. Install dependencies using uv:

uv sync
  1. Run the server:

uv run python -m mcp_server.main

Using Docker

  1. Build the Docker image:

docker build -t mcp-server .
  1. Run the container:

docker run -p 8000:8000 mcp-server
  1. Or use docker-compose:

docker-compose up

Available Tools

The MCP server provides the following tools:

calculate

Evaluates mathematical expressions safely.

Parameters:

  • expression (string): Mathematical expression to evaluate

Example:

{ "tool": "calculate", "arguments": { "expression": "2 + 3 * 4" } }

greet

Generates friendly greeting messages.

Parameters:

  • name (string): Name of the person to greet

Example:

{ "tool": "greet", "arguments": { "name": "World" } }

Resources

  • config://settings - Server configuration settings

  • info://server - General server information

Prompts

  • help - Display help information about available capabilities

Development

Setup Development Environment

# Install development dependencies uv sync --dev # Install pre-commit hooks uv run pre-commit install

Running Tests

# Run all tests uv run pytest # Run tests with coverage uv run pytest --cov=src --cov-report=html # Run specific test file uv run pytest tests/test_main.py -v

Code Quality

# Format code uv run ruff format . # Lint code uv run ruff check . # Type checking uv run mypy src/

Project Structure

nikolas-mcp/ β”œβ”€β”€ src/ β”‚ └── mcp_server/ β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ main.py # Main server implementation β”‚ └── server.py # Server utilities and config β”œβ”€β”€ tests/ β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ conftest.py # Pytest configuration β”‚ β”œβ”€β”€ test_main.py # Main functionality tests β”‚ β”œβ”€β”€ test_server.py # Server utilities tests β”‚ └── test_integration.py # Integration tests β”œβ”€β”€ .github/ β”‚ └── workflows/ β”‚ β”œβ”€β”€ ci.yml # CI/CD pipeline β”‚ └── dependabot.yml # Dependabot auto-merge β”œβ”€β”€ Dockerfile β”œβ”€β”€ docker-compose.yml β”œβ”€β”€ pyproject.toml # Project configuration └── README.md

CI/CD Pipeline

The project includes a comprehensive GitHub Actions pipeline:

  • Lint and Format: Runs ruff for code formatting and linting

  • Test Suite: Runs tests across multiple Python versions and OS platforms

  • Security Scan: Performs security vulnerability scanning

  • Docker Build: Builds and tests Docker images

  • Auto-publish: Publishes to PyPI and Docker Hub on release

Required Secrets

For full CI/CD functionality, configure these GitHub secrets:

  • PYPI_API_TOKEN - PyPI authentication token

  • DOCKERHUB_USERNAME - Docker Hub username

  • DOCKERHUB_TOKEN - Docker Hub access token

Configuration

Environment Variables

  • LOG_LEVEL - Logging level (default: INFO)

  • PYTHONPATH - Python path for module resolution

Server Configuration

The server can be configured via the ServerConfig class in src/mcp_server/server.py:

config = ServerConfig() config.max_connections = 200 config.timeout = 60

Docker Configuration

Multi-stage Build

The Dockerfile uses multi-stage builds for optimized image size:

  1. Base stage: Sets up Python and system dependencies

  2. Dependencies stage: Installs Python packages with uv

  3. Runtime stage: Copies application code and runs the server

Health Checks

The container includes health checks to ensure the server is running correctly.

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Run tests and ensure they pass

  5. Commit your changes (git commit -m 'Add amazing feature')

  6. Push to the branch (git push origin feature/amazing-feature)

  7. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you encounter any issues or have questions:

  1. Check the Issues page for existing problems

  2. Create a new issue with detailed information

  3. Refer to the FastMCP documentation for FastMCP-specific questions

One-click Deploy
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nykznykz/mcp_example'

If you have feedback or need assistance with the MCP directory API, please join our Discord server