MCP Python Server
README.md
# ๐ MCP Server & Database Integration using Python
A Python-based **Model Context Protocol (MCP)** server built using **FastMCP** that exposes database operations as MCP tools. The project integrates a local SQLite database and demonstrates how AI clients such as **Claude Desktop** and a custom **Python client** can interact with backend services through MCP.
---
## ๐ Project Overview
This project was developed as part of my internship to understand and implement the **Model Context Protocol (MCP)**.
The server exposes database operations through MCP tools, allowing AI applications and clients to interact with a structured SQLite database.
The project demonstrates:
- Building an MCP server using FastMCP
- Integrating a SQLite database with multiple tables
- Exposing database operations as MCP tools
- Connecting through a Python client
- Integrating with Claude Desktop
- Automated testing using pytest
---
## โจ Features
- โ
Python-based MCP Server using FastMCP
- โ
SQLite Database Integration
- โ
Users, Products and Orders Database
- โ
CRUD Operations
- โ
Search Functionality
- โ
Parameterized SQL Queries
- โ
Structured JSON Responses
- โ
Logging
- โ
Python MCP Client
- โ
Claude Desktop Integration
- โ
Automated Testing using pytest
---
## ๐ Tech Stack
| Technology | Purpose |
| -------------- | ----------------------- |
| Python 3.13 | Programming Language |
| FastMCP | MCP Server Framework |
| SQLite | Local Database |
| pytest | Automated Testing |
| Claude Desktop | MCP Client |
| MCP Inspector | Tool Testing |
| VS Code | Development Environment |
---
## ๐ System Architecture
```text
Claude Desktop
โ
โ
(MCP Tool Calls)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ FastMCP Server โ
โ server.py โ
โโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
MCP Tools Logging
โ
โผ
Database Layer
db.py
โ
โผ
SQLite Database
(Users โข Products โข Orders)
```
---
## ๐ Project Structure
```text
mcp-python-server/
โ
โโโ client.py # Python MCP client
โโโ server.py # FastMCP server exposing database tools
โโโ db.py # Database access layer
โโโ seed.py # Creates and seeds the SQLite database
โโโ requirements.txt
โโโ pytest.ini
โโโ README.md
โ
โโโ tests/
โ โโโ test_db.py # Database tests
โ โโโ test_tools.py # MCP tool tests
โ
โโโ .gitignore
```
---
## ๐ Database Schema
The project uses a **SQLite** database consisting of three tables.
### Users
| Column | Type |
| ------ | ------- |
| id | INTEGER |
| name | TEXT |
| email | TEXT |
### Products
| Column | Type |
| -------- | ------- |
| id | INTEGER |
| name | TEXT |
| category | TEXT |
| price | REAL |
| stock | INTEGER |
### Orders
| Column | Type |
| ---------- | ------- |
| id | INTEGER |
| user_id | INTEGER |
| product_id | INTEGER |
| quantity | INTEGER |
| order_date | TEXT |
---
## ๐ง MCP Tools
### User Tools
| Tool | Description |
| ------------- | --------------------- |
| get_all_users | Retrieve all users |
| get_user | Retrieve a user by ID |
| search_user | Search users by name |
| add_user | Add a new user |
| remove_user | Delete a user |
---
### Product Tools
| Tool | Description |
| ---------------- | ------------------------ |
| get_all_products | Retrieve all products |
| get_product | Retrieve a product by ID |
| search_product | Search products |
---
### Order Tools
| Tool | Description |
| -------------- | ------------------- |
| get_all_orders | Retrieve all orders |
---
## ๐ Installation & Setup
Clone the repository
```bash
git clone https://github.com/<your-username>/mcp-python-server.git
cd mcp-python-server
```
Create a virtual environment
```bash
python -m venv venv
```
Activate the environment
```bash
venv\Scripts\activate
```
Install dependencies
```bash
pip install -r requirements.txt
```
Generate the SQLite database
```bash
python seed.py
```
---
## โถ Running the Project
### Start the MCP Server
```bash
mcp dev server.py
```
### Run the Python Client
```bash
python client.py
```
### Execute Tests
```bash
pytest
```
Expected Output
```text
===========================
10 passed
===========================
```
---
## ๐ธ Screenshots
### MCP Inspector

---
### Claude Desktop Integration

---
### Python Client

---
### Automated Testing

---
## ๐ค Claude Desktop Integration
The MCP server can be integrated with Claude Desktop using the MCP configuration file.
Once configured, Claude Desktop can directly invoke the available MCP tools.
Example prompts:
- Show all users.
- List all products.
- Search for Laptop.
- Show all orders.
- Create a new user.
---
## ๐งช Testing
Automated testing was implemented using **pytest**.
The test suite validates:
- Database operations
- CRUD functionality
- Search operations
- Invalid user handling
- Invalid product handling
- MCP tool responses
Current Status
โ
10 Tests Passed
---
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues