Skip to main content
Glama
jairosoft-com

My MCP Server

README.md
# My MCP Server

My MCP Server is a Python template for building a Model Context Protocol (MCP) server. It uses FastMCP to expose tools via JSON-RPC over stdio (and can be extended to HTTP), enabling secure and scalable context and tool invocation for language models.

## Project Structure

├── src/                   Source code (package: `my_mcp_server`)
│   ├── server.py          Entry point and tool registrations
│   ├── __main__.py        Console script entry
│   ├── config/            Configuration modules
│   ├── context/           Context providers for MCP
│   ├── models/            Pydantic models and schemas
│   ├── tools/             Custom tool implementations
│   └── utils/             Helper utilities
├── tests/                 Unit, integration, and performance tests
├── Taskfile.yaml          Common development and CI tasks
├── pyproject.toml         Project metadata and build configuration
├── requirements.txt       Runtime dependencies
└── docs/                  Contribution & architecture guides

## Prerequisites

- Python >=3.13
- Git
- (Optional) [Taskfile](https://taskfile.dev/) task runner

## Setup

### Create and activate virtual environment
task create-venv
source .venv/bin/activate

### Install runtime dependencies
task install-requirements

### (Optional) Install development dependencies
task install-dev

## Taskfile Tasks

Run `task --list` to see all available tasks. Common tasks include:

- default: List available tasks
- create-venv: Create a Python virtual environment in `.venv`
- activate-venv: Show activation commands for the venv
- clean-venv: Remove the `.venv` directory
- install-requirements: Install runtime dependencies (`pip install -r requirements.txt`)
- install-dev: Install the project in editable mode with dev dependencies (`pip install -e ".[dev]"`)
- flake8: Run `flake8` over `src/` and `tests/`
- mypy: Run `mypy` over `src/` and `tests/`
- black: Format code with `black`
- format: Alias for `black` (formats all Python files)
- lint: Run both `flake8` and `mypy`
- test: Run all tests (unit, integration, performance) with `pytest`
- test-unit: Run unit tests only
- test-integration: Run integration tests only
- test-performance: Run performance tests only
- coverage: Generate coverage report (HTML + terminal) with `pytest-cov`
- check: Run `format`, `lint`, and `test` sequentially
- run: Start the console-based MCP server (`python -m my_mcp_server`)
- dev: Alias for `run` (start server in development mode)
- clean: Clean Python build artifacts and caches
- build: Build distribution packages (sdist & wheel) using Hatchling

## Development & Usage

After setup, you can start the server in stdio mode:

```bash
task run
```

Or directly:

```bash
python -m my_mcp_server
```

## Testing & Linting

- Run all tests: `task test`
- Run linters: `task lint`
- Format code: `task format`

## Build & Release

- Build distributions: `task build`
- Upload to PyPI: `twine upload dist/*`

## Configuration

Environment variables can be managed via a `.env` file (loaded by `python-dotenv`/`pydantic-settings`).

## Contributing

See `docs/CONTRIBUTING.md` for guidelines on contributing and architecture details.

## License

MIT License