---
slug: "mcp-server-client-impl"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/parasjain2426/mcp_server_client_impl@main/README.md"
repo: "https://github.com/parasjain2426/mcp_server_client_impl"
source_file: "README.md"
branch: "main"
---
# 🧠 Model Context Protocol (MCP) - Server-Client Implementation

This project is a simple **Model Context Protocol (MCP)** system that includes an **MCP Server** and a **MCP Client**, communicating via **Server-Sent Events (SSE)** using FastAPI. It demonstrates lightweight tool invocation using SSE over HTTP.

---

## 🏗️ Architecture Overview

```
+-------------+                SSE HTTP                 +-------------+
|             | <------------------------------------>  |             |
| MCP CLIENT  |                                         | MCP SERVER  |
| (FastAPI)   |  /upload_claim  ⇄  upload_claim         | (SSE Tools) |
| Port: 5000  |  /get_claim_details ⇄ get_claim_details | Port: 8000  |
+-------------+                                         +-------------+
```

---

## 📁 Project Structure

```
.
├── client/                     # MCP Client (FastAPI app)
│   └──main.py
│
├── server/                     # MCP Server with SSE tools
│   └──main.py
|
└── README.md
└── requirements.txt
```

---

## 🔧 MCP Server

- **Port**: `8000`
- **Framework**: FastAPI
- **Protocol**: Server-Sent Events (SSE)
- **Defined Tools**:
  - `upload_claim`
  - `get_claim_details`

### ▶️ Running the MCP Server

```bash
cd server
pip install -r requirements.txt
python main.py
```

---

## 🚀 MCP Client

- **Port**: `5000`
- **Framework**: FastAPI
- **Endpoints**:
  - `POST /upload_claim` → Calls `upload_claim` tool on the MCP Server
  - `GET /get_claim_details` → Calls `get_claim_details` tool on the MCP Server

### ▶️ Running the MCP Client

```bash
cd client
pip install -r requirements.txt
python main.py
```

---

## 🔄 Communication Flow

1. **Client** sends an SSE HTTP request to the MCP Server to invoke a tool.
2. **Server** processes the request and streams the response back via SSE.

---

## 📬 Sample Requests

### `POST /upload_claim`

```bash
curl -X POST http://localhost:5000/upload_claim \
  -H "Content-Type: application/json" \
  -d '{
        "emp_id": "12345",
        "claim": "This is a dummy claim!"
      }'
```

### `POST /get_claim_details`

```bash
curl -X POST http://localhost:5000/get_claim_details \
  -H "Content-Type: application/json" \
  -d '{
        "claim_id": "12345"
      }'
```

## 🧰 Requirements

> Python 3.10+

### requirements.txt`
```
"mcp[cli]"
fastapi
httpx
```

Install dependencies in each directory using:

```bash
pip install -r requirements.txt
```

---

## ⚠️ Notes

- This is a minimal prototype intended for **development or educational** use.
- Data is stored **in-memory** and will reset on server restart.
- SSE is used for simplicity and streaming compatibility.

---
