FastAPI MCP Server
by Pritrj
README.md
# MCP Server
एक production-ready Model Context Protocol (MCP) server जो FastAPI framework का उपयोग करके बनाई गई है।
## विशेषताएं (Features)
- 🚀 **FastAPI Framework**: High-performance async API server
- 🔒 **Security**: JWT authentication और secure coding practices
- 🗄️ **Database**: PostgreSQL के साथ asyncpg
- 📦 **Caching**: Redis integration
- 🐳 **Docker Ready**: Production-ready containerization
- 📊 **Health Checks**: Built-in health monitoring
- 🔧 **Development Ready**: Comprehensive testing और development tools
## आवश्यकताएं (Requirements)
- Python 3.11+
- PostgreSQL 13+
- Redis 6+
- Docker (optional)
## इंस्टॉलेशन (Installation)
### 1. Repository Clone करें
```bash
git clone <repository-url>
cd mcp-server
```
### 2. Virtual Environment बनाएं
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# या
venv\\Scripts\\activate # Windows
```
### 3. Dependencies Install करें
```bash
pip install -r requirements.txt
```
### 4. Environment Variables सेट करें
`.env` file बनाएं:
```env
# Database
DATABASE_URL=postgresql://username:password@localhost:5432/mcp_db
# Redis
REDIS_URL=redis://localhost:6379/0
# Security
SECRET_KEY=your-secret-key-here
JWT_ALGORITHM=HS256
JWT_EXPIRE_MINUTES=30
# Server
HOST=0.0.0.0
PORT=8000
DEBUG=false
```
## Usage
### Development Mode
```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
### Production Mode
```bash
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
```
### Docker के साथ
```bash
# Build करें
docker build -t mcp-server .
# Run करें
docker run -p 8000:8000 --env-file .env mcp-server
```
## API Documentation
### Base URL
```
http://localhost:8000
```
### Interactive Documentation
- **Swagger UI**: http://localhost:8000/docs
- **ReDoc**: http://localhost:8000/redoc
### Main Endpoints
#### Health Check
```http
GET /health
```
Server की health status check करता है।
#### API Endpoints
```http
GET /api/v1/status
POST /api/v1/connect
GET /api/v1/tools
POST /api/v1/tools/{tool_name}/call
```
## Development
### Code Quality
```bash
# Format code
black .
# Sort imports
isort .
# Lint code
flake8 .
# Type checking
mypy .
```
### Testing
```bash
# सभी tests run करें
pytest
# Coverage के साथ
pytest --cov=src tests/
# Specific test file
pytest tests/test_main.py
```
## Project Structure
```
mcp-server/
├── src/ # Source code
│ ├── main.py # FastAPI application
│ ├── models/ # Pydantic models
│ ├── routes/ # API routes
│ ├── services/ # Business logic
│ ├── database/ # Database configuration
│ └── utils/ # Utility functions
├── tests/ # Test files
├── requirements.txt # Python dependencies
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose (optional)
├── .env.example # Environment variables template
├── .gitignore # Git ignore patterns
├── .dockerignore # Docker ignore patterns
└── README.md # This file
```
## Configuration
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `DATABASE_URL` | PostgreSQL connection URL | Required |
| `REDIS_URL` | Redis connection URL | redis://localhost:6379/0 |
| `SECRET_KEY` | JWT secret key | Required |
| `JWT_ALGORITHM` | JWT algorithm | HS256 |
| `JWT_EXPIRE_MINUTES` | JWT expiration time | 30 |
| `HOST` | Server host | 0.0.0.0 |
| `PORT` | Server port | 8000 |
| `DEBUG` | Debug mode | false |
### Database Setup
```sql
-- PostgreSQL database बनाएं
CREATE DATABASE mcp_db;
-- User बनाएं (optional)
CREATE USER mcp_user WITH PASSWORD 'secure_password';
GRANT ALL PRIVILEGES ON DATABASE mcp_db TO mcp_user;
```
### Redis Setup
```bash
# Redis start करें
redis-server
# या Docker के साथ
docker run -d -p 6379:6379 redis:alpine
```
## Security Features
- JWT-based authentication
- Password hashing with bcrypt
- CORS protection
- Rate limiting
- Input validation
- SQL injection protection
- XSS protection
## Monitoring
### Health Checks
```bash
# Server health check
curl http://localhost:8000/health
# Database connection check
curl http://localhost:8000/health/db
# Redis connection check
curl http://localhost:8000/health/redis
```
### Logging
Logs `/logs/` directory में store होते हैं। Production में proper logging configuration set करें।
## Deployment
### Docker Deployment
```bash
# Production image build करें
docker build -t mcp-server:latest .
# Docker Compose के साथ
docker-compose up -d
```
### Manual Deployment
```bash
# Gunicorn के साथ
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
```
## Contributing
1. Fork करें
2. Feature branch बनाएं (`git checkout -b feature/amazing-feature`)
3. Commit करें (`git commit -m 'Add amazing feature'`)
4. Push करें (`git push origin feature/amazing-feature`)
5. Pull Request open करें
## License
यह project MIT license के under है।
## Support
समस्याओं के लिए GitHub Issues create करें या documentation पढ़ें।
## Changelog
### v1.0.0
- Initial release
- FastAPI integration
- JWT authentication
- Redis caching
- Docker support
- Comprehensive documentation