MCP Banking Server
by shreyash1231
README.md
# MCP Server - Python FastAPI
## Overview
This is a **MCP (Minimal Core Platform) Server** implemented in Python using **FastAPI**. It simulates a basic banking system with endpoints for account management, deposits, withdrawals, balance inquiries, and transaction history.
---
## Hosted URL
[https://mcp-server-m5d2.onrender.com](https://mcp-server-m5d2.onrender.com)
---
## Cloud Provider
**Render** - Publicly accessible deployment.
---
## Technology Stack
* Python 3.13
* FastAPI
* Uvicorn
* SQLAlchemy (SQLite/PostgreSQL compatible)
* Pydantic
* python-dotenv
---
## Endpoints
### 1. Create Account
**POST** `/account`
Creates a new bank account.
**Request Body Example:**
```json
{
"name": "John Doe",
"email": "john@example.com"
}
```
**Response Example:**
```json
{
"name": "alex roy",
"email": "example@gmail.com",
"created_at": "2025-12-27T17:43:36",
"balance": 0,
"id": "05997aae-a545-4157-9118-99fd2ec7b4c7"
}
```
---
### 2. Deposit
**POST** `/deposit/{account_id}`
Adds funds to an existing account.
**Request Body Example:**
```json
{
"amount": 500.0
}
```
**Response Example:**
```json
{
"account_id": "uuid",
"balance": 500.0
}
```
---
### 3. Withdraw
**POST** `/withdraw/{account_id}`
Removes funds from an existing account.
**Request Body Example:**
```json
{
"amount": 100.0
}
```
**Response Example:**
```json
{
"account_id": "uuid",
"balance": 400.0
}
```
---
### 4. Balance Inquiry
**GET** `/balance/{account_id}`
Retrieves the current balance of the account.
**Response Example:**
```json
{
"account_id": "uuid",
"balance": 400.0
}
```
---
### 5. Transaction History
**GET** `/transactions/{account_id}`
Returns recent transactions for the account.
**Response Example:**
```json
[
{
"transaction_id": "uuid",
"type": "deposit",
"amount": 500.0,
"timestamp": "2025-12-27T12:00:00"
},
{
"transaction_id": "uuid",
"type": "withdraw",
"amount": 100.0,
"timestamp": "2025-12-27T12:10:00"
}
]
```
---
## Database & ACID Properties
The MCP Server uses **SQLAlchemy** to interact with a relational database (SQLite by default). The database logic ensures the operations:
* **Isolation:** Simultaneous transactions on different accounts are isolated; concurrent operations do not interfere.
* **Durability:** Once a transaction is committed, it persists even if the server crashes.
---
## Running Locally
### Prerequisites
* Python 3.13
* pip
### Install Dependencies
```bash
pip install -r requirements.txt
```
### Start Server
```bash
uvicorn main:app --host 0.0.0.0 --port 8000
```
Visit `http://127.0.0.1:8000/docs` for **Swagger UI**.
---
## ArmorIQ Scanning
* Tested with **ArmorIQ Sentry VS Code extension** (`Sentry-MCP-Endpoint-Scan`, `Sentry-Scan-WorkSpace-For-MCP-Security-Issue`)
* Tested with **ArmorIQ Landing Page scanner**
* Endpoints are exposed publicly for the purpose of security scanning
---
## GitHub Repository
[https://github.com/shreyash1231/MCP-Server.git](https://github.com/shreyash1231/MCP-Server.git)
---
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues