Skip to main content
Glama
shreyash1231

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)

---