MCP Server
by Protagonistss
MCP Server is a server implementation based on the Model-Controller-Provider architecture using FastAPI. It provides a structured approach to building REST APIs with features like automatic documentation, request validation, and response serialization.
Last updated: N/A
MCP Server
A Model-Controller-Provider (MCP) architecture based server implementation using FastAPI.
Project Structure
.
├── api/ # API routes and endpoints
│ └── v1/ # API version 1
│ ├── __init__.py
│ └── items.py # Item endpoints
├── controllers/ # Business logic and request handlers
│ └── item_controller.py
├── providers/ # Data access and external service integrations
│ └── item_provider.py
├── models/ # Data models and database schemas
│ └── item.py
├── core/ # Core configurations and utilities
│ ├── config.py # Application configuration
│ └── database.py # Database configuration
├── main.py # Application entry point
├── requirements.txt # Project dependencies
├── environment.yml # Conda environment file
└── README.md # Project documentation
Features
- FastAPI-based REST API: High-performance, easy to use, fast to code
- MCP Architecture:
- Models: Data structures and database schemas
- Controllers: Business logic and request handling
- Providers: Data access and external service integration
- Modern Tech Stack:
- SQLAlchemy for ORM
- Pydantic for data validation
- FastAPI for API framework
- SQLite for development database
- API Features:
- Automatic OpenAPI documentation
- Request validation
- Response serialization
- CORS middleware
- Type checking
Setup
- Create a Conda environment:
# Create a new environment with Python 3.12
conda create -n codeMcpServer python=3.12
# Activate the environment
conda activate codeMcpServer
- Install dependencies:
# Using the provided environment file (recommended)
conda env create -f environment.yml
# OR using pip
pip install -r requirements.txt
# OR using conda with conda-forge channel
conda config --add channels conda-forge
conda install --file requirements.txt
- Run the server:
uvicorn main:app --reload
The server will start at http://localhost:8000
Dependencies
Key dependencies in this project:
- Python 3.12.9
- FastAPI 0.112.2
- SQLAlchemy 2.0.37
- Pydantic 2.11.2
- Uvicorn 0.32.1
- Python-dotenv 0.21.0
For a complete list, see environment.yml
or requirements.txt
.
Environment Management
Export Environment
To export your environment for sharing:
# Export full environment with exact versions (without prefix)
conda env export | grep -v "^prefix: " > environment.yml
# Or export only manually installed packages
conda env export --from-history > environment.yml
Import Environment
To recreate an environment from the exported file:
conda env create -f environment.yml
API Documentation
Once the server is running, you can access:
- Interactive API documentation (Swagger UI):
http://localhost:8000/docs
- Alternative API documentation (ReDoc):
http://localhost:8000/redoc
API Endpoints
Items API (/api/v1/items
)
GET /api/v1/items/
: List all itemsGET /api/v1/items/{item_id}
: Get a specific itemPOST /api/v1/items/
: Create a new itemPUT /api/v1/items/{item_id}
: Update an itemDELETE /api/v1/items/{item_id}
: Delete an item
Development
Project Organization
The project follows the MCP (Model-Controller-Provider) pattern:
- Models: Define data structures and database schemas
- Controllers: Handle business logic and request processing
- Providers: Manage data access and external service integration
Adding New Features
- Create the model in
models/
- Create the provider in
providers/
- Create the controller in
controllers/
- Create the API endpoints in
api/v1/
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
This project is licensed under the terms of the LICENSE file included in the repository.