README.md•3.31 kB
# 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